using System;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using System.Data;
using Consulenza.ReportWriter.Business.CHART_PDF;
using Consulenza.ReportCommon;
using Consulenza.ReportWriter.Business.Entity;
using System.Collections.Generic;
using System.Linq;
namespace Consulenza.ReportWriter.Manager.Section.Unica
{
///
/// S27.RiservaPortafoglioModelloVSAttuale idSezione = 70
///
public class S27 : Entity.Section
{
public S27(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S27", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
}
}
protected override sealed void Draw()
{
var dati = GetDataSet();
#region Testo Introduttivo
AddElement(new SpacePDF(20));
if (getTesto1().Length > 0)
{
AddElement(new FormattedTextAreaPDF(getTesto1(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
AddElement(new SpacePDF(15));
}
#endregion
#region Label
var tabellaCtv = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["patrimonio"])
{
Style = Style.ConsulenzaUnica,
Header = false,
Footer = false,
AlternateRow = false,
RowHeight = 28,
ShowSeparationLines = false,
WhiteSpacesHorizontalSeparator = true,
HideLastSeparationLine = true
};
tabellaCtv.Columns.Add(new ColumnPDF("ControvaloreattualeString", 130, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo, "ControvaloreattualeString", "") { FontSize = 7, DeltaYContent = -1 });
tabellaCtv.Columns.Add(new ColumnPDF("Controvaloreattuale", 130, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "Controvaloreattuale", "") { 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 });
//FormattedTextAreaPDF captionCtvAttuale = new FormattedTextAreaPDF("Controvalore attuale (€)", EnvironmentFacade.RendererFacade.XLeftLimit, 130) { FontSize = 7, BackGroundMarginLeft = 5, BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontColor = ColorPDF.Nero, FontBold = true, AutoIncrementYWritable = false };
//AddElement(captionCtvAttuale);
//FormattedTextAreaPDF controvalore = new FormattedTextAreaPDF(dati.Tables["patrimonio"].Rows[0]["ControvaloreAttuale"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit + 150) { FontSize = 7, BackGroundColor = ColorPDF.Bianco, AutoIncrementYWritable = false };
//AddElement(controvalore);
//FormattedTextAreaPDF captionAderenzaModello = new FormattedTextAreaPDF("Aderenza al portafoglio modello (%)", EnvironmentFacade.RendererFacade.XLeftLimit + 280, 140) { FontSize = 7, BackGroundMarginLeft = 5, BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontColor = ColorPDF.Nero, FontBold = true, TextVerticalAlign = ceTe.DynamicPDF.VAlign.Top, AutoIncrementYWritable = false };
//AddElement(captionAderenzaModello);
//FormattedTextAreaPDF aderenza = new FormattedTextAreaPDF(dati.Tables["patrimonio"].Rows[0]["AderenzaPortafoglioModello"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit + 480) { FontSize = 7, BackGroundColor = ColorPDF.Bianco, AutoIncrementYWritable = true };
//AddElement(aderenza);
//AddElement(new SpacePDF(13));
//FormattedTextAreaPDF captionVarAttuale = new FormattedTextAreaPDF("VaR attuale (%)", EnvironmentFacade.RendererFacade.XLeftLimit, 130) { FontSize = 7, BackGroundMarginLeft = 5, BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontColor = ColorPDF.Nero, FontBold = true, AutoIncrementYWritable = false };
//AddElement(captionVarAttuale);
//FormattedTextAreaPDF varAttuale = new FormattedTextAreaPDF(dati.Tables["patrimonio"].Rows[0]["VarAttuale"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit + 150) { FontSize = 7, BackGroundColor = ColorPDF.Bianco, AutoIncrementYWritable = false };
//AddElement(varAttuale);
//FormattedTextAreaPDF captionVarModello = new FormattedTextAreaPDF("VaR portafoglio modello (%)", EnvironmentFacade.RendererFacade.XLeftLimit + 280, 140) { FontSize = 7, BackGroundMarginLeft = 5, BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontColor = ColorPDF.Nero, FontBold = true, AutoIncrementYWritable = false };
//AddElement(captionVarModello);
//FormattedTextAreaPDF varModello = new FormattedTextAreaPDF(dati.Tables["patrimonio"].Rows[0]["VarPortafoglioModello"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit + 480) { FontSize = 7, BackGroundColor = ColorPDF.Bianco, AutoIncrementYWritable = true };
//AddElement(varModello);
#endregion
AddElement(tabellaCtv);
AddElement(new SpacePDF(20));
#region Portafoglio
string simbolo = isControvalore() ? "(€)" : "(%)";
//AddElement(new FormattedTextAreaPDF(!isAssetClass() ? "Macro asset class" : "Asset class", EnvironmentFacade.RendererFacade.XLeftLimit, 140) { BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontBold = true, FontSize = 7, FontColor = ColorPDF.ConsulenzaUnica_Rosso, AutoIncrementYWritable = false, BackGroundMarginLeft = 5 });
//AddElement(new FormattedTextAreaPDF("Portafoglio modello " + simbolo, EnvironmentFacade.RendererFacade.XLeftLimit + 145, 190) { BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontBold = true, FontSize = 7, FontColor = ColorPDF.ConsulenzaUnica_Rosso, AutoIncrementYWritable = false, BackGroundMarginLeft = 5 });
//AddElement(new FormattedTextAreaPDF("Portafoglio attuale " + simbolo, EnvironmentFacade.RendererFacade.XLeftLimit + 340, 190) { BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontBold = true, FontSize =7, FontColor = ColorPDF.ConsulenzaUnica_Rosso, BackGroundMarginLeft = 5 }); //340 = + 145 + 195
DataTable dtOrdinamento = dati.Tables["portafoglio"].AsEnumerable().OrderBy(l => l.Field("Ordinamento")).CopyToDataTable();
var tabellaAsset = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dtOrdinamento)
{
Style = Style.ConsulenzaUnica,
Header = true,
Footer = false,
AlternateRow = false,
RowHeight = 28,
ShowSeparationLines = false,
ShowBorderHeader = true
};
tabellaAsset.Columns.Add(new ColumnPDF("descrizione", 150, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Descrizione", !isAssetClass() ? "Macro asset class" : "Asset class") { HeaderFontSize = 7 });
tabellaAsset.Columns.Add(new ColumnPDF("portafogliomodello", 185, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Objectpdf, "PercentualeControvaloreModello", "Portafoglio modello " + simbolo) { HeaderPaddingRight = 80, PaddingRight = 20, HeaderFontSize = 7, DeltaYContent = 2, FontSize = 7 });
tabellaAsset.Columns.Add(new ColumnPDF("portafoglioattuale", 185, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, "PercentualeControvaloreAttuale", "Portafoglio attuale " + simbolo) { HeaderFontSize = 7, HeaderPaddingLeft = 10, PaddingLeft = 3.5f, DeltaYContent = 2, FontSize = 7 });
int o = 0;
var list = new List();
list.Add(Convert.ToDouble(dati.Tables["portafoglio"].AsEnumerable().Max(x => x["PercentualeControvaloreModello"])));
list.Add(Convert.ToDouble(dati.Tables["portafoglio"].AsEnumerable().Max(x => x["PercentualeControvaloreAttuale"])));
var max = (float)Helper.Round(list.Max());
//float larghezzaSpazioTestoPercentuale = 0;
//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
int columnWidth = tabellaAsset.Columns[1].Width;
string text = isControvalore() ? Helper.FormatCurrency(row["PercentualeControvaloreModello"].ToString()) : Helper.FormatDecimal(row["PercentualeControvaloreModello"].ToString(), 2);
int textWidth = GetNumericStringWidth(text);
float barWidth = Helper.GetWidthProportional((float)Convert.ToDouble(row["PercentualeControvaloreModello"]), max, columnWidth);
float additionalWhiteSpace = barWidth == 0 ? 0 : 4;
tabellaAsset.Cells[1, o].ValueObjectList = new List();
tabellaAsset.Cells[1, o].ValueObjectList.Add(new FormattedTextAreaPDF(text, 0, textWidth)
{
DeltaY = 4,
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left,
DeltaX = (barWidth + additionalWhiteSpace) * -1,
FontSize = 7
});
if (barWidth != 0)
{
tabellaAsset.Cells[1, o].ValueObjectList.Add(new RectanglePDF(12, barWidth, colore) { DeltaY = 4 });
}
#endregion
#region barra colonna PortafoglioAttuale
columnWidth = tabellaAsset.Columns[2].Width;
text = isControvalore() ? Helper.FormatCurrency(row["PercentualeControvaloreAttuale"].ToString()) : Helper.FormatDecimal(row["PercentualeControvaloreAttuale"].ToString(), 2);
textWidth = GetNumericStringWidth(text);
barWidth = Helper.GetWidthProportional((float)Convert.ToDouble(row["PercentualeControvaloreAttuale"]), max, columnWidth);
additionalWhiteSpace = barWidth == 0 ? 0 : 4;
tabellaAsset.Cells[2, o].ValueObjectList = new List();
if (barWidth != 0)
{
tabellaAsset.Cells[2, o].ValueObjectList.Add(new RectanglePDF(12, barWidth, colore) { DeltaY = 4 });
}
tabellaAsset.Cells[2, o].ValueObjectList.Add(new FormattedTextAreaPDF(text, 0, textWidth)
{
DeltaY = 4,
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Right,
DeltaX = barWidth + additionalWhiteSpace,
FontSize = 7
});
#endregion
o++;
}
#endregion
#region Nota
string nota1 = getNota1();
string nota2 = getNota2();
if (nota1 != "")
{
tabellaAsset.Notes.Add(
new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella,
nota1,
new[] { "" },
string.Empty,
TableNotePDF.TableNoteAsteriskPositionType.CorpoTabella)
{ FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }
);
//captionAderenzaModello.Text += note;
//captionCtvAttuale.Text += nota1.Contains("Grado") ? note : "";
//note += "*";
}
if (nota2 != "")
{
tabellaAsset.Notes.Add(
new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella,
nota2,
new[] { "" },
string.Empty,
TableNotePDF.TableNoteAsteriskPositionType.CorpoTabella)
{ FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }
);
//varAttuale.Text += note;
//note += "*";
}
#endregion
AddElement(tabellaAsset);
}
///
/// Recupera i dati necessari alla Section restituendo un DataTable.
///
///
protected sealed override DataTable GetDataTable()
{
return null;
}
protected override DataSet GetDataSet()
{
#region Estrazione Chiave PB + Servizi
var _pianificazioneOrizzontale = datiSeiUnico.all().pianificazioneUnit.pianificazioneOrizzontale.FirstOrDefault(l => l.portafoglioModello.area.Equals("Ris"));
var patrimoniocasa = isAssetClass() ?
datiSeiUnico.all().patrimonioUnit.patrimonioCasa.assetClass.distribuzioneAree.Where(o => o.area.Equals("Ris")).ToList() :
datiSeiUnico.all().patrimonioUnit.patrimonioCasa.macroAssetClass.distribuzioneAree.Where(o => o.area.Equals("Ris")).ToList();
var totaleControvaloreAttuale = patrimoniocasa.FirstOrDefault().distribuzione.totaleCtv;
var aderenzaPortafogliomodello = _pianificazioneOrizzontale.aderenza.valoreAderenza; //datiSeiUnico.pianificazioneUnit().pianificazioneOrizzontale.FirstOrDefault(l => l.portafoglioModello.area.Equals("Ris")).aderenza.portafoglioConsiderato;
var displayInfoM = datiSeiUnico.displayInfos().macroAssetDisplayInfos;
var displayInfoA = datiSeiUnico.displayInfos().assetDisplayInfos;
var varAttuale = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale.aree.Where(l => l.area.Equals("Ris")).FirstOrDefault().progetti.FirstOrDefault().progettoVarInfos != null ? datiSeiUnico.pianificazioneUnit().pianificazioneVerticale.aree.Where(l => l.area.Equals("Ris")).FirstOrDefault().progetti.FirstOrDefault().progettoVarInfos.varDecodificato : "-";
var distribuzionePtf = !isAssetClass() ? _pianificazioneOrizzontale.portafoglioModello.distribuzioniPtfModello.Where(l => l.asset.livello == 1).ToList() : _pianificazioneOrizzontale.portafoglioModello.distribuzioniPtfModello.Where(l => l.asset.livello == 2).ToList();
#endregion
#region Definizione Dataset
var ds = new DataSet();
ds.Tables.Add(new DataTable("patrimonio"));
ds.Tables.Add(new DataTable("portafoglio"));
#endregion
#region Patrimonio
ds.Tables["patrimonio"].Columns.Add("ControvaloreattualeString", typeof(string));
ds.Tables["patrimonio"].Columns.Add("Controvaloreattuale", typeof(string));
ds.Tables["patrimonio"].Columns.Add("AderenzaportafogliomodelloString", typeof(string));
ds.Tables["patrimonio"].Columns.Add("Aderenzaportafogliomodello", typeof(string));
ds.Tables["patrimonio"].Rows.Add(
"Controvalore attuale (€)" + (getNota1().Length > 0 && getNota1().Contains("Grado") ? "*" : ""),
Helper.FormatCurrency(totaleControvaloreAttuale.ToString()),
"Aderenza al portafoglio modello (%)" + (getNota1().Length > 0 && getNota1().Contains("aderenza") ? "*" : ""),
Helper.FormatDecimal(aderenzaPortafogliomodello.ToString(), 2));
//if (getNota2().Length > 0) //commentato perchè non c'erano ticket a riguardo e impediva la visualizzazione da ppt
ds.Tables["patrimonio"].Rows.Add(
"VaR attuale (%)" + (getNota2().Length > 0 ? "*" : ""),
varAttuale,
"VaR portafoglio modello (%)",
_pianificazioneOrizzontale.varPianificatoDec);
#endregion
#region Portafoglio
ds.Tables["portafoglio"].Columns.Add(new DataColumn("Codice", typeof(string)));
ds.Tables["portafoglio"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
ds.Tables["portafoglio"].Columns.Add(new DataColumn("Red", typeof(int)));
ds.Tables["portafoglio"].Columns.Add(new DataColumn("Green", typeof(int)));
ds.Tables["portafoglio"].Columns.Add(new DataColumn("Blue", typeof(int)));
ds.Tables["portafoglio"].Columns.Add(new DataColumn("PercentualeControvaloreModello", typeof(decimal)));
ds.Tables["portafoglio"].Columns.Add(new DataColumn("PercentualeControvaloreAttuale", typeof(decimal)));
ds.Tables["portafoglio"].Columns.Add(new DataColumn("Ordinamento", typeof(int)));
#region portafoglio modello
if (isAssetClass())
{
foreach (var valore in from c in displayInfoA
join l in distribuzionePtf 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["portafoglio"].Rows.Add(
valore.asset,
valore.descrizione,
valore.Red,
valore.Green,
valore.Blue,
isControvalore() ? (Convert.ToDecimal(valore.percentuale) * totaleControvaloreAttuale) : Convert.ToDecimal(valore.percentuale * 100),
0,//portafoglio proposto che viene caricato successivamente
valore.order
);
}
}
else
{
foreach (var valore in from c in displayInfoM
join l in distribuzionePtf 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["portafoglio"].Rows.Add(
valore.asset,
valore.descrizione,
valore.Red,
valore.Green,
valore.Blue,
isControvalore() ? (Convert.ToDecimal(valore.percentuale) * totaleControvaloreAttuale) : Convert.ToDecimal(valore.percentuale * 100),
0,//portafoglio attuale che viene caricato successivamente
valore.order
);
}
}
#endregion
#region portafoglioattuale
if (isAssetClass())
{
foreach (var valore in from c in displayInfoA
join l in patrimoniocasa[0].distribuzione.elencoSlice on c.key equals l.codice
where l.sliceRappresentabile == true
//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["portafoglio"].AsEnumerable().FirstOrDefault(l => l.Field("Codice") == valore.codice) != null)
{
ds.Tables["portafoglio"].Select(string.Format("[Codice] = '{0}'", valore.codice))
.ToList()
.ForEach(r =>
{
r["PercentualeControvaloreAttuale"] = isControvalore() ? Convert.ToDecimal(valore.ctvCC) : Convert.ToDecimal(valore.pesoCC * 100);
});
}
else
{
ds.Tables["portafoglio"].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 patrimoniocasa[0].distribuzione.elencoSlice on c.key equals l.codice
where l.sliceRappresentabile == true
//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["portafoglio"].AsEnumerable().FirstOrDefault(l => l.Field("Codice") == valore.codice) != null)
{
ds.Tables["portafoglio"].Select(string.Format("[Codice] = '{0}'", valore.codice))
.ToList()
.ForEach(r =>
{
r["PercentualeControvaloreAttuale"] = isControvalore() ? Convert.ToDecimal(valore.ctvCC) : Convert.ToDecimal(valore.pesoCC * 100);
});
}
else
{
ds.Tables["portafoglio"].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
);
}
}
}
#endregion
ds.Tables["portafoglio"].AsEnumerable().OrderBy(r => r.Field("Ordinamento"));
#endregion
return ds;
}
public virtual bool isAssetClass()
{
return GetOption().Valore;
}
public virtual bool isControvalore()
{
return !GetOption().Valore;
}
public virtual string getTesto1()
{
var asset = "";
var controvalore = "";
asset = !isAssetClass() ? "macro asset class" : "asset class";
controvalore = isControvalore() ? "di controvalore" : "percetuali";
var testo = "In questa scheda è riportato il confronto, sulla base delle principali " + asset + " ";
testo += "finanziarie, tra il patrimonio destinato all'area Riserva e il relativo portafoglio modello, ";
testo += "con evidenza dell'esposizione, in termini " + controvalore + ", a ciascuna " + asset + ", e ";
testo += "con indicazione del grado di Aderenza.";
return Helper.ReplaceVariables(testo, EnvironmentFacade.ReportEnvironment);
}
public virtual string getNota1()
{
// Nota Portafoglio ConsigliatoFF
var aderenza = datiSeiUnico.pianificazioneUnit().pianificazioneOrizzontale.FirstOrDefault(l => l.portafoglioModello.area.Equals("Ris")).aderenza.portafoglioConsiderato;
var gradoCoperturaVar = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale.aree.FirstOrDefault(o => o.area.Equals("Ris")).progetti.FirstOrDefault().progettoVarInfos.stat.copertura;
var distribuzione = isAssetClass() ? datiSeiUnico.patrimonioUnit().patrimonioCasa.assetClass.distribuzioneAree.Where(o => o.area.Equals("Ris")).FirstOrDefault() != null ? datiSeiUnico.patrimonioUnit().patrimonioCasa.assetClass.distribuzioneAree.Where(o => o.area.Equals("Ris")).FirstOrDefault().distribuzione
: null : datiSeiUnico.patrimonioUnit().patrimonioCasa.macroAssetClass.distribuzioneAree.Where(o => o.area.Equals("Ris")).FirstOrDefault() != null ? datiSeiUnico.patrimonioUnit().patrimonioCasa.macroAssetClass.distribuzioneAree.Where(o => o.area.Equals("Ris")).FirstOrDefault().distribuzione : null;
var gradoCoperturaAllocation = distribuzione != null ? distribuzione.coverageCC * 100 : 0;
var prodottinonrapp = distribuzione != null ? distribuzione.totaleNonRappr : 0;
string nota = "";
if (gradoCoperturaAllocation < 100)
{
string var = isAssetClass() ? "asset" : "macro asset";
nota += string.Format("Grado di copertura (%) della rappresentazione grafica per " + var + " allocation pari a {0}", Helper.FormatDecimal(gradoCoperturaAllocation.ToString(), 2))
+ (prodottinonrapp > 0 ? string.Format(": non sono considerati i prodotti non rappresentabili ({0}).", Helper.FormatDecimal(prodottinonrapp.ToString(), 2)) : ". ");
}
if (aderenza != 0 && aderenza != 100)
nota += string.Format(" Portafoglio considerato nel calcolo dell'aderenza (%): {0}.", Helper.FormatDecimal(aderenza.ToString(), 2));
return nota;
}
public virtual string getNota2()
{
var gradoCoperturaVar = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale.aree.FirstOrDefault(o => o.area.Equals("Ris")).progetti.FirstOrDefault().progettoVarInfos.stat.copertura;
string nota = "";
if (gradoCoperturaVar < 100)
{
nota = string.Format("Grado di copertura prodotti in termini di Rischio Mercato (VaR): {0}.", Helper.FormatDecimal(gradoCoperturaVar.ToString(), 2));
}
return nota;
}
//public virtual string getNota3()
//{
// var patrimonioCasa = datiSeiUnico.patrimonioUnit().patrimonioCasa;
// var pianificazione = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale;
// var aderenza = datiSeiUnico.pianificazioneUnit().pianificazioneOrizzontale.Where(l => l.portafoglioModello.area.Equals("Ris")).FirstOrDefault().aderenza.valoreAderenza;
// string nota = "";
// string nota1 = "";
// string nota2 = "";
// if (!isAssetClass())
// {
// if ( patrimonioCasa.macroAssetClass.distribuzione.coverageCC != 100)
// {
// nota += string.Format("Grado di copertura (%) della rappresentazione grafica per macro asset allocation pari a {0}",Helper.FormatDecimal(patrimonioCasa.macroAssetClass.distribuzione.coverageCC.ToString(), 2));
// nota1 += patrimonioCasa.macroAssetClass.distribuzione.totaleNonRappr > 0 ? string.Format(": non sono considerati i prodotti non rappresentabili ({0} €)",Helper.FormatCurrency(patrimonioCasa.macroAssetClass.distribuzione.totaleNonRappr.ToString())) : "";
// }
// }
// else
// {
// if ( patrimonioCasa.assetClass.distribuzione.coverageCC != 100)
// {
// nota += string.Format("Grado di copertura (%) della rappresentazione grafica per asset allocation pari a {0}", Helper.FormatDecimal(patrimonioCasa.assetClass.distribuzione.coverageCC.ToString(), 2));
// nota1 += patrimonioCasa.assetClass.distribuzione.totaleNonRappr > 0 ? string.Format(": non sono considerati i prodotti non rappresentabili ({0} €).",Helper.FormatCurrency(patrimonioCasa.assetClass.distribuzione.totaleNonRappr.ToString())) : ".";
// }
// }
// if (aderenza > 0)
// {
// nota2 += "Portafoglio considerato nel calcolo dell'aderenza (%): {0}.";
// nota2 = string.Format(nota2, Helper.FormatCurrency(aderenza.ToString()));
// }
// return nota + nota1 + nota2;
//}
//public virtual string getNota2()
//{
// // Nota Grado Copertura
// var gradoCopertura = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale.varInfos.stat.copertura;
// string nota = "";
// if (gradoCopertura < 100)
// {
// if (getNota1().Length > 0 && getNota3().Length > 0)
// nota += "(**) Grado di copertura prodotti in termini di Rischio Mercato (VaR): {0}.";
// else
// nota += "Grado di copertura prodotti in termini di Rischio Mercato (VaR): {0}.";
// nota = string.Format(nota, Helper.FormatDecimal(gradoCopertura.ToString(), 2));
// }
// return nota;
//}
//public virtual string getNota1()
//{
// // Nota Portafoglio Consigliato
// var patrimonioCasa = datiSeiUnico.patrimonioUnit().patrimonioCasa;
// var pianificazione = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale;
// string nota = "";
// string nota1 = "";
// if (!isAssetClass())
// {
// if (patrimonioCasa.macroAssetClass.distribuzione.coverageCC < 100)
// {
// nota += "Grado di copertura (%) della rappresentazione grafica per macro asset allocation pari a {0}: ";
// nota1 += "non sono considerati i prodotti non rappresentabili ({0} €).";
// nota = string.Format(nota, Helper.FormatDecimal(patrimonioCasa.macroAssetClass.distribuzione.coverageCC.ToString(), 2));
// nota1 = string.Format(nota1, Helper.FormatCurrency(patrimonioCasa.macroAssetClass.distribuzione.totaleNonRappr.ToString()));
// }
// }
// else
// {
// if (patrimonioCasa.assetClass.distribuzione.coverageCC < 100)
// {
// nota += "Grado di copertura (%) della rappresentazione grafica per asset allocation pari a {0}: ";
// nota1 += "non sono considerati i prodotti non rappresentabili ({0} €).";
// nota = string.Format(nota, Helper.FormatDecimal(patrimonioCasa.macroAssetClass.distribuzione.coverageCC.ToString(), 2));
// nota1 = string.Format(nota1, Helper.FormatCurrency(patrimonioCasa.macroAssetClass.distribuzione.totaleNonRappr.ToString()));
// }
// }
// return nota + nota1;
//}
//public virtual string getNoteCompleto(bool nota3)
//{
// string nota = "";
// if (getNota3().Length > 0)
// nota = getNota3() + (getNota2().Length > 0 ? "
" : "");
// else
// nota = getNota1() + (getNota2().Length > 0 ? "
" : "");
// if (getNota2().Length > 0)
// nota += getNota2();
// return nota;
//}
private int GetNumericStringWidth(string number)
{
int width = 0;
foreach (char s in number)
{
if (s == '.' || s == ',')
{
width += 1;
}
else if (s == '%')
{
width += 8;
}
else
{
width += 5;
}
}
return width;
}
}
}