515 lines
31 KiB
C#

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.Manager.Integration;
using Consulenza.ReportWriter.Business.CHART_PDF;
using Consulenza.ReportWriter.Business.Entity;
using Consulenza.ReportWriter.Business.CUSTOM_PDF.ConsulenzaUnica;
using System.Linq;
namespace Consulenza.ReportWriter.Manager.Section.Unica
{
public class S59 : Entity.Section
{
/// <summary>
///S59.RiservaPortafoglioModelloVSProposto idSezione = 102
/// </summary>
public S59(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S59", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
}
}
protected override sealed void Draw()
{
var dati = GetDataSet();
bool isAdeguata = datiSeiUnico.flagAdeguatezzaPro();
AddElement(new PagePDF(PagePDF.PagePDFType.Generic));
var intestazione = new SectionHeadingPDF(
"Riserva: portafoglio modello vs " + (isAdeguata ? "proposto" : "prospettico"),
EnvironmentFacade.RendererFacade.XLeftLimit,
EnvironmentFacade.RendererFacade.YUpperLimit,
EnvironmentFacade.ReportEnvironment.FontFamily);
AddElement(intestazione.ToElement());
if (dati.Tables["assetClass"].Rows.Count > 0)
{
DataTable dtOrdinamento = dati.Tables["assetClass"].AsEnumerable().OrderBy(l => l.Field<int>("Ordinamento")).CopyToDataTable();
if (getTesto1().Length > 0)
{
AddElement(new SpacePDF(20));
AddElement(new FormattedTextAreaPDF(getTesto1(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
AddElement(new SpacePDF(15));
var tabellaCtv = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["labelControvalore"])
{
Style = Style.ConsulenzaUnica,
Header = false,
Footer = false,
AlternateRow = false,
RowHeight = 28,
ShowSeparationLines = false,
WhiteSpacesHorizontalSeparator = true,
HideLastSeparationLine = true
};
tabellaCtv.Columns.Add(new ColumnPDF("ControvalorepropostoString", 130, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo, "ControvalorepropostoString", "") { FontSize = 7, DeltaYContent = -1 });
tabellaCtv.Columns.Add(new ColumnPDF("Controvaloreproposto", 130, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "Controvaloreproposto", "") { HeaderFontSize = 7, FontBold = false, PaddingRight = 10, DeltaYContent = -1 });
tabellaCtv.Columns.Add(new ColumnPDF("AderenzaportafogliomodelloString", 130, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo, "AderenzaportafogliomodelloString", "") { FontSize = 7, PaddingLeft = 5, DeltaYContent = -1 });
tabellaCtv.Columns.Add(new ColumnPDF("Aderenzaportafogliomodello", 130, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "Aderenzaportafogliomodello", "") { HeaderFontSize = 7, FontBold = false, DeltaYContent = -1, PaddingRight = 4 });
AddElement(tabellaCtv);
}
AddElement(new SpacePDF(8));
string valore = isControvalore() ? "(€)" : "(%)";
AddElement(new FormattedTextAreaPDF(isAssetClass() ? "Asset class" : "Macro asset class", EnvironmentFacade.RendererFacade.XLeftLimit, 130) { BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontBold = true, FontSize = 7, FontColor = ColorPDF.ConsulenzaUnica_Rosso, AutoIncrementYWritable = false, BackGroundMarginLeft = 5 });
AddElement(new FormattedTextAreaPDF("Portafoglio modello " + valore, EnvironmentFacade.RendererFacade.XLeftLimit + 133.5f, 190) { BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontBold = true, FontSize = 7, FontColor = ColorPDF.ConsulenzaUnica_Rosso, AutoIncrementYWritable = false, BackGroundMarginLeft = 5 });
AddElement(new FormattedTextAreaPDF("Portafoglio " + ( isAdeguata ? "proposto " : "prospettico ") + valore, EnvironmentFacade.RendererFacade.XLeftLimit + 327.5f, 190) { BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontBold = true, FontSize = 7, FontColor = ColorPDF.ConsulenzaUnica_Rosso, BackGroundMarginLeft = 5 }); //340 = + 145 + 195
#region ASSET
var tabellaAsset = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dtOrdinamento)
{
Style = Style.ConsulenzaUnica,
Header = false,
Footer = false,
AlternateRow = false,
RowHeight = 28,
ShowSeparationLines = false
};
tabellaAsset.Columns.Add(new ColumnPDF("descrizione", 145, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Descrizione", "") { HeaderFontSize = 7, FontSize = 7 });
tabellaAsset.Columns.Add(new ColumnPDF("portafogliomodello", 179, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Objectpdf, "PercentualeControvaloreModello", "") { HeaderPaddingLeft = 5, HeaderFontSize = 7, DeltaYContent = 2, FontSize=7 });
tabellaAsset.Columns.Add(new ColumnPDF("portafoglioproposto", 180, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, "PercentualeControvaloreProposto", "") { HeaderPaddingLeft = 5, HeaderFontSize = 7, PaddingLeft = 3.5f, DeltaYContent = 2, FontSize = 7 });
int o = 0;
var list = new List<double>();
list.Add(Convert.ToDouble(dati.Tables["assetClass"].AsEnumerable().Max(x => x["PercentualeControvaloreModello"])));
list.Add(Convert.ToDouble(dati.Tables["assetClass"].AsEnumerable().Max(x => x["PercentualeControvaloreProposto"])));
var max = (float)Helper.Round(list.Max());
float larghezzaBarra = 0;
float deltaXBarra = 0;
var width = 0;
foreach (DataRow row in dtOrdinamento.Rows)
{
var colore = new ColorPDF(Convert.ToInt32(row["Red"]), Convert.ToInt32(row["Green"]), Convert.ToInt32(row["Blue"]));
#region barra colonna Portafogliomodello
width = tabellaAsset.Columns[1].Width - (isControvalore() ? 50 : 20);
larghezzaBarra = Helper.GetWidthProportional(Convert.ToDouble(row["PercentualeControvaloreModello"]) == 0 ? (float)0.01 : (float)Convert.ToDouble(row["PercentualeControvaloreModello"]), max, width);
/**************************** Modifica aladdin 17062021 - Andrea *************************************************************************/
//deltaXBarra = Convert.ToDouble(row["PercentualeControvaloreModello"]) == 0 ? -larghezzaBarra + 10 : -larghezzaBarra + (isControvalore() ? 0 : 7);
deltaXBarra = Convert.ToDouble(row["ValoreAttuale"]) == 0 ? larghezzaBarra + 5 : larghezzaBarra + (isControvalore() ? 0 : 7);
tabellaAsset.Columns[1].HorizontalAlignment = HorizontalAlignmentType.Sinistra;
/**************************************************************************************************************************************/
if (Convert.ToDouble(row["PercentualeControvaloreModello"]) == 0)
{
tabellaAsset.Cells[1, o].ValueObjectList = new List<Business.Entity.ObjectPDF>()
{
new FormattedTextAreaPDF(isControvalore() ? Helper.FormatCurrency(row["PercentualeControvaloreModello"].ToString()) : Helper.FormatDecimal(row["PercentualeControvaloreModello"].ToString(), 2), deltaXBarra-10, isControvalore()? 50 : 35)
{
DeltaY = 4,
/**************************** Modifica aladdin 17062021 - Andrea *************************************************************************/
//TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left,
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Right,
/*****************************************************************************************************************************************/
DeltaX = isControvalore() ? deltaXBarra+20 : deltaXBarra+5,
FontSize = 7
},
new RectanglePDF(12, 1 , ColorPDF.Bianco){DeltaY = 4}
};
}
else
{
tabellaAsset.Cells[1, o].ValueObjectList = new List<Business.Entity.ObjectPDF>()
{
new FormattedTextAreaPDF(isControvalore() ? Helper.FormatCurrency(row["PercentualeControvaloreModello"].ToString()) : Helper.FormatDecimal(row["PercentualeControvaloreModello"].ToString(), 2), deltaXBarra, isControvalore()? 50 : 35)
{
DeltaY = 4,
/**************************** Modifica aladdin 17062021 - Andrea *************************************************************************/
//TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left,
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Right,
/*****************************************************************************************************************************************/
DeltaX = deltaXBarra,
FontSize = 7
},
new RectanglePDF(12, larghezzaBarra , colore){DeltaY = 4}
};
}
#endregion
#region barra colonna Portafoglioattuale
width = tabellaAsset.Columns[2].Width - (isControvalore() ? 50 : 20);
larghezzaBarra = Helper.GetWidthProportional(Convert.ToDouble(row["PercentualeControvaloreProposto"]) == 0 ? (float)0.01 : (float)Convert.ToDouble(row["PercentualeControvaloreProposto"]), max, width);
deltaXBarra = Convert.ToDouble(row["PercentualeControvaloreProposto"]) == 0 ? isControvalore() ? larghezzaBarra -20 : larghezzaBarra-10 : isControvalore() ? larghezzaBarra + 3 :larghezzaBarra - 5;
if (Convert.ToDouble(row["PercentualeControvaloreProposto"]) == 0)
{
tabellaAsset.Cells[2, o].ValueObjectList = new List<Business.Entity.ObjectPDF>()
{
new RectanglePDF(12, 1 , ColorPDF.Bianco){DeltaY = 4},
new FormattedTextAreaPDF(isControvalore() ? Helper.FormatCurrency(row["PercentualeControvaloreProposto"].ToString()) :Helper.FormatDecimal(row["PercentualeControvaloreProposto"].ToString(), 2), deltaXBarra-10, isControvalore()? 50 : 35)
{
DeltaY = 4,
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Right,
DeltaX = isControvalore() ? deltaXBarra-10 : deltaXBarra-8,
FontSize = 7
}
};
}
else
{
tabellaAsset.Cells[2, o].ValueObjectList = new List<Business.Entity.ObjectPDF>()
{
new RectanglePDF(12, larghezzaBarra , colore){DeltaY = 4},
new FormattedTextAreaPDF(isControvalore() ? Helper.FormatCurrency(row["PercentualeControvaloreProposto"].ToString()) :Helper.FormatDecimal(row["PercentualeControvaloreProposto"].ToString(), 2), deltaXBarra, isControvalore()? 50 : 35)
{
DeltaY = 4,
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Right,
DeltaX = deltaXBarra,
FontSize = 7
}
};
}
#endregion
o++;
}
#endregion
AddElement(new SpacePDF(5));
AddElement(tabellaAsset);
string note = "*";
if (getNota1().Length > 0)
{
tabellaAsset.Notes.Add(
new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella,
getNota1(),
new[] { "" },
string.Empty,
TableNotePDF.TableNoteAsteriskPositionType.CorpoTabella) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }
);
//captionAderenzaModello.Text += note;
//captionCtvProposto.Text += note;
//note += "*";
}
if (getNota2().Length > 0)
{
tabellaAsset.Notes.Add(
new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella,
getNota2(),
new[] { "" },
string.Empty,
TableNotePDF.TableNoteAsteriskPositionType.CorpoTabella) { FontSize = 6, TextHorizontalAlign= ceTe.DynamicPDF.TextAlign.Justify }
);
//captionVarProposto.Text += note;
note += "*";
}
}
}
/// <summary>
/// Recupera i dati necessari alla Section restituendo un DataTable.
/// </summary>
/// <returns></returns>
protected sealed override DataTable GetDataTable()
{
return null;
}
/// <summary>
/// Recupera i dati necessari alla Section restituendo un DataSet.
/// </summary>
/// <returns></returns>
protected sealed override DataSet GetDataSet()
{
var ds = new DataSet();
ds.Tables.Add(new DataTable("labelControvalore"));
ds.Tables.Add(new DataTable("assetClass"));
var progettoRiserva = datiSeiUnico.pianificazioneUnit().pianificazioneOrizzontale.FirstOrDefault(o => o.portafoglioModello.area.Equals("Ris"));
var progettoRiservaPro = datiSeiUnico.propostaUnit().stPianificazioneVerticale.stAreePianificazione.FirstOrDefault(o => o.area.Equals("Ris")).progetti.FirstOrDefault();
var valoreCtvTotaleProposto = progettoRiservaPro.ctvProgettoPro;
var valoriAssetProposto = isAssetClass() ?
datiSeiUnico.propostaUnit().assetClass.distribuzioneAree.FirstOrDefault(o => o.area.Equals("Ris")) //.ToList().FirstOrDefault(o => o.chiaveProgetto != null && o.chiaveProgetto == item.chiaveProgetto.ToString()).distribuzione
: datiSeiUnico.propostaUnit().macroAssetClass.distribuzioneAree.FirstOrDefault(o => o.area.Equals("Ris"));
var valoriAssetModello = isAssetClass() ? progettoRiserva.portafoglioModello.distribuzioniPtfModello.Where(l => l.asset.livello == 2).ToList()
: progettoRiserva.portafoglioModello.distribuzioniPtfModello.Where(l => l.asset.livello == 1).ToList();
var displayInfoM = datiSeiUnico.displayInfos().macroAssetDisplayInfos.ToList();
var displayInfoA = datiSeiUnico.displayInfos().assetDisplayInfos.ToList();
#region patrimonio controvalore
ds.Tables["labelControvalore"].Columns.Add("ControvalorepropostoString", typeof(string));
ds.Tables["labelControvalore"].Columns.Add("Controvaloreproposto", typeof(string));
ds.Tables["labelControvalore"].Columns.Add("AderenzaportafogliomodelloString", typeof(string));
ds.Tables["labelControvalore"].Columns.Add("Aderenzaportafogliomodello", typeof(string));
ds.Tables["labelControvalore"].Rows.Add(
"Controvalore " + (datiSeiUnico.flagAdeguatezzaPro() ? " proposto (€)" : "prospettico (€)") +
(getNota1().Length > 0 && getNota1().Contains("Grado") ? "*" : ""),
Helper.FormatCurrency(valoriAssetProposto.distribuzione.totaleCtv.ToString()),
"Aderenza al portafoglio<br> modello (%)" + (getNota1().Length > 0 ? "*" : ""),
Helper.FormatDecimal(progettoRiserva.aderenza.valoreAderenza.ToString(), 2));
ds.Tables["labelControvalore"].Rows.Add(
"VaR " + (datiSeiUnico.flagAdeguatezzaPro() ? " proposto (%)" : "prospettico (%)") + (getNota2().Length > 0 ? "*" : ""),
progettoRiservaPro.varProgettoPro,
"VaR portafoglio modello (%)",
Helper.FormatDecimal(progettoRiserva.varPianificatoDec, 2));
#endregion
#region asset
ds.Tables["assetClass"].Columns.Add(new DataColumn("Codice", typeof(string)));
ds.Tables["assetClass"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
ds.Tables["assetClass"].Columns.Add(new DataColumn("Red", typeof(int)));
ds.Tables["assetClass"].Columns.Add(new DataColumn("Green", typeof(int)));
ds.Tables["assetClass"].Columns.Add(new DataColumn("Blue", typeof(int)));
ds.Tables["assetClass"].Columns.Add(new DataColumn("PercentualeControvaloreModello", typeof(decimal)));
ds.Tables["assetClass"].Columns.Add(new DataColumn("PercentualeControvaloreProposto", typeof(decimal)));
ds.Tables["assetClass"].Columns.Add(new DataColumn("Ordinamento", typeof(int)));
#region portafoglio modello
if (isAssetClass())
{
foreach (var valore in from c in displayInfoA
join l in valoriAssetModello on c.key equals l.asset.asset
// orderby c.value.order
select new
{
l.asset.asset,
l.asset.descrizione,
new ColorPDF(c.value.fill).Red,
new ColorPDF(c.value.fill).Green,
new ColorPDF(c.value.fill).Blue,
l.percentuale,
c.value.order
})
{
ds.Tables["assetClass"].Rows.Add(
valore.asset,
valore.descrizione,
valore.Red,
valore.Green,
valore.Blue,
isControvalore() ? valore.percentuale * valoreCtvTotaleProposto : valore.percentuale * 100,
0,//portafoglio proposto che viene caricato successivamente
valore.order
);
}
}
else
{
foreach (var valore in from c in displayInfoM
join l in valoriAssetModello on c.key equals l.asset.asset
//orderby c.value.order
select new
{
l.asset.asset,
l.asset.descrizione,
new ColorPDF(c.value.fill).Red,
new ColorPDF(c.value.fill).Green,
new ColorPDF(c.value.fill).Blue,
l.percentuale,
c.value.order
})
{
ds.Tables["assetClass"].Rows.Add(
valore.asset,
valore.descrizione,
valore.Red,
valore.Green,
valore.Blue,
isControvalore() ? valore.percentuale * valoreCtvTotaleProposto : valore.percentuale * 100,
0,//portafoglio proposto che viene caricato successivamente
valore.order
);
}
}
#endregion
#region portafoglioproposto
if (isAssetClass())
{
foreach (var valore in from c in displayInfoA
join l in valoriAssetProposto.distribuzione.elencoSlice on c.key equals l.codice
// orderby c.value.order
select new
{
l.codice,
l.descrizione,
new ColorPDF(c.value.fill).Red,
new ColorPDF(c.value.fill).Green,
new ColorPDF(c.value.fill).Blue,
l.pesoCC,
l.ctvCC,
c.value.order
})
{
if (ds.Tables["assetClass"].AsEnumerable().FirstOrDefault(l => l.Field<string>("Codice") == valore.codice) != null)
{
ds.Tables["assetClass"].Select(string.Format("[Codice] = '{0}'", valore.codice))
.ToList<DataRow>()
.ForEach(r =>
{
r["PercentualeControvaloreProposto"] = isControvalore() ? Convert.ToDecimal(valore.ctvCC) : Convert.ToDecimal(valore.pesoCC * 100);
});
}
else
{
ds.Tables["assetClass"].Rows.Add(
valore.codice,
valore.descrizione,
valore.Red,
valore.Green,
valore.Blue,
0,//portafoglio modello per un item che non è presente
isControvalore() ? valore.ctvCC : valore.pesoCC * 100,
valore.order
);
}
}
}
else
{
foreach (var valore in from c in displayInfoM
join l in valoriAssetProposto.distribuzione.elencoSlice on c.key equals l.codice
// orderby c.value.order
select new
{
l.codice,
l.descrizione,
new ColorPDF(c.value.fill).Red,
new ColorPDF(c.value.fill).Green,
new ColorPDF(c.value.fill).Blue,
l.pesoCC,
l.ctvCC,
c.value.order
})
{
if (ds.Tables["assetClass"].AsEnumerable().FirstOrDefault(l => l.Field<string>("Codice") == valore.codice) != null)
{
ds.Tables["assetClass"].Select(string.Format("[Codice] = '{0}'", valore.codice))
.ToList<DataRow>()
.ForEach(r =>
{
r["PercentualeControvaloreProposto"] = isControvalore() ? valore.ctvCC : valore.pesoCC * 100;
});
}
else
{
ds.Tables["assetClass"].Rows.Add(
valore.codice,
valore.descrizione,
valore.Red,
valore.Green,
valore.Blue,
isControvalore() ? valore.ctvCC : valore.pesoCC * 100,
valore.order
);
}
}
}
#endregion
#endregion
return ds;
}
public virtual string getTesto1()
{
bool isAdeguata = datiSeiUnico.flagAdeguatezzaPro();
string adeguataStr = isAdeguata ? "la presente proposta" : "le operazioni da lei richieste al suo private banker";
return isAssetClass() ?
!isControvalore() ?
//"In questa scheda è riportato il confronto, sulla base delle principali asset class finanziarie, tra il patrimonio che, secondo " + adeguataStr + " è destinato all'area Riserva, e il relativo portafoglio modello, con evidenza dell'esposizione, in termini percentuali, a ciascuna asset class, e con indicazione del grado di Aderenza." : "In questa scheda è riportato il confronto, sulla base delle principali asset class finanziarie, tra il patrimonio che secondo la presente proposta è destinato all'area Riserva, e il relativo portafoglio modello, con evidenza dell'esposizione, in termini di controvalore, a ciascuna asset class, e con indicazione del grado di Aderenza." : isControvalore() ? "In questa scheda è riportato il confronto, sulla base delle principali macro asset class finanziarie, tra il patrimonio che secondo la presente proposta è destinato all'area Riserva, e il relativo portafoglio modello, con evidenza dell'esposizione, in termini di controvalore, a ciascuna macro asset class, e con indicazione del grado di Aderenza." : "In questa scheda è riportato il confronto, sulla base delle principali macro asset class finanziarie, tra il patrimonio che secondo la presente proposta è destinato all'area Riserva, e il relativo portafoglio modello, con evidenza dell'esposizione, in termini percentuali, a ciascuna macro asset class, e con indicazione del grado di Aderenza.";
/**************************** Modifica aladdin 17062021 - Andrea *************************************************************************/
"In questa scheda è riportato il confronto, sulla base delle principali asset class finanziarie, tra il patrimonio che, secondo " + adeguataStr + " è destinato all'area Riserva, e il relativo portafoglio modello, con evidenza dell'esposizione, in termini percentuali, a ciascuna asset class, e con indicazione del grado di Aderenza." : "In questa scheda è riportato il confronto, sulla base delle principali asset class finanziarie, tra il patrimonio che secondo la presente proposta è destinato all'area Riserva, e il relativo portafoglio modello, con evidenza dell'esposizione, in termini di controvalore, a ciascuna asset class, e con indicazione del grado di Aderenza." : isControvalore() ? "In questa scheda è riportato il confronto, sulla base delle principali macro asset class finanziarie, tra il patrimonio che secondo la presente proposta è destinato all'area Riserva, e il relativo portafoglio modello, con evidenza dell'esposizione, in termini di controvalore, a ciascuna macro asset class, e con indicazione del grado di Aderenza." : "In questa scheda è riportato il confronto, sulla base delle principali macro asset class finanziarie, tra il patrimonio che secondo la presente proposta è destinato all'area Riserva, e il relativo portafoglio modello, con evidenza dell'esposizione, in termini percentuali, a ciascuna macro asset class.";
/*****************************************************************************************************************************************/
}
//note da fare
public virtual string getNota1()
{
// Nota Portafoglio Consigliato
var aderenza = datiSeiUnico.pianificazioneUnit().pianificazioneOrizzontale.FirstOrDefault(o => o.portafoglioModello.area.Equals("Ris")).aderenza.portafoglioConsiderato;
var gradoCoperturaAllocation = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale.varInfos.stat.copertura;
string nota = "";
if (gradoCoperturaAllocation < 100)
{
string var = isAssetClass() ? "asset" : "macro asset";
nota += string.Format("Grado di copertura prodotti rappresentabili in " + var + " allocation (%): {0}.", Helper.FormatDecimal(gradoCoperturaAllocation.ToString(), 2));
}
if (aderenza < 100)
nota += string.Format(" Portafoglio considerato nel calcolo dell'aderenza (%): {0}.", Helper.FormatDecimal(aderenza.ToString(), 2));
return nota;
}
public virtual string getNota2()
{
var coperturaRischioMercato = (isAssetClass() ? datiSeiUnico.propostaUnit().assetClass.distribuzione.coverageCC : datiSeiUnico.propostaUnit().macroAssetClass.distribuzione.coverageCC)*100;
string nota = "";
if (coperturaRischioMercato < 100)
{
nota = string.Format("Grado di copertura prodotti in termini di Rischio Mercato (VaR %): {0}.", Helper.FormatDecimal(coperturaRischioMercato.ToString(), 2));
}
return nota;
}
public virtual bool isControvalore()
{
return !GetOption<Opzione3_2>().Valore;
}
public virtual bool isAssetClass()
{
return GetOption<Opzione3_1>().Valore;
}
}
}