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 Consulenza.ReportWriter.Business.Entity; using System.Linq; using Consulenza.ReportWriter.Business.CUSTOM_PDF.ConsulenzaUnica; namespace Consulenza.ReportWriter.Manager.Section.Unica { /// /// S44.RischioMercatoVSDiversificazione idSezione = 87 /// public class S44 : Entity.Section { private bool _visualizzaAltriIstituti; private bool _presenzaNotaPatrimonioCasa = false; private bool _presenzaNotaPatrimonioTerzi = false; private bool _presenzaNotaEccessivaAdeguatezza = false; private bool _visualizzaRischioMercatoVsDiversificazione = false; //Vecchia visualizzazione private bool _visualizzaRischioMercatoVsDivPortafoglio = false; private bool _visualizzaRischioMercatoVsDivRischioMercato = false; public S44(EnvironmentFacade environmentFacade, int idSection) : base(environmentFacade, idSection) { try { _visualizzaAltriIstituti = GetOption().Valore; _visualizzaRischioMercatoVsDivPortafoglio = GetOption().Valore; _visualizzaRischioMercatoVsDivRischioMercato = GetOption().Valore; //Adriano 20180502: dalle richieste non è specificato cosa succede se non viene scelta nessuna delle due schede, nel dubbio, forzo la visualizzazione della prima if (!_visualizzaRischioMercatoVsDivPortafoglio && !_visualizzaRischioMercatoVsDivRischioMercato) { _visualizzaRischioMercatoVsDivPortafoglio = true; _visualizzaRischioMercatoVsDivRischioMercato = true; } //--Adriano 20180502 Draw(); } catch (Exception ex) { SectionLogger.Write("S44", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment); } } protected override sealed void Draw() { var dati = GetDataSet(); var testi = GetText(); var nota = Helper.ReplaceVariables(GetNote1(), EnvironmentFacade.ReportEnvironment); var series = new List(); var series1 = new List(); var series2 = new List(); #region Rischio Mercato vs Diversificazione if (_visualizzaRischioMercatoVsDiversificazione) { #region Testo introduttivo var intestazione = new ChapterHeadingPDF( "Rischio mercato vs diversificazione", EnvironmentFacade.RendererFacade.XLeftLimit, EnvironmentFacade.RendererFacade.YUpperLimit, EnvironmentFacade.ReportEnvironment.FontFamily); // Aggiungo gli elementi AddElement(intestazione.ToElement()); //AddElement(new SpacePDF(20)); var sTesto = string.Empty; if (_visualizzaAltriIstituti) sTesto = testi.Rows[0]["testo1"].ToString(); else sTesto = testi.Rows[0]["testo2"].ToString(); var testoIntroduttivo = Helper.ReplaceVariables(sTesto, EnvironmentFacade.ReportEnvironment); AddElement(new FormattedTextAreaPDF(testoIntroduttivo, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); AddElement(new SpacePDF(20)); #endregion Testo introduttivo //Adriano 20180124: per centrare il grafico, che risulta troppo a dx AddElement(new FormattedTextAreaPDF("Rischio Mercato (VaR %)", EnvironmentFacade.RendererFacade.XLeftLimit + 90) { FontBold = true, FontSize = 7 }); //AddElement(new FormattedTextAreaPDF("Rischio Mercato (VaR %)", EnvironmentFacade.RendererFacade.XLeftLimit + 110) { FontBold = true, FontSize = 7 }); //--Adriano 20180124 AddElement(new SpacePDF(8)); #region Grafico VaR Diversificazione #region //modifiche nucleo contrattualizzato var labelPersonalizzateAsseY = new List(); foreach (DataRow rowX in dati.Tables["dtSoglieY"].Rows) { labelPersonalizzateAsseY.Add(new CombinationPDFCustomLabel { Text = rowX["Testo"].ToString(), Value = Convert.ToDouble(rowX["Valore"]) }); } //Adriano 20180124: per centrare il grafico, che risulta troppo a dx var graficoCombination = new CombinationPDF( EnvironmentFacade.ReportEnvironment.ReportId != 6 ? EnvironmentFacade.RendererFacade.XLeftLimit + 150 : EnvironmentFacade.RendererFacade.XLeftLimit + 90, 1F) //var graficoCombination = new CombinationPDF(EnvironmentFacade.RendererFacade.XLeftLimit + 150, 1F) //--Adriano 20180124 { Height = 200, Width = 350, BackImage = "ChartGradient_VarDiversificazione.png", MarginAxisY = 0, ShowLabelAxisY = true, LabelFormatAxisY = FormatType.Intero, IntervalNumberAxisY = labelPersonalizzateAsseY.Count, StartFromZeroAxisY = true, // IndicatorAxisY = new CombinationPDFIndicator() { Text = "Rischio Mercato (VaR) massimo", Value = Convert.ToDouble(dati.Tables[1].Rows[0]["VarMassimoProfilo"]), DeltaX = -120, DeltaYText = -10 }, //IndicatorAxisY = new CombinationPDFIndicator() { Text = "", Value = Convert.ToDouble(dati.Tables[1].Rows[0]["VarMassimoProfilo"]), DeltaX = -120, DeltaYText = -10 }, MaximumValueAxisY = Convert.ToDouble(dati.Tables[1].Rows[0]["VarMassimoProfilo"]) > 27 ? 53 : 30, // 30, // valore fisso CustomLabelAxisY = labelPersonalizzateAsseY, LabelFormatAxisX = FormatType.Intero, ShowLineAxisX = true, ShowLabelAxisX = true, StartFromZeroAxisX = true, MaximumValueAxisX = 100, IntervalNumberAxisX = 10 }; // Adriano 20180125: Se non si tratta di nucleo va tenuto l'indicatore sull'asse Y if (EnvironmentFacade.ReportEnvironment.ReportId != 6) { graficoCombination.IndicatorAxisY = new CombinationPDFIndicator() { Text = "Rischio Mercato (VaR) massimo", Value = Convert.ToDouble(dati.Tables[1].Rows[0]["VarMassimoProfilo"]), DeltaX = -120, DeltaYText = -10 }; } #endregion // creo le Serie var d = dati.Tables[0].AsEnumerable().OrderByDescending(o => o.Field("NumeroPatrimonio")).CopyToDataTable(); foreach (DataRow item in d.Rows) { if (item["Diversificazione"].ToString() != "n.c." && item["VaRString"].ToString() != "n.c.") { series.Add( new Serie { //il name è fatto così perchè se si stampano 43 e 44 che hanno stessi codicipatrimonio nei grafici, il nome viene registrato e va in errore perchè già presente.. Name = series.FirstOrDefault(o => o.Name.Equals(item["CodicePatrimonio"].ToString())) != null ? item["CodicePatrimonio"].ToString() + 1 : item["CodicePatrimonio"].ToString(), Type = Dundas.Charting.WebControl.SeriesChartType.Point, MarkerImage = string.Format("Pallino{0}c.png", item["NumeroPatrimonio"].ToString()), // MarkerSize = 50, Points = new List() { new Point { Values = new ValuesPointXY(Convert.ToDouble(item["Diversificazione"]), Convert.ToDouble(item["VaR"])), ShowLabelAxisY = false, ShowLabelAxisX = false, FontSizeLabelAxisX=7, FontSizeLabelAxisY=7, Visible = false } } } ); bool showMarker = false; if (item["Patrimonio"].ToString().ToLower().Contains("altri")) { if (_visualizzaAltriIstituti) { showMarker = true; } } else { showMarker = true; } if (showMarker) { graficoCombination.Markers.Add(new Marker() { Image = string.Format("Pallino{0}c.png", item["NumeroPatrimonio"].ToString()), Width = 15, Height = 15, Scale = 1, X = Convert.ToDouble(item["Diversificazione"]) > 100 ? 100 : (float)Convert.ToDouble(item["Diversificazione"]), Y = Convert.ToDouble(item["VaR"]) >= 30 ? 30 : (float)Convert.ToDouble(item["VaR"]) }); } } }; //if (series[0].Points.Count == 0 && graficoCombination.Markers.Count == 0) //{ //} // aggiungo le Serie al grafico graficoCombination.SeriesCollection = series; AddElement(graficoCombination); #endregion AddElement(new SpacePDF(17)); //Adriano 20180124: per spostare la label più a sx, per seguire lo spostamento del grafico //AddElement(new FormattedTextAreaPDF("Diversificazione (%)", EnvironmentFacade.RendererFacade.XLeftLimit + 293) { FontBold = true, FontSize = 7 }); AddElement(new FormattedTextAreaPDF("Diversificazione (%)", EnvironmentFacade.RendererFacade.XLeftLimit + 230) { FontBold = true, FontSize = 7 }); //--Adriano 20180124 AddElement(new SpacePDF(20)); #region Tabella var tabella = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables[0]) { Style = Style.ConsulenzaUnica, AlternateRow = false, ShowSeparationLines = true, RowHeight = 27, Footer = false, HeaderHeight = 30 }; //Adriano 20180125: per i nuclei non va messa la colonna Adeguatezza if (EnvironmentFacade.ReportEnvironment.ReportId == 6) { tabella.Columns.Add(new ColumnPDF("ImmaginePatrimonio", 25, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Immagine, "ImmaginePatrimonio", string.Empty) { DeltaYContent = 7, ScaleColumnTypeImage = 0.55F }); tabella.Columns.Add(new ColumnPDF("Patrimonio", 160, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Patrimonio", "Patrimonio") { HeaderFontSize = 7, PaddingRight = 4 }); tabella.Columns.Add(new ColumnPDF("Controvalore", 125, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvalore", "Controvalore attuale (€)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella.Columns.Add(new ColumnPDF("Var", 40, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "VaRString", "VaR (%)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella.Columns.Add(new ColumnPDF("Diversificazione", 100, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Diversificazione", "Diversificazione (%)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella.Columns.Add(new ColumnPDF("GradoCopertura", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "GradoCopertura", "Grado di
copertura (%)") { PaddingRight = 10, HeaderFontSize = 7 }); } else { tabella.Columns.Add(new ColumnPDF("ImmaginePatrimonio", 30, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Immagine, "ImmaginePatrimonio", string.Empty) { DeltaYContent = 7, ScaleColumnTypeImage = 0.55F }); tabella.Columns.Add(new ColumnPDF("Patrimonio", 110, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Patrimonio", "Patrimonio") { HeaderFontSize = 7, PaddingRight = 4 }); tabella.Columns.Add(new ColumnPDF("Controvalore", 115, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvalore", "Controvalore attuale (€)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella.Columns.Add(new ColumnPDF("Var", 40, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "VaRString", "VaR (%)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella.Columns.Add(new ColumnPDF("Diversificazione", 90, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Diversificazione", "Diversificazione (%)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella.Columns.Add(new ColumnPDF("GradoCopertura", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "GradoCopertura", "Grado di
copertura (%)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella.Columns.Add(new ColumnPDF("Adeguatezza", 65, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Testo, "AdeguatezzaString", "Adeguatezza") { HeaderFontSize = 7 }); } // cloning entire datasource (changing Grado di copertura(%) type from decimal to string, so its possible to put there "n.c." DataTable dtCloned = tabella.DataSource.Clone(); dtCloned.Columns[8].DataType = typeof(string); foreach (DataRow row in tabella.DataSource.Rows) { dtCloned.ImportRow(row); } tabella.DataSource = dtCloned; int i = 0; foreach (DataRow r in tabella.DataSource.Rows) { var colorAdeguatezza = Convert.ToBoolean(r["Adeguatezza"]) ? new ColorPDF(0, 176, 70) : new ColorPDF(255, 0, 0); tabella.Cells[6, i].FontColor = colorAdeguatezza; tabella.Cells[2, i].HorizontalAlignment = tabella.Cells[3, i].HorizontalAlignment = tabella.Cells[4, i].HorizontalAlignment = tabella.Cells[5, i].HorizontalAlignment = HorizontalAlignmentType.Destra; tabella.Cells[4, i].Value = Convert.ToDecimal(r["Diversificazione"].ToString()) == 0 ? "n.c." : Helper.FormatDecimal(r["Diversificazione"].ToString(), 2); if (r["Patrimonio"].ToString().ToLower().Contains("altri")) { tabella.Cells[5, i].Value = "n.c."; tabella.Cells[6, i].FontColor = colorAdeguatezza; //tabella.Cells[6, i].Value = "n.a."; } //r["Patrimonio"] = "aaa"; //if ((r["Patrimonio"].ToString().ToLower().Contains("patrimonio altri istituti") || // r["Patrimonio"].ToString().ToLower().Contains("patrimonio finanziario complessivo")) && // !r["Patrimonio"].ToString().ToLower().EndsWith("*")) //{ // r["Patrimonio"] += "*"; //} decimal result = 0; if (Decimal.TryParse(r["GradoCopertura"].ToString(), out result)) { if (result == 0) { tabella.Cells[5, i].Value = "n.c."; } else { tabella.Cells[5, i].Value = result.ToString("N"); } } else { tabella.Cells[5, i].Value = "n.c."; } i++; } if (nota.Length > 0) { nota = nota.Replace("(*)", ""); if (_presenzaNotaPatrimonioTerzi && _presenzaNotaPatrimonioCasa == false) tabella.Notes.Add(new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, nota, new[] { "Patrimonio" }, "CodicePatrimonio IN ('PT','PC')", TableNotePDF.TableNoteAsteriskPositionType.CorpoTabella) { FontSize = 6 }); else if (_presenzaNotaPatrimonioTerzi && _presenzaNotaPatrimonioCasa) tabella.Notes.Add(new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, nota, new[] { "Patrimonio" }, string.Empty, TableNotePDF.TableNoteAsteriskPositionType.CorpoTabella) { FontSize = 6 }); else if (_presenzaNotaPatrimonioTerzi == false && _presenzaNotaPatrimonioCasa) tabella.Notes.Add(new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, nota, new[] { "Patrimonio" }, "CodicePatrimonio IN ('BF','PC')", TableNotePDF.TableNoteAsteriskPositionType.CorpoTabella) { FontSize = 6 }); } AddElement(tabella); //AddElement(new SpacePDF(20)); //AddElement(new FormattedTextAreaPDF(nota, EnvironmentFacade.RendererFacade.XLeftLimit) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, FontSize = 7 }); #endregion if (datiSeiUnico.rischioUnit().rischio.rischioMercatoCredito.flagfiduciariaPluriMandato) { AddElement(new SpacePDF(10)); string codicemandato = datiSeiUnico.getClienteReport().codiceMandato; string testo = "La valutazione di adeguatezza del patrimonio $/Banca/$ in termini di «Rischio Mercato (VaR)» prende in considerazione il patrimonio detenuto presso $/Banca/$ da tutti i mandati fiduciari associati al medesimo fiduciante a cui appartiene il mandato <" + codicemandato + ">. Gli indicatori «Rischio Mercato (VaR)» e «Diversificazione» del patrimonio $/Banca/$, invece, sono calcolati considerando esclusivamente i prodotti detenuti dal mandato " + codicemandato + "."; AddElement(new FormattedTextAreaPDF(datiSeiUnico.FormatBanca(testo), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); } if (getNotaCopertura5RMRC().Length > 0) { AddElement(new SpacePDF(10)); AddElement(new FormattedTextAreaPDF(getNotaCopertura5RMRC(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); } //Nota di eccessiva adeguatezza if (_presenzaNotaEccessivaAdeguatezza) { AddElement(new SpacePDF(10)); var notaEccessivaAdeguatezza = Helper.ReplaceVariables(testi.Rows[0]["testo4"].ToString(), EnvironmentFacade.ReportEnvironment); AddElement(new FormattedTextAreaPDF(notaEccessivaAdeguatezza, EnvironmentFacade.RendererFacade.XLeftLimit, 520) { FontSize = 6 }); } //Adriano 20180124: per spostare la label più a sx, per seguire lo spostamento del grafico if (EnvironmentFacade.ReportEnvironment.ReportId != 6) { AddElement(new FormattedTextAreaPDF("Area di pericolo", EnvironmentFacade.RendererFacade.XLeftLimit + 155) { Y = 217, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); AddElement(new FormattedTextAreaPDF("Area di equilibrio", EnvironmentFacade.RendererFacade.XLeftLimit + 290) { Y = 305, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); AddElement(new FormattedTextAreaPDF("Area di sicurezza", EnvironmentFacade.RendererFacade.XLeftLimit + 425) { Y = 385, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); } else { AddElement(new FormattedTextAreaPDF("Area di pericolo", EnvironmentFacade.RendererFacade.XLeftLimit + 155 - 60) { Y = 217, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); AddElement(new FormattedTextAreaPDF("Area di equilibrio", EnvironmentFacade.RendererFacade.XLeftLimit + 290 - 60) { Y = 305, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); AddElement(new FormattedTextAreaPDF("Area di sicurezza", EnvironmentFacade.RendererFacade.XLeftLimit + 425 - 60) { Y = 385, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); } //AddElement(new FormattedTextAreaPDF("Area di pericolo", EnvironmentFacade.RendererFacade.XLeftLimit + 155) { Y = 217, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); //AddElement(new FormattedTextAreaPDF("Area di equilibrio", EnvironmentFacade.RendererFacade.XLeftLimit + 290) { Y = 305, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); //AddElement(new FormattedTextAreaPDF("Area di sicurezza", EnvironmentFacade.RendererFacade.XLeftLimit + 425) { Y = 385, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); } #endregion Rischio Mercato vs Diversificazione //Adriano 20180215 Modifica nuovi indicatori #region Rischio mercato vs Diversificazione di portafoglio if (_visualizzaRischioMercatoVsDivPortafoglio) { //AddElement(new PagePDF()); #region Testo introduttivo var intestazione1 = new ChapterHeadingPDF( "Rischio mercato vs Diversificazione del portafoglio", EnvironmentFacade.RendererFacade.XLeftLimit, EnvironmentFacade.RendererFacade.YUpperLimit, EnvironmentFacade.ReportEnvironment.FontFamily); // Aggiungo gli elementi AddElement(intestazione1.ToElement()); //AddElement(new SpacePDF(20)); var sTesto1 = string.Empty; if (_visualizzaAltriIstituti) sTesto1 = testi.Rows[0]["testo1"].ToString(); else sTesto1 = testi.Rows[0]["testo2"].ToString(); var testoIntroduttivo1 = Helper.ReplaceVariables(sTesto1, EnvironmentFacade.ReportEnvironment); AddElement(new FormattedTextAreaPDF(testoIntroduttivo1, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); AddElement(new SpacePDF(20)); #endregion #region Grafico VaR Diversificazione //Adriano 20180124: per centrare il grafico, che risulta troppo a dx AddElement(new FormattedTextAreaPDF("Rischio Mercato (VaR %)", EnvironmentFacade.RendererFacade.XLeftLimit + 90) { FontBold = true, FontSize = 7 }); //AddElement(new FormattedTextAreaPDF("Rischio Mercato (VaR %)", EnvironmentFacade.RendererFacade.XLeftLimit + 110) { FontBold = true, FontSize = 7 }); //--Adriano 20180124 AddElement(new SpacePDF(8)); #region modifiche nucleo contrattualizzato var labelPersonalizzateAsseY1 = new List(); foreach (DataRow rowX in dati.Tables["dtSoglieY"].Rows) { labelPersonalizzateAsseY1.Add(new CombinationPDFCustomLabel { Text = rowX["Testo"].ToString(), Value = Convert.ToDouble(rowX["Valore"]) }); } //Adriano 20180124: per centrare il grafico, che risulta troppo a dx nel caso dei nuclei, in mancanza dell'indicatore var graficoCombination1 = new CombinationPDF( EnvironmentFacade.ReportEnvironment.ReportId != 6 ? //EnvironmentFacade.RendererFacade.XLeftLimit + 150 : EnvironmentFacade.RendererFacade.XLeftLimit + 90, 1F) EnvironmentFacade.RendererFacade.XLeftLimit + 115 : EnvironmentFacade.RendererFacade.XLeftLimit + 90, 1F) //var graficoCombination = new CombinationPDF(EnvironmentFacade.RendererFacade.XLeftLimit + 150, 1F) //--Adriano 20180124 { Height = 200, Width = 350, BackImage = "ChartGradient_VarDiversificazione.png", MarginAxisY = 0, ShowLabelAxisY = true, LabelFormatAxisY = FormatType.Intero, IntervalNumberAxisY = labelPersonalizzateAsseY1.Count, StartFromZeroAxisY = true, //IndicatorAxisY = new CombinationPDFIndicator() { Text = "Rischio Mercato (VaR) massimo", Value = Convert.ToDouble(dati.Tables[1].Rows[0]["VarMassimoProfilo"]), DeltaX = -120, DeltaYText = -10 }, //IndicatorAxisY = new CombinationPDFIndicator() { Text = "", Value = Convert.ToDouble(dati.Tables[1].Rows[0]["VarMassimoProfilo"]), DeltaX = -120, DeltaYText = -10 }, MaximumValueAxisY = Convert.ToDouble(dati.Tables[1].Rows[0]["VarMassimoProfilo"]) > 27 ? 53 : 30, // 30, // valore fisso CustomLabelAxisY = labelPersonalizzateAsseY1, LabelFormatAxisX = FormatType.Intero, ShowLineAxisX = true, ShowLabelAxisX = true, StartFromZeroAxisX = true, MaximumValueAxisX = 100, IntervalNumberAxisX = 10 }; // Adriano 20180125: Se non si tratta di nucleo va tenuto l'indicatore sull'asse Y if (EnvironmentFacade.ReportEnvironment.ReportId != 6) { graficoCombination1.IndicatorAxisY = new CombinationPDFIndicator() { Text = "Rischio Mercato (VaR) massimo", Value = Convert.ToDouble(dati.Tables[1].Rows[0]["VarMassimoProfilo"]), DeltaX = -115, DeltaYText = -10 }; } #endregion // creo le Serie var d1 = dati.Tables[0].AsEnumerable().OrderByDescending(o => o.Field("NumeroPatrimonio")).CopyToDataTable(); foreach (DataRow item in d1.Rows) { if (item["DiversificazionePortafoglio"].ToString() != "n.c." && item["VaRString"].ToString() != "n.c.") { series1.Add( new Serie { //il name è fatto così perchè se si stampano 43 e 44 che hanno stessi codicipatrimonio nei grafici, il nome viene registrato e va in errore perchè già presente.. Name = series1.FirstOrDefault(o => o.Name.Equals(item["CodicePatrimonio"].ToString())) != null ? item["CodicePatrimonio"].ToString() + 1 : item["CodicePatrimonio"].ToString(), Type = Dundas.Charting.WebControl.SeriesChartType.Point, MarkerImage = string.Format("Pallino{0}c.png", item["NumeroPatrimonio"].ToString()), // MarkerSize = 50, Points = new List() { new Point { Values = new ValuesPointXY(Convert.ToDouble(item["DiversificazionePortafoglio"]), Convert.ToDouble(item["VaR"])), ShowLabelAxisY = false, ShowLabelAxisX = false, FontSizeLabelAxisX=7, FontSizeLabelAxisY=7, Visible = false } } } ); bool showMarker = false; if (item["Patrimonio"].ToString().ToLower().Contains("altri")) { if (_visualizzaAltriIstituti) { showMarker = true; } } else { showMarker = true; } if (showMarker) { graficoCombination1.Markers.Add(new Marker() { Image = string.Format("Pallino{0}c.png", item["NumeroPatrimonio"].ToString()), Width = 15, Height = 15, Scale = 1, X = Convert.ToDouble(item["DiversificazionePortafoglio"]) > 100 ? 100 : (float)Convert.ToDouble(item["DiversificazionePortafoglio"]), Y = Convert.ToDouble(item["VaR"]) >= 30 ? 30 : (float)Convert.ToDouble(item["VaR"]) }); } } }; //if (series[0].Points.Count == 0 && graficoCombination.Markers.Count == 0) //{ //} // aggiungo le Serie al grafico graficoCombination1.SeriesCollection = series1; AddElement(graficoCombination1); #endregion AddElement(new SpacePDF(17)); //Adriano 20180124: per spostare la label più a sx, per seguire lo spostamento del grafico //AddElement(new FormattedTextAreaPDF("Diversificazione (%)", EnvironmentFacade.RendererFacade.XLeftLimit + 293) { FontBold = true, FontSize = 7 }); AddElement(new FormattedTextAreaPDF("Diversificazione di portafoglio", EnvironmentFacade.RendererFacade.XLeftLimit + 230) { FontBold = true, FontSize = 7 }); //--Adriano 20180124 AddElement(new SpacePDF(20)); #region Tabella var tabella1 = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables[0]) { Style = Style.ConsulenzaUnica, AlternateRow = false, ShowSeparationLines = true, RowHeight = 27, Footer = false, HeaderHeight = 30 }; //Adriano 20180125: per i nuclei non va messa la colonna Adeguatezza if (EnvironmentFacade.ReportEnvironment.ReportId == 6) { tabella1.Columns.Add(new ColumnPDF("ImmaginePatrimonio", 25, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Immagine, "ImmaginePatrimonio", string.Empty) { DeltaYContent = 7, ScaleColumnTypeImage = 0.55F }); tabella1.Columns.Add(new ColumnPDF("Patrimonio", 160, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Patrimonio", "Patrimonio") { HeaderFontSize = 7, PaddingRight = 4 }); tabella1.Columns.Add(new ColumnPDF("Controvalore", 125, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvalore", "Controvalore attuale (€)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella1.Columns.Add(new ColumnPDF("Var", 40, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "VaRString", "VaR (%)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella1.Columns.Add(new ColumnPDF("Diversificazione", 100, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "DiversificazionePortafoglio", "Diversificazione
di portafoglio") { PaddingRight = 10, HeaderFontSize = 7 }); tabella1.Columns.Add(new ColumnPDF("GradoCopertura", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "GradoCopertura", "Grado di
copertura (%)") { PaddingRight = 10, HeaderFontSize = 7 }); } else { tabella1.Columns.Add(new ColumnPDF("ImmaginePatrimonio", 30, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Immagine, "ImmaginePatrimonio", string.Empty) { DeltaYContent = 7, ScaleColumnTypeImage = 0.55F }); tabella1.Columns.Add(new ColumnPDF("Patrimonio", 110, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Patrimonio", "Patrimonio") { HeaderFontSize = 7, PaddingRight = 4 }); tabella1.Columns.Add(new ColumnPDF("Controvalore", 115, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvalore", "Controvalore attuale (€)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella1.Columns.Add(new ColumnPDF("Var", 40, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "VaRString", "VaR (%)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella1.Columns.Add(new ColumnPDF("Diversificazione", 90, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "DiversificazionePortafoglio", "Diversificazione
di portafoglio") { PaddingRight = 10, HeaderFontSize = 7 }); tabella1.Columns.Add(new ColumnPDF("GradoCopertura", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "GradoCopertura", "Grado di
copertura (%)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella1.Columns.Add(new ColumnPDF("Adeguatezza", 65, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Testo, "AdeguatezzaString", "Adeguatezza") { HeaderFontSize = 7 }); } // cloning entire datasource (changing Grado di copertura(%) type from decimal to string, so its possible to put there "n.c." var dtCloned1 = tabella1.DataSource.Clone(); dtCloned1.Columns[8].DataType = typeof(string); foreach (DataRow row in tabella1.DataSource.Rows) { dtCloned1.ImportRow(row); } tabella1.DataSource = dtCloned1; var index1 = 0; foreach (DataRow r in tabella1.DataSource.Rows) { var colorAdeguatezza = Convert.ToBoolean(r["Adeguatezza"]) ? new ColorPDF(0, 176, 70) : new ColorPDF(255, 0, 0); tabella1.Cells[6, index1].FontColor = colorAdeguatezza; tabella1.Cells[2, index1].HorizontalAlignment = tabella1.Cells[3, index1].HorizontalAlignment = tabella1.Cells[4, index1].HorizontalAlignment = tabella1.Cells[5, index1].HorizontalAlignment = HorizontalAlignmentType.Destra; tabella1.Cells[4, index1].Value = Convert.ToDecimal(r["DiversificazionePortafoglio"].ToString()) == 0 ? "n.c." : Helper.FormatDecimal(r["DiversificazionePortafoglio"].ToString(), 2); if (r["Patrimonio"].ToString().ToLower().Contains("altri")) { tabella1.Cells[5, index1].Value = "n.c."; tabella1.Cells[6, index1].FontColor = colorAdeguatezza; //tabella.Cells[6, index1].Value = "n.a."; } //r["Patrimonio"] = "aaa"; //if ((r["Patrimonio"].ToString().ToLower().Contains("patrimonio altri istituti") || // r["Patrimonio"].ToString().ToLower().Contains("patrimonio finanziario complessivo")) && // !r["Patrimonio"].ToString().ToLower().EndsWith("*")) //{ // r["Patrimonio"] += "*"; //} decimal result = 0; if (Decimal.TryParse(r["GradoCopertura"].ToString(), out result)) { if (result == 0) { tabella1.Cells[5, index1].Value = "n.c."; } else { tabella1.Cells[5, index1].Value = result.ToString("N"); } } else { tabella1.Cells[5, index1].Value = "n.c."; } index1++; } if (nota.Length > 0) { nota = nota.Replace("(*)", ""); if (_presenzaNotaPatrimonioTerzi && _presenzaNotaPatrimonioCasa == false) tabella1.Notes.Add(new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, nota, new[] { "Patrimonio" }, "CodicePatrimonio IN ('PT','PC')", TableNotePDF.TableNoteAsteriskPositionType.CorpoTabella) { FontSize = 6 }); else if (_presenzaNotaPatrimonioTerzi && _presenzaNotaPatrimonioCasa) tabella1.Notes.Add(new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, nota, new[] { "Patrimonio" }, string.Empty, TableNotePDF.TableNoteAsteriskPositionType.CorpoTabella) { FontSize = 6 }); else if (_presenzaNotaPatrimonioTerzi == false && _presenzaNotaPatrimonioCasa) tabella1.Notes.Add(new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, nota, new[] { "Patrimonio" }, "CodicePatrimonio IN ('BF','PC')", TableNotePDF.TableNoteAsteriskPositionType.CorpoTabella) { FontSize = 6 }); } AddElement(tabella1); //AddElement(new SpacePDF(20)); //AddElement(new FormattedTextAreaPDF(nota, EnvironmentFacade.RendererFacade.XLeftLimit) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, FontSize = 7 }); #endregion if (datiSeiUnico.rischioUnit().rischio.rischioMercatoCredito.flagfiduciariaPluriMandato) { AddElement(new SpacePDF(10)); string codicemandato = datiSeiUnico.getClienteReport().codiceMandato; string testo = "La valutazione di adeguatezza del patrimonio $/Banca/$ in termini di «Rischio Mercato (VaR)» prende in considerazione il patrimonio detenuto presso $/Banca/$ da tutti i mandati fiduciari associati al medesimo fiduciante a cui appartiene il mandato <" + codicemandato + ">. Gli indicatori «Rischio Mercato (VaR)» e «Diversificazione» del patrimonio $/Banca/$, invece, sono calcolati considerando esclusivamente i prodotti detenuti dal mandato " + codicemandato + "."; AddElement(new FormattedTextAreaPDF(datiSeiUnico.FormatBanca(testo), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); } if (getNotaCopertura5RMRC().Length > 0) { AddElement(new SpacePDF(10)); AddElement(new FormattedTextAreaPDF(getNotaCopertura5RMRC(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); } //Nota di eccessiva adeguatezza if (_presenzaNotaEccessivaAdeguatezza) { AddElement(new SpacePDF(10)); var notaEccessivaAdeguatezza = Helper.ReplaceVariables(testi.Rows[0]["testo4"].ToString(), EnvironmentFacade.ReportEnvironment); AddElement(new FormattedTextAreaPDF(notaEccessivaAdeguatezza, EnvironmentFacade.RendererFacade.XLeftLimit, 520) { FontSize = 6 }); } //Adriano 20180124: per spostare la label più a sx, per seguire lo spostamento del grafico if (EnvironmentFacade.ReportEnvironment.ReportId != 6) { AddElement(new FormattedTextAreaPDF("Area di pericolo", EnvironmentFacade.RendererFacade.XLeftLimit + 155 - 35) { Y = 217, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); AddElement(new FormattedTextAreaPDF("Area di equilibrio", EnvironmentFacade.RendererFacade.XLeftLimit + 290 - 35) { Y = 305, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); AddElement(new FormattedTextAreaPDF("Area di sicurezza", EnvironmentFacade.RendererFacade.XLeftLimit + 425 - 35) { Y = 385, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); } else { AddElement(new FormattedTextAreaPDF("Area di pericolo", EnvironmentFacade.RendererFacade.XLeftLimit + 155 - 60) { Y = 217, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); AddElement(new FormattedTextAreaPDF("Area di equilibrio", EnvironmentFacade.RendererFacade.XLeftLimit + 290 - 60) { Y = 305, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); AddElement(new FormattedTextAreaPDF("Area di sicurezza", EnvironmentFacade.RendererFacade.XLeftLimit + 425 - 60) { Y = 385, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); } //AddElement(new FormattedTextAreaPDF("Area di pericolo", EnvironmentFacade.RendererFacade.XLeftLimit + 155) { Y = 217, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); //AddElement(new FormattedTextAreaPDF("Area di equilibrio", EnvironmentFacade.RendererFacade.XLeftLimit + 290) { Y = 305, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); //AddElement(new FormattedTextAreaPDF("Area di sicurezza", EnvironmentFacade.RendererFacade.XLeftLimit + 425) { Y = 385, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); //--Adriano 20180124 } #endregion Rischio mercato vs Diversificazione di portafoglio #region Rischio Mercato vs Diversificazione Rischio Mercato if (_visualizzaRischioMercatoVsDivRischioMercato) { //Se è stata visualizzata la sezione precedente "Portafoglio" va aggiunta una nuova pagina if (_visualizzaRischioMercatoVsDivPortafoglio) AddElement(new PagePDF()); #region Testo introduttivo AddElement(new SpacePDF(12)); var intestazione2 = new ChapterHeadingPDF( "Rischio mercato vs Diversificazione del rischio mercato", EnvironmentFacade.RendererFacade.XLeftLimit, EnvironmentFacade.RendererFacade.YUpperLimit, EnvironmentFacade.ReportEnvironment.FontFamily); // Aggiungo gli elementi AddElement(intestazione2.ToElement()); var sTesto2 = string.Empty; if (_visualizzaAltriIstituti) sTesto2 = testi.Rows[0]["testo1"].ToString(); else sTesto2 = testi.Rows[0]["testo2"].ToString(); var testoIntroduttivo2 = Helper.ReplaceVariables(sTesto2, EnvironmentFacade.ReportEnvironment); AddElement(new FormattedTextAreaPDF(testoIntroduttivo2, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); AddElement(new SpacePDF(20)); #endregion #region Grafico VaR Diversificazione //Adriano 20180124: per centrare il grafico, che risulta troppo a dx AddElement(new FormattedTextAreaPDF("Rischio Mercato (VaR %)", EnvironmentFacade.RendererFacade.XLeftLimit + 90) { FontBold = true, FontSize = 7 }); //AddElement(new FormattedTextAreaPDF("Rischio Mercato (VaR %)", EnvironmentFacade.RendererFacade.XLeftLimit + 110) { FontBold = true, FontSize = 7 }); //--Adriano 20180124 AddElement(new SpacePDF(8)); #region //modifiche nucleo contrattualizzato var labelPersonalizzateAsseY2 = new List(); foreach (DataRow rowX in dati.Tables["dtSoglieY"].Rows) { labelPersonalizzateAsseY2.Add(new CombinationPDFCustomLabel { Text = rowX["Testo"].ToString(), Value = Convert.ToDouble(rowX["Valore"]) }); } //Adriano 20180124: per centrare il grafico, che risulta troppo a dx var graficoCombination2 = new CombinationPDF( EnvironmentFacade.ReportEnvironment.ReportId != 6 ? //EnvironmentFacade.RendererFacade.XLeftLimit + 150 : EnvironmentFacade.RendererFacade.XLeftLimit + 90, 1F) EnvironmentFacade.RendererFacade.XLeftLimit + 115 : EnvironmentFacade.RendererFacade.XLeftLimit + 90, 1F) //var graficoCombination = new CombinationPDF(EnvironmentFacade.RendererFacade.XLeftLimit + 150, 1F) //--Adriano 20180124 { Height = 200, Width = 350, BackImage = "ChartGradient_VarDiversificazione.png", MarginAxisY = 0, ShowLabelAxisY = true, LabelFormatAxisY = FormatType.Intero, IntervalNumberAxisY = labelPersonalizzateAsseY2.Count, StartFromZeroAxisY = true, //IndicatorAxisY = new CombinationPDFIndicator() { Text = "Rischio Mercato (VaR) massimo", Value = Convert.ToDouble(dati.Tables[1].Rows[0]["VarMassimoProfilo"]), DeltaX = -120, DeltaYText = -10 }, //IndicatorAxisY = new CombinationPDFIndicator() { Text = "", Value = Convert.ToDouble(dati.Tables[1].Rows[0]["VarMassimoProfilo"]), DeltaX = -120, DeltaYText = -10 }, MaximumValueAxisY = Convert.ToDouble(dati.Tables[1].Rows[0]["VarMassimoProfilo"]) > 27 ? 53 : 30, // 30, // valore fisso CustomLabelAxisY = labelPersonalizzateAsseY2, LabelFormatAxisX = FormatType.Intero, ShowLineAxisX = true, ShowLabelAxisX = true, StartFromZeroAxisX = true, MaximumValueAxisX = 100, IntervalNumberAxisX = 10 }; // Adriano 20180125: Se non si tratta di nucleo va tenuto l'indicatore sull'asse Y if (EnvironmentFacade.ReportEnvironment.ReportId != 6) { graficoCombination2.IndicatorAxisY = new CombinationPDFIndicator() { Text = "Rischio Mercato (VaR) massimo", Value = Convert.ToDouble(dati.Tables[1].Rows[0]["VarMassimoProfilo"]), DeltaX = -115, DeltaYText = -10 }; } #endregion // creo le Serie var d2 = dati.Tables[0].AsEnumerable().OrderByDescending(o => o.Field("NumeroPatrimonio")).CopyToDataTable(); foreach (DataRow item in d2.Rows) { if (item["DiversificazioneRischioMercato"].ToString() != "n.c." && item["VaRString"].ToString() != "n.c.") { series2.Add( new Serie { //il name è fatto così perchè se si stampano 43 e 44 che hanno stessi codicipatrimonio nei grafici, il nome viene registrato e va in errore perchè già presente.. Name = series2.FirstOrDefault(o => o.Name.Equals(item["CodicePatrimonio"].ToString())) != null ? item["CodicePatrimonio"].ToString() + 1 : item["CodicePatrimonio"].ToString(), Type = Dundas.Charting.WebControl.SeriesChartType.Point, MarkerImage = string.Format("Pallino{0}c.png", item["NumeroPatrimonio"].ToString()), // MarkerSize = 50, Points = new List() { new Point { Values = new ValuesPointXY(Convert.ToDouble(item["DiversificazioneRischioMercato"]), Convert.ToDouble(item["VaR"])), ShowLabelAxisY = false, ShowLabelAxisX = false, FontSizeLabelAxisX=7, FontSizeLabelAxisY=7, Visible = false } } } ); bool showMarker = false; if (item["Patrimonio"].ToString().ToLower().Contains("altri")) { if (_visualizzaAltriIstituti) { showMarker = true; } } else { showMarker = true; } if (showMarker) { graficoCombination2.Markers.Add(new Marker() { Image = string.Format("Pallino{0}c.png", item["NumeroPatrimonio"].ToString()), Width = 15, Height = 15, Scale = 1, X = Convert.ToDouble(item["DiversificazioneRischioMercato"]) > 100 ? 100 : (float)Convert.ToDouble(item["DiversificazioneRischioMercato"]), Y = Convert.ToDouble(item["VaR"]) >= 30 ? 30 : (float)Convert.ToDouble(item["VaR"]) }); } } }; //if (series2[0].Points.Count == 0 && graficoCombination2.Markers.Count == 0) //{ //} // aggiungo le Serie al grafico graficoCombination2.SeriesCollection = series2; AddElement(graficoCombination2); #endregion AddElement(new SpacePDF(17)); //Adriano 20180124: per spostare la label più a sx, per seguire lo spostamento del grafico //AddElement(new FormattedTextAreaPDF("Diversificazione (%)", EnvironmentFacade.RendererFacade.XLeftLimit + 293) { FontBold = true, FontSize = 7 }); AddElement(new FormattedTextAreaPDF("Diversificazione del rischio mercato", EnvironmentFacade.RendererFacade.XLeftLimit + 230) { FontBold = true, FontSize = 7 }); //--Adriano 20180124 AddElement(new SpacePDF(20)); #region Tabella var tabella2 = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables[0]) { Style = Style.ConsulenzaUnica, AlternateRow = false, ShowSeparationLines = true, RowHeight = 27, Footer = false, HeaderHeight = 30 }; //Adriano 20180125: per i nuclei non va messa la colonna Adeguatezza if (EnvironmentFacade.ReportEnvironment.ReportId == 6) { tabella2.Columns.Add(new ColumnPDF("ImmaginePatrimonio", 25, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Immagine, "ImmaginePatrimonio", string.Empty) { DeltaYContent = 7, ScaleColumnTypeImage = 0.55F }); tabella2.Columns.Add(new ColumnPDF("Patrimonio", 160, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Patrimonio", "Patrimonio") { HeaderFontSize = 7, PaddingRight = 4 }); tabella2.Columns.Add(new ColumnPDF("Controvalore", 125, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvalore", "Controvalore attuale (€)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella2.Columns.Add(new ColumnPDF("Var", 40, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "VaRString", "VaR (%)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella2.Columns.Add(new ColumnPDF("Diversificazione", 100, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "DiversificazioneRischioMercato", "Diversificazione
di rischio mercato") { PaddingRight = 10, HeaderFontSize = 7 }); tabella2.Columns.Add(new ColumnPDF("GradoCopertura", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "GradoCopertura", "Grado di
copertura (%)") { PaddingRight = 10, HeaderFontSize = 7 }); } else { tabella2.Columns.Add(new ColumnPDF("ImmaginePatrimonio", 30, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Immagine, "ImmaginePatrimonio", string.Empty) { DeltaYContent = 7, ScaleColumnTypeImage = 0.55F }); tabella2.Columns.Add(new ColumnPDF("Patrimonio", 110, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Patrimonio", "Patrimonio") { HeaderFontSize = 7, PaddingRight = 4 }); tabella2.Columns.Add(new ColumnPDF("Controvalore", 115, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvalore", "Controvalore attuale (€)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella2.Columns.Add(new ColumnPDF("Var", 40, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "VaRString", "VaR (%)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella2.Columns.Add(new ColumnPDF("Diversificazione", 90, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "DiversificazioneRischioMercato", "Diversificazione
di rischio mercato") { PaddingRight = 10, HeaderFontSize = 7 }); tabella2.Columns.Add(new ColumnPDF("GradoCopertura", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "GradoCopertura", "Grado di
copertura (%)") { PaddingRight = 10, HeaderFontSize = 7 }); tabella2.Columns.Add(new ColumnPDF("Adeguatezza", 65, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Testo, "AdeguatezzaString", "Adeguatezza") { HeaderFontSize = 7 }); } // cloning entire datasource (changing Grado di copertura(%) type from decimal to string, so its possible to put there "n.c." DataTable dtCloned2 = tabella2.DataSource.Clone(); dtCloned2.Columns[8].DataType = typeof(string); foreach (DataRow row in tabella2.DataSource.Rows) { dtCloned2.ImportRow(row); } tabella2.DataSource = dtCloned2; var index2 = 0; foreach (DataRow r in tabella2.DataSource.Rows) { var colorAdeguatezza = Convert.ToBoolean(r["Adeguatezza"]) ? new ColorPDF(0, 176, 70) : new ColorPDF(255, 0, 0); tabella2.Cells[6, index2].FontColor = colorAdeguatezza; tabella2.Cells[2, index2].HorizontalAlignment = tabella2.Cells[3, index2].HorizontalAlignment = tabella2.Cells[4, index2].HorizontalAlignment = tabella2.Cells[5, index2].HorizontalAlignment = HorizontalAlignmentType.Destra; tabella2.Cells[4, index2].Value = Convert.ToDecimal(r["DiversificazioneRischioMercato"].ToString()) == 0 ? "n.c." : Helper.FormatDecimal(r["DiversificazioneRischioMercato"].ToString(), 2); if (r["Patrimonio"].ToString().ToLower().Contains("altri")) { tabella2.Cells[5, index2].Value = "n.c."; tabella2.Cells[6, index2].FontColor = colorAdeguatezza; //tabella2.Cells[6, index2].Value = "n.a."; } //r["Patrimonio"] = "aaa"; //if ((r["Patrimonio"].ToString().ToLower().Contains("patrimonio altri istituti") || // r["Patrimonio"].ToString().ToLower().Contains("patrimonio finanziario complessivo")) && // !r["Patrimonio"].ToString().ToLower().EndsWith("*")) //{ // r["Patrimonio"] += "*"; //} decimal result = 0; if (Decimal.TryParse(r["GradoCopertura"].ToString(), out result)) { if (result == 0) { tabella2.Cells[5, index2].Value = "n.c."; } else { tabella2.Cells[5, index2].Value = result.ToString("N"); } } else { tabella2.Cells[5, index2].Value = "n.c."; } index2++; } if (nota.Length > 0) { nota = nota.Replace("(*)", ""); if (_presenzaNotaPatrimonioTerzi && _presenzaNotaPatrimonioCasa == false) tabella2.Notes.Add(new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, nota, new[] { "Patrimonio" }, "CodicePatrimonio IN ('PT','PC')", TableNotePDF.TableNoteAsteriskPositionType.CorpoTabella) { FontSize = 6 }); else if (_presenzaNotaPatrimonioTerzi && _presenzaNotaPatrimonioCasa) tabella2.Notes.Add(new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, nota, new[] { "Patrimonio" }, string.Empty, TableNotePDF.TableNoteAsteriskPositionType.CorpoTabella) { FontSize = 6 }); else if (_presenzaNotaPatrimonioTerzi == false && _presenzaNotaPatrimonioCasa) tabella2.Notes.Add(new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, nota, new[] { "Patrimonio" }, "CodicePatrimonio IN ('BF','PC')", TableNotePDF.TableNoteAsteriskPositionType.CorpoTabella) { FontSize = 6 }); } AddElement(tabella2); //AddElement(new SpacePDF(20)); //AddElement(new FormattedTextAreaPDF(nota, EnvironmentFacade.RendererFacade.XLeftLimit) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, FontSize = 7 }); #endregion if (datiSeiUnico.rischioUnit().rischio.rischioMercatoCredito.flagfiduciariaPluriMandato) { AddElement(new SpacePDF(10)); string codicemandato = datiSeiUnico.getClienteReport().codiceMandato; string testo = "La valutazione di adeguatezza del patrimonio $/Banca/$ in termini di «Rischio Mercato (VaR)» prende in considerazione il patrimonio detenuto presso $/Banca/$ da tutti i mandati fiduciari associati al medesimo fiduciante a cui appartiene il mandato <" + codicemandato + ">. Gli indicatori «Rischio Mercato (VaR)» e «Diversificazione» del patrimonio $/Banca/$, invece, sono calcolati considerando esclusivamente i prodotti detenuti dal mandato " + codicemandato + "."; AddElement(new FormattedTextAreaPDF(datiSeiUnico.FormatBanca(testo), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); } if (getNotaCopertura5RMRC().Length > 0) { AddElement(new SpacePDF(10)); AddElement(new FormattedTextAreaPDF(getNotaCopertura5RMRC(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); } //Nota di eccessiva adeguatezza if (_presenzaNotaEccessivaAdeguatezza) { AddElement(new SpacePDF(10)); var notaEccessivaAdeguatezza = Helper.ReplaceVariables(testi.Rows[0]["testo4"].ToString(), EnvironmentFacade.ReportEnvironment); AddElement(new FormattedTextAreaPDF(notaEccessivaAdeguatezza, EnvironmentFacade.RendererFacade.XLeftLimit, 520) { FontSize = 6 }); } //Adriano 20180124: per spostare la label più a sx, per seguire lo spostamento del grafico if (EnvironmentFacade.ReportEnvironment.ReportId != 6) { AddElement(new FormattedTextAreaPDF("Area di pericolo", EnvironmentFacade.RendererFacade.XLeftLimit + 155 - 35) { Y = 217, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); AddElement(new FormattedTextAreaPDF("Area di equilibrio", EnvironmentFacade.RendererFacade.XLeftLimit + 290 - 35) { Y = 305, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); AddElement(new FormattedTextAreaPDF("Area di sicurezza", EnvironmentFacade.RendererFacade.XLeftLimit + 425 - 35) { Y = 385, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); } else { AddElement(new FormattedTextAreaPDF("Area di pericolo", EnvironmentFacade.RendererFacade.XLeftLimit + 155 - 60) { Y = 217, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); AddElement(new FormattedTextAreaPDF("Area di equilibrio", EnvironmentFacade.RendererFacade.XLeftLimit + 290 - 60) { Y = 305, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); AddElement(new FormattedTextAreaPDF("Area di sicurezza", EnvironmentFacade.RendererFacade.XLeftLimit + 425 - 60) { Y = 385, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); } //AddElement(new FormattedTextAreaPDF("Area di pericolo", EnvironmentFacade.RendererFacade.XLeftLimit + 155) { Y = 217, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); //AddElement(new FormattedTextAreaPDF("Area di equilibrio", EnvironmentFacade.RendererFacade.XLeftLimit + 290) { Y = 305, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); //AddElement(new FormattedTextAreaPDF("Area di sicurezza", EnvironmentFacade.RendererFacade.XLeftLimit + 425) { Y = 385, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true }); } #endregion Rischio Mercato vs Diversificazione Rischio Mercato } /// /// Recupera i dati necessari alla Section restituendo un DataTable. /// /// protected sealed override DataTable GetDataTable() { return null; } /// /// Recupera i dati necessari alla Section restituendo un DataSet. /// /// protected sealed override DataSet GetDataSet() { var ds = new DataSet(); var rischio = datiSeiUnico.rischioUnit().rischio.rischioMercatoCredito; var profilo = rischio.profileId; //Adriano #region Cliente/Nucleo professionale bool profiloProfessionale; bool profiloAggressivo; bool profiloProfessionaleAggressivo; Profiler profiler; //Adriano 20180125 Per eliminare la gestione profilazione per i nuclei (non più gestita nel WS) decimal varMassimoProfiloCliente; if (EnvironmentFacade.ReportEnvironment.ReportId == 6) { profilo = 5; DataServices.fideuram.data.service.rsAnagraficaNucleo nucleo = datiSeiUnico.nucleiUnit().anagrafica; varMassimoProfiloCliente = rischio.soglieMassime.FirstOrDefault(o => o.key == profilo).value.varMax; profiler = new Profiler(nucleo); } else { profilo = rischio.profileId; varMassimoProfiloCliente = rischio.soglieMassime.FirstOrDefault(o => o.key == profilo).value.varMax; DataServices.fideuram.data.service.rsClienteAnagrafica cliente = datiSeiUnico.clienteUnit().anagrafica; profiler = new Profiler(cliente); } //var profilo = rischio.profileId; profiloProfessionale = profiler.ProfiloProfessionale; profiloAggressivo = profiler.ProfiloAggressivo; profiloProfessionaleAggressivo = profiler.ProfiloProfessionaleAggressivo; #endregion //--Adriano varMassimoProfiloCliente = rischio.soglieMassime.FirstOrDefault(o => o.key == profilo).value.varMax; // Verificare il valore passato dal WS, che potrebbe essere già corretto if (profiloProfessionaleAggressivo) varMassimoProfiloCliente = 50; //var varMassimoProfiloCliente = rischio.soglieMassime.FirstOrDefault(o => o.key == profilo).value.varMax; //Adriano 20180125 var totCasa = datiSeiUnico.rischioUnit().rischio.rischioCreditoConcetrazione.totaliFideuram; var totTerzi = datiSeiUnico.rischioUnit().rischio.rischioCreditoConcetrazione.totaliAltriIstituti; var totalePatrimonioCasa = totCasa.risorseFinanziarie + totCasa.partiteViaggianti; var totalePatrimonioTerzi = totTerzi.risorseFinanziarie; var totalePatrimonioFinanziario = totCasa.risorseFinanziarie + totCasa.partiteViaggianti + totTerzi.risorseFinanziarie; var rischioFideuram = rischio.bancaFideuram; var rischioAltriIstituti = rischio.altriIstituti; var rischioComplessivo = rischio.totale; _presenzaNotaEccessivaAdeguatezza = rischio.eccessivamenteAdeguato; #region Rischio var dtRischio = new DataTable(); dtRischio.Columns.Add(new DataColumn("Patrimonio", typeof(string))); dtRischio.Columns.Add(new DataColumn("NumeroPatrimonio", typeof(Int32))); dtRischio.Columns.Add(new DataColumn("CodicePatrimonio", typeof(string))); dtRischio.Columns.Add(new DataColumn("ImmaginePatrimonio", typeof(string))); dtRischio.Columns.Add(new DataColumn("Controvalore", typeof(decimal))); dtRischio.Columns.Add(new DataColumn("VaR", typeof(decimal))); dtRischio.Columns.Add(new DataColumn("VaRString", typeof(string))); // Adriano 20180215 dtRischio.Columns.Add(new DataColumn("Diversificazione", typeof(string))); dtRischio.Columns.Add(new DataColumn("DiversificazionePortafoglio", typeof(string))); dtRischio.Columns.Add(new DataColumn("DiversificazioneRischioMercato", typeof(string))); //--Adriano 20180215 dtRischio.Columns.Add(new DataColumn("GradoCopertura", typeof(string))); dtRischio.Columns.Add(new DataColumn("Adeguatezza", typeof(bool))); dtRischio.Columns.Add(new DataColumn("AdeguatezzaString", typeof(string))); #region Casa if (totalePatrimonioCasa == 0) dtRischio.Rows.Add( string.Format("Patrimonio {0}", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment)), //Patrimonio 1, //NumeroPatrimonio "BF", //CodicePatrimonio "Pallino1.png", //ImmaginePatrimonio totalePatrimonioCasa, //Controvalore rischioFideuram.misure.varp, //VaR rischioFideuram.varDecodificato, //VaRString // Adriano 20180215 //Diversificazione //Math.Round(rischioFideuram.stat.diversificazione, 2), 0, //Diversificazione di Portafoglio 0, //Diversificazione del rischio Mercato 0, //--Adriano 20180215 Math.Round(rischioFideuram.stat.copertura, 2), //GradoCopertura rischio.patFideuramAdeguato, rischio.patFideuramAdeguato ? "Adeguato" : "Non adeguato" //AdeguatezzaString ); //Adeguatezza else dtRischio.Rows.Add( string.Format("Patrimonio {0}", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment)), //Patrimonio 1, //NumeroPatrimonio "BF", //CodicePatrimonio "Pallino1.png", //ImmaginePatrimonio totalePatrimonioCasa, //Controvalore rischioFideuram.misure.varp, //VaR rischioFideuram.varDecodificato, //VaRString // Adriano 20180215 //Diversificazione //Math.Round(rischioFideuram.stat.diversificazione, 2), 0, //Diversificazione di Portafoglio rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("BENEFICIO")).value, //Diversificazione del rischio Mercato rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOMERCATO")).value, //--Adriano 20180215 Math.Round(rischioFideuram.stat.copertura, 2), //GradoCopertura rischio.patFideuramAdeguato, rischio.patFideuramAdeguato ? "Adeguato" : "Non adeguato" //AdeguatezzaString ); //Adeguatezza #endregion if (_visualizzaAltriIstituti && totalePatrimonioTerzi > 0) { #region Terzi dtRischio.Rows.Add( "Patrimonio altri Istituti", //Patrimonio 2, //NumeroPatrimonio "PT", //CodicePatrimonio "Pallino2.png", //ImmaginePatrimonio totalePatrimonioTerzi, //Controvalore rischioAltriIstituti.misure.varp, //VaR rischioAltriIstituti.varDecodificato, //VaRString // Adriano 20180215 //Diversificazione //Math.Round(rischioAltriIstituti.stat.diversificazione, 2), 0, //Diversificazione di Portafoglio rischio.diversicazioneTerzi.beneficio.Count() > 0 ? rischio.diversicazioneTerzi.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("BENEFICIO")).value : 0, //Diversificazione del Rischio Mercato rischio.diversicazioneTerzi.beneficio.Count() > 0 ? rischio.diversicazioneTerzi.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOMERCATO")).value : 0, //--Adriano 20180215 Math.Round(rischioAltriIstituti.stat.copertura, 2), //GradoCopertura rischio.patAltriIstitutiAdeguato, //Adeguatezza rischio.patAltriIstitutiAdeguato ? "Adeguato" : "Non adeguato" //AdeguatezzaString ); #endregion #region Complessivo dtRischio.Rows.Add( "Patrimonio finanziario complessivo", //Patrimonio 3, //NumeroPatrimonio "PC", //CodicePatrimonio "Pallino3.png", //ImmaginePatrimonio totalePatrimonioFinanziario, //Controvalore rischioComplessivo.misure.varp, //VaR rischioComplessivo.varDecodificato, //VaR // Adriano 20180215 //Diversificazione //Math.Round(rischioComplessivo.stat.diversificazione, 2), 0, //Diversificazione di Portafoglio rischio.diversicazioneComplessivo.beneficio.Count() > 0 ? rischio.diversicazioneComplessivo.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("BENEFICIO")).value : 0, //Diversificazione del Rischio Mercato rischio.diversicazioneComplessivo.beneficio.Count() > 0 ? rischio.diversicazioneComplessivo.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOMERCATO")).value : 0, //--Adriano 20180215 Math.Round(rischioComplessivo.stat.copertura, 2), //GradoCopertura rischio.patCompletoAdeguato, rischio.patCompletoAdeguato ? "Adeguato" : "Non adeguato" //AdeguatezzaString ); //Adeguatezza #endregion } ds.Tables.Add(dtRischio); #endregion #region Cliente var dtCliente = new DataTable(); dtCliente.Columns.Add(new DataColumn("VarMassimoProfilo", typeof(decimal))); dtCliente.Rows.Add(varMassimoProfiloCliente); ds.Tables.Add(dtCliente); #endregion #region Soglie Asse Y ds.Tables.Add(new DataTable("dtSoglieY")); //Adriano if (profiloProfessionaleAggressivo) { ds.Tables["dtSoglieY"].Columns.Add(new DataColumn("Valore", typeof(decimal))); ds.Tables["dtSoglieY"].Columns.Add(new DataColumn("Testo", typeof(string))); ds.Tables["dtSoglieY"].Rows.Add(5, "5,00"); ds.Tables["dtSoglieY"].Rows.Add(10, "10,00"); ds.Tables["dtSoglieY"].Rows.Add(15, "15,00"); ds.Tables["dtSoglieY"].Rows.Add(20, "20,00"); ds.Tables["dtSoglieY"].Rows.Add(25, "25,00"); ds.Tables["dtSoglieY"].Rows.Add(30, "30,00"); ds.Tables["dtSoglieY"].Rows.Add(35, "35,00"); ds.Tables["dtSoglieY"].Rows.Add(40, "40,00"); ds.Tables["dtSoglieY"].Rows.Add(45, "45,00"); ds.Tables["dtSoglieY"].Rows.Add(50, "50,00"); } else { ds.Tables["dtSoglieY"].Columns.Add(new DataColumn("Valore", typeof(decimal))); ds.Tables["dtSoglieY"].Columns.Add(new DataColumn("Testo", typeof(string))); ds.Tables["dtSoglieY"].Rows.Add(2, "2,00"); ds.Tables["dtSoglieY"].Rows.Add(4.5, "4,50"); ds.Tables["dtSoglieY"].Rows.Add(9.5, "9,50"); ds.Tables["dtSoglieY"].Rows.Add(15, "15,00"); ds.Tables["dtSoglieY"].Rows.Add(27, "27,00"); } #endregion return ds; } /// /// Recupera la nota dinamica /// /// /// public virtual string GetNote1() { string nota = ""; string token = ""; var pianificazioneVerticale = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale; decimal CCN_CASA = pianificazioneVerticale.contoCorrenteNegativo; //cc negativi del patrimonio casa decimal CCN_TERZI = datiSeiUnico.patrimonioUnit().patrimonioTerzi.patrimonioTerziBean.contoCorrentiNegativi; _presenzaNotaPatrimonioTerzi = CCN_TERZI != 0 && _visualizzaAltriIstituti; // 20181009 AC decimal TUOFOGLIO_CASA = pianificazioneVerticale.liqFogliNeg; // liquidità sottostante Il Mio Foglio del patrimonio casa //--20181009 AC decimal GPELIGOFONDI_CASA = pianificazioneVerticale.liqEligoFondiNeg; // liquidità sottostante la GP Eligo Fondi del patrimonio casa decimal GPELIGTITOLI_CASA = pianificazioneVerticale.liqEligoTitoliNeg; //liquidità sottostante la GP Eligo Titoli del patrimonio casa // 20181009 AC //_presenzaNotaPatrimonioCasa = CCN_CASA != 0 || GPELIGOFONDI_CASA != 0 || GPELIGTITOLI_CASA != 0; _presenzaNotaPatrimonioCasa = CCN_CASA != 0 || GPELIGOFONDI_CASA != 0 || GPELIGTITOLI_CASA != 0 || TUOFOGLIO_CASA != 0; //--20181009 AC decimal GC = 100; decimal OC_CASA = 0;//patrimonioCasa.totaliPatrimonio.partiteViaggianti; //Operazioni in corso del patrimonio casa decimal CC_CASA = 0;// patrimonioCasa.totaliPatrimonio.contoCorrentePositivo; //cc positivo del patrimonio casa decimal CC_TERZI = 0;// patrimonioTerzi.totaliPatrimonio.contoCorrentePositivo; //cc positivo del patrimonio terzi decimal PNR_CASA = 0; //Patrimonio non rappresentabile per macroassetclass del patrimonio casa decimal PNR_TERZI = 0; // 20181009 AC //if (CCN_CASA != 0 || GPELIGOFONDI_CASA != 0 || GPELIGTITOLI_CASA != 0 || CCN_TERZI != 0) if (CCN_CASA != 0 || GPELIGOFONDI_CASA != 0 || GPELIGTITOLI_CASA != 0 || CCN_TERZI != 0 || TUOFOGLIO_CASA != 0) //--20181009 AC { nota += token + "Il controvalore"; token = " "; if (CCN_CASA != 0 || GPELIGOFONDI_CASA != 0 || GPELIGTITOLI_CASA != 0 || TUOFOGLIO_CASA != 0) { nota += token + "del patrimonio $/Banca/$ esclude il saldo negativo"; if (CCN_CASA != 0) { nota += token + datiSeiUnico.FormatDecimal("dei conti correnti ({0} €)", CCN_CASA); token = (GPELIGOFONDI_CASA != 0 || GPELIGTITOLI_CASA != 0) ? ", " : ""; } // 20181009 AC if (TUOFOGLIO_CASA != 0) { nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante Il Mio Foglio ({0} €)", TUOFOGLIO_CASA); token = (TUOFOGLIO_CASA != 0) ? ", " : ""; } //--20181009 AC if (GPELIGOFONDI_CASA != 0) { nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante la GP Eligo Fondi ({0} €)", GPELIGOFONDI_CASA); token = (GPELIGTITOLI_CASA != 0) ? ", " : ""; } if (GPELIGTITOLI_CASA != 0) { nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante la GP Eligo Titoli ({0} €)", GPELIGTITOLI_CASA); } token = ". "; } if (CCN_TERZI != 0 && _visualizzaAltriIstituti) { nota += token + datiSeiUnico.FormatDecimal(" Il controvalore del patrimonio altri Istituti esclude il saldo negativo dei conti correnti ({0} €)", CCN_TERZI); } } if (GC < 100) { nota += token + datiSeiUnico.FormatDecimal("Grado di copertura (%) della rappresentazione grafica per macro asset class pari a {0}", GC); token = ": "; if (PNR_CASA != 0 || CC_CASA != 0 || OC_CASA != 0 || PNR_TERZI != 0 || CC_TERZI != 0) { nota += token + "non sono considerati"; token = " "; if (PNR_CASA != 0 || CC_CASA != 0 || OC_CASA != 0) { if (PNR_CASA != 0) { nota += token + datiSeiUnico.FormatDecimal("i prodotti non rappresentabili ({0} €)", PNR_CASA); token = ", "; } if (CC_CASA != 0) { nota += token + datiSeiUnico.FormatDecimal("i conti correnti ({0} €)", CC_CASA); token = ", "; } if (OC_CASA != 0) { nota += token + datiSeiUnico.FormatDecimal("gli importi relativi alle operazioni in corso ({0} €)", OC_CASA); token = ", "; } token = " "; nota += token + "del patrimonio $/Banca/$"; token = ", "; } if ((PNR_TERZI != 0 || CC_TERZI != 0) && _visualizzaAltriIstituti) { if (PNR_TERZI != 0) { nota += token + datiSeiUnico.FormatDecimal("i prodotti non rappresentabili ({0} €)", PNR_TERZI); token = ", "; } if (CC_TERZI != 0) { nota += token + datiSeiUnico.FormatDecimal("i conti correnti ({0} €)", CC_TERZI); token = ", "; } token = " "; nota += token + "del patrimonio Altri Istituti"; token = ", "; } } } nota += "."; nota = !nota.Equals("") ? "(*) " + nota : nota; return datiSeiUnico.FormatBanca(nota); } public virtual string getNotaCopertura5RMRC() //40.5 copertura rischio mercato var e rischio credito { var RM = false; var RC = false; try { var copertura = Convert.ToDecimal(datiSeiUnico.rischioUnit().adeguatezza.adeguatezzaTopBean.listaAdeguatezza.AsEnumerable().FirstOrDefault(o => o.id == "RM").copertura.Replace(".", ",")); RM = copertura > 0 && copertura < 90; } catch { RM = false; } try { var copertura = Convert.ToDecimal(datiSeiUnico.rischioUnit().adeguatezza.adeguatezzaTopBean.listaAdeguatezza.AsEnumerable().FirstOrDefault(o => o.id == "RC").copertura.Replace(".", ",")); RC = copertura > 0 && copertura < 90; } catch { RC = false; } string nota = ""; if (RM || RC) { nota += "Il patrimonio che lei detiene presso $/Banca/$ risulta non adeguato al suo profilo finanziario in quanto alcuni prodotti non sono coperti in termini di " + (RM ? RC ? "Rischio Mercato (VaR) e di Rischio Credito" : "Rischio Mercato (VaR)" : RC ? "Rischio Credito" : "") + ", determinando un grado di copertura inferiore a 90%: in questo caso, a prescindere dai singoli indicatori di rischio, il patrimonio $/Banca/$ viene considerato sempre come non adeguato."; } return datiSeiUnico.FormatBanca(nota); } //private string GetNote(string nota) //{ // decimal CCN_CASA = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale.contoCorrenteNegativo; //cc negativi del patrimonio casa // decimal GPELIGOFONDI_CASA = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale.liqEligoFondiNeg; // liquidità sottostante la GP Eligo Fondi del patrimonio casa // decimal GPELIGTITOLI_CASA = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale.liqEligoTitoliNeg; //liquidità sottostante la GP Eligo Titoli del patrimonio casa // decimal CCN_TERZI = datiSeiUnico.patrimonioUnit().patrimonioTerzi.patrimonioTerziBean.contoCorrentiNegativi; //cc negativi del patrimonio terzi // _presenzaNotaPatrimonioCasa = CCN_CASA + GPELIGOFONDI_CASA + GPELIGTITOLI_CASA != 0; // _presenzaNotaPatrimonioTerzi = CCN_TERZI != 0 && _visualizzaAltriIstituti; // var listaValori = new List() // { // 0, // CCN_CASA, // -1, // GPELIGOFONDI_CASA, // -1, // GPELIGTITOLI_CASA, // CCN_TERZI // }; // var listaValoriStringa = new List() // { // string.Empty, // Helper.FormatCurrencyWithSymbol(CCN_CASA.ToString()), // GPELIGOFONDI_CASA != 0 && CCN_CASA != 0 ? "," : string.Empty, // Helper.FormatCurrencyWithSymbol(GPELIGOFONDI_CASA.ToString()), // GPELIGTITOLI_CASA != 0 && (CCN_CASA + GPELIGOFONDI_CASA) != 0 ? "," : string.Empty, // Helper.FormatCurrencyWithSymbol(GPELIGTITOLI_CASA.ToString()), // Helper.FormatCurrencyWithSymbol(CCN_TERZI.ToString()) // }; // return BuildDynamicNote(nota, listaValori, listaValoriStringa, false); //} } }