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