549 lines
29 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using System.Data;
using Consulenza.ReportCommon;
using System.Collections.Generic;
using System.Linq;
using Consulenza.ReportWriter.Business.CHART_PDF;
using Consulenza.ReportWriter.Business.Entity;
using Consulenza.ReportWriter.Business.CUSTOM_PDF;
using Consulenza.DataServices.fideuram.data.service;
namespace Consulenza.ReportWriter.Manager.Section.Unica
{
/// <summary>
/// S46.RischioCreditoVSConcentrazionePatrimonioAltriIstituti idSezione = 89
/// </summary>
public class S46 : Entity.Section
{
public S46(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S46", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
}
}
protected override sealed void Draw()
{
var dati = GetDataSet();
#region Modifiche 20190628 per Evolutiva
string sVerticalText;
if (EnvironmentFacade.ReportEnvironment.ReportType.Equals(ReportType.Unica_Nucleo))
{
sVerticalText = "";
}
else
{
sVerticalText = "Le eventuali informazioni riguardanti investimenti da lei detenuti presso altri intermediari vengono elaborate secondo le indicazioni da lei ";
if (EnvironmentFacade.ReportEnvironment.PrivateBanker.CodiceRete.Equals("F"))
{
sVerticalText = sVerticalText + "fornite e/ o disponibili sul mercato, per le quali Fideuram non garantisce la completezza e la veridicità. ";
sVerticalText = sVerticalText + "La preghiamo di comunicare a Fideuram ogni successiva variazione a tali informazioni, al fine di consentire a Fideuram la correzione e laggiornamento dei dati contenuti ";
sVerticalText = sVerticalText + "nel presente report.Gli investimenti detenuti presso altri intermediari vengono utilizzati da Fideuram con finalità meramente informative e secondo le indicazioni da lei fornite, ";
sVerticalText = sVerticalText + "in modo da offrire una rappresentazione unitaria degli investimenti, senza con ciò formare oggetto di raccomandazioni personalizzate o di rendicontazione ufficiale.";
}
else
{
sVerticalText = sVerticalText + "fornite e/ o disponibili sul mercato, per le quali Sanpaolo Invest SIM non garantisce la completezza e la veridicità. ";
sVerticalText = sVerticalText + "La preghiamo di comunicare a Sanpaolo Invest SIM ogni successiva variazione a tali informazioni, al fine di consentire a Sanpaolo Invest SIM la correzione e laggiornamento dei dati contenuti ";
sVerticalText = sVerticalText + "nel presente report.Gli investimenti detenuti presso altri intermediari vengono utilizzati da Sanpaolo Invest SIM con finalità meramente informative e secondo le indicazioni da lei fornite, ";
sVerticalText = sVerticalText + "in modo da offrire una rappresentazione unitaria degli investimenti, senza con ciò formare oggetto di raccomandazioni personalizzate o di rendicontazione ufficiale.";
}
}
FormattedTextAreaPDF testoPaginaVerticale = null;
testoPaginaVerticale = new FormattedTextAreaPDF(sVerticalText, EnvironmentFacade.RendererFacade.XLeftLimit - 35, 620)
{
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify,
FontSize = 5,
TextVerticalDirection = true,
Y = 745
};
var listaOggettiDaRipetere = new List<ObjectPDF> { testoPaginaVerticale };
AddElement(listaOggettiDaRipetere);
AddElement(new RepeaterPDF(listaOggettiDaRipetere));
#endregion
var series = new List<Serie>();
if (presenzaTabellaClassificazione())
{
#region Tabella delle categorie
#region Testo introduttivo
//AddElement(new SpacePDF(20));
AddElement(new SpacePDF(-5));
//BugFix #3691 aggiungere allineamento "justify"
AddElement(new FormattedTextAreaPDF(getTesto1(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify});
AddElement(new SpacePDF(15));
#endregion
#region Tabella
DataTable dt = new DataTable();
dt = dati.Tables["categoriaRischioCredito"].AsEnumerable().OrderByDescending(r => r.Field<int>("Ordinamento")).CopyToDataTable();
var tabellaCategorie = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dt, dati.Tables["categoriaRischioCreditoFooter"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = true,
MinimumRowHeight = 20
};
tabellaCategorie.IndexesOfSeparatorsToIgnore.Add(3);
#region Columns e FooterColumns
//tabellaCategorie.Columns.Add(new ColumnPDF("Oggetto", 25, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, "Oggetto", string.Empty) { DeltaYContent = 5 });
tabellaCategorie.Columns.Add(new ColumnPDF("Categoria", 165, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, "DescrizioneCategoria", "Categoria") { HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.FooterColumns.Add(new ColumnPDF("Colonna1", tabellaCategorie.Columns.Sum(o => o.Width), HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo) { FontSize = 7 });
tabellaCategorie.Columns.Add(new ColumnPDF("Controvalore", 90, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvalore", "Controvalore<br>attuale (€)") { HeaderFontSize = 7, FontSize = 7, HeaderPaddingLeft = 12,PaddingRight = 2 });
tabellaCategorie.FooterColumns.Add(new ColumnPDF("Colonna2", 90, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale) { FontSize = 7, PaddingRight = 1 });
tabellaCategorie.Columns.Add(new ColumnPDF("RischioCredito", 90, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Testo, "RischioCredito", "Rischio Credito") { HeaderFontSize = 7,FontSize=7, HeaderPaddingLeft = 4, PaddingRight = 4});
tabellaCategorie.FooterColumns.Add(new ColumnPDF("Colonna3", 90, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo) { FontSize = 7 });
tabellaCategorie.Columns.Add(new ColumnPDF("PesoObject", 175, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, "Peso", "") { DeltaYContent = 5, PaddingLeft = 10, HeaderBackgroundColor = ColorPDF.Bianco });
int a = 0;
foreach (var item in dati.Tables["categoriaRischioCredito"].Rows)
{
tabellaCategorie.Cells[1, a].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaCategorie.Cells[2, a].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaCategorie.Cells[3, a].HorizontalAlignment = HorizontalAlignmentType.Destra;
a++;
}
#endregion
#region Cells
int i = 0;
var list = new List<double>();
list.Add(Convert.ToDouble(tabellaCategorie.DataSource.AsEnumerable().Max(x => x["Peso"])));
var valoreMassimo = (float)Helper.Round(list.Max());
float larghezzaBarra = 0;
float larghezzaSpazioTestoPercentuale = 0;
float larghezzaMinimaSpazioTestoPercentuale = 35;
float deltaXBarra = 0;
foreach (DataRow row in tabellaCategorie.DataSource.Rows)
{
var colore = new ColorPDF(row["CodiceHex"].ToString());
// Pallino
//tabellaCategorie.Cells[0, i].ValueObject = new CirclePDF(13, 13, colore);
tabellaCategorie.Cells[0, i].ValueObjectList = new List<Business.Entity.ObjectPDF>()
{
new CirclePDF(11, 11, colore){ DeltaY = 5},
new FormattedTextAreaPDF(row["DescrizioneCategoria"].ToString(), 0)
{
DeltaY = 3,
DeltaX = 15,
FontSize = 7
}
};
#region barra colonna Peso
larghezzaBarra = Helper.GetWidthProportional((float)Convert.ToDecimal(row["Peso"]), valoreMassimo, tabellaCategorie.Columns[3].Width - 50);
larghezzaSpazioTestoPercentuale = tabellaCategorie.Columns[3].Width - larghezzaBarra;
deltaXBarra = larghezzaBarra + 10;
if (larghezzaSpazioTestoPercentuale < larghezzaMinimaSpazioTestoPercentuale)
{
deltaXBarra = (tabellaCategorie.Columns[3].Width - larghezzaMinimaSpazioTestoPercentuale);
larghezzaSpazioTestoPercentuale = larghezzaMinimaSpazioTestoPercentuale;
}
if (Convert.ToDecimal(row["Peso"]) != 0)
{
tabellaCategorie.Cells[3, i].ValueObjectList = new List<Business.Entity.ObjectPDF>()
{
new RectanglePDF(12, larghezzaBarra, colore),
new FormattedTextAreaPDF(Helper.FormatPercentage(Convert.ToDecimal(row["Peso"]), 2), 0, larghezzaSpazioTestoPercentuale)
{
DeltaY = 1,
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left,
DeltaX = deltaXBarra,
FontSize = 7
}
};
}
else
{
tabellaCategorie.Cells[3, i].ValueObjectList = new List<Business.Entity.ObjectPDF>()
{
// //new FormattedTextAreaPDF(Helper.FormatPercentage(Convert.ToDecimal(row["Peso"]), 2), deltaXBarra)
// //{
// // DeltaY = 2,
// // TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left,
// // DeltaX = 0,
// // FontSize = 7
// //},
new RectanglePDF(12, 3 , ColorPDF.Bianco){DeltaY = 3}
};
}
#endregion
i++;
}
#endregion
AddElement(tabellaCategorie);
#endregion
AddElement(new SpacePDF(10));
#endregion
}
//BugFix #3631 Spostamento del testo prima dei grafici.
if (presenzaGraficoTabellaEmittenti() && dati.Tables["emittente"].Rows.Count > 0)
{
#region Testo introduttivo
if (presenzaTabellaClassificazione())
AddElement(new SpacePDF(10));
else
AddElement(new SpacePDF(20));
AddElement(new FormattedTextAreaPDF(getTesto2(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
AddElement(new SpacePDF(7));
#endregion
#region Grafico Rischio credito vs Concentrazione
#region Etichetta Rischio Credito
AddElement(new FormattedTextAreaPDF("Rischio Credito", EnvironmentFacade.RendererFacade.XLeftLimit + 71) { FontBold = true, FontSize = 7 });
AddElement(new SpacePDF(7));
#endregion
var graficoCombination = new CombinationPDF(EnvironmentFacade.RendererFacade.XLeftLimit + 100, 1F)
{
Height = 160,
Width = 310,
BackImage = "ChartGradient_RischioCreditoConcentrazionesmallscritte2.png",
MarginAxisY = 0,
ShowLineAxisY = true,
ShowLabelAxisY = true,
LabelFormatAxisY = FormatType.Intero,
IntervalNumberAxisY = 10,
StartFromZeroAxisY = true,
MaximumValueAxisY = 10, // valore fisso
LabelFormatAxisX = FormatType.Intero,
ShowLineAxisX = true,
ShowLabelAxisX = true,
StartFromZeroAxisX = true,
IntervalNumberAxisX = 10,
MaximumValueAxisX = 100,
};
var d = dati.Tables["emittente"].AsEnumerable().OrderByDescending(o => o.Field<int>("IdEmittente")).CopyToDataTable();
// creo le Serie
foreach (DataRow item in d.Rows)
{
int i = 0;
string rischio;
string[] rischioCredito = item["RischioCredito"].ToString().Split('-');
foreach (var r in rischioCredito)
{
//if (r.Contains("n.c."))
// rischio = "0";
//else
rischio = r;
i++;
series.Add(
new Serie
{
Name = item["IdEmittente"].ToString()+"."+i,
Type = Dundas.Charting.WebControl.SeriesChartType.Point,
MarkerImage = string.Format("Pallino{0}c.png", item["IdEmittente"].ToString()),
Points = new List<Point>() {
new Point {
Values = new ValuesPointXY(Convert.ToDouble(item["Concentrazione"]), Convert.ToDouble(rischio)),
ShowLabelAxisY = false,
ShowLabelAxisX = false,
Visible = false
}
}
}
);
// adding element to new Markers feature
graficoCombination.Markers.Add(new Marker()
{
Image = string.Format("Pallino{0}c.png", item["IdEmittente"].ToString()),
Width = 16,
Height = 16,
Scale = 1,
X = (float)Convert.ToDouble(item["Concentrazione"]),
Y = (float)Convert.ToDouble(rischio)
});
}
}
// aggiungo le Serie al grafico
graficoCombination.SeriesCollection = series;
AddElement(graficoCombination);
//AddElement(new FormattedTextAreaPDF("Area di pericolo", EnvironmentFacade.RendererFacade.XLeftLimit + 370) { Y = 400, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true });
//AddElement(new FormattedTextAreaPDF("Area di equilibrio", EnvironmentFacade.RendererFacade.XLeftLimit + 235) { Y = 490, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true });
//AddElement(new FormattedTextAreaPDF("Area di sicurezza", EnvironmentFacade.RendererFacade.XLeftLimit + 110) { Y = 570, FontSize = 7, FontBold = true, FontColor = ColorPDF.Bianco, AbsolutePosition = true });
#region Etichetta Concentrazione
AddElement(new SpacePDF(20));
AddElement(new FormattedTextAreaPDF("Concentrazione (%)", EnvironmentFacade.RendererFacade.XLeftLimit + 235) { FontBold = true, FontSize = 7 });
AddElement(new SpacePDF(20));
#endregion
#endregion
#region Tabella emittenti
#region Tabella
var tabella = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["emittente"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = true,
RowHeight = 18,
Footer = false,
HeaderHeight = 25
};
//BugFix #3616 - Aumento dimensioni di "Concentrazione"
tabella.Columns.Add(new ColumnPDF("ImmagineEmittente", 25, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Immagine, "ImmagineEmittente", string.Empty) { DeltaYContent = 3, ScaleColumnTypeImage = 0.55F });
tabella.Columns.Add(new ColumnPDF("DescrizioneEmittente", 140, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "DescrizioneEmittente", "Emittente") { HeaderFontSize = 7, FontSize = 7 });
tabella.Columns.Add(new ColumnPDF("ControvaloreObbligazionario", 90, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvaloreObbligazionario", "Controvalore<br>obbligazionario (€)") { HeaderFontSize = 7, FontSize = 7, HeaderPaddingLeft = 12 });
tabella.Columns.Add(new ColumnPDF("ControvaloreAzionario", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvaloreAzionario", "Controvalore<br>azionario (€)") { HeaderFontSize = 7, FontSize = 7, HeaderPaddingLeft = 24 });
tabella.Columns.Add(new ColumnPDF("Concentrazione", 75, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Concentrazione", "Concentrazione<br>(%)") { HeaderFontSize = 7, FontSize = 7, HeaderPaddingLeft = 8 });
tabella.Columns.Add(new ColumnPDF("RischioCredito", 60, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "RischioCreditoString", "Rischio<br>Credito") { HeaderFontSize = 7, FontSize = 7, HeaderPaddingLeft = 20 });
tabella.Columns.Add(new ColumnPDF("Rating", 45, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Testo, "Rating", "Rating") { HeaderFontSize = 7, FontSize = 7 });
int j = 0;
foreach (var item in dati.Tables["emittente"].Rows)
{
tabella.Cells[2, j].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabella.Cells[3, j].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabella.Cells[4, j].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabella.Cells[5, j].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabella.Cells[6, j].HorizontalAlignment = HorizontalAlignmentType.Centrato;
j++;
}
AddElement(tabella);
#endregion
#endregion
}
}
/// <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()
{
#region Definizione dataset
var ds = new DataSet();
ds.Tables.Add(new DataTable("categoriaRischioCredito"));
ds.Tables.Add(new DataTable("categoriaRischioCreditoFooter"));
ds.Tables.Add(new DataTable("emittente"));
#endregion
#region Estrazione Unit
var rischioCreditoConcentrazione = datiSeiUnico.rischioUnit().rischio.rischioCreditoConcetrazione;
var categorie = rischioCreditoConcentrazione.patrimonioAltriIstituti.elencoSlice.ToList().FindAll(o => o.sliceRappresentabile == true);
var listPosizioni = new List<rsPosizioneLight>();
foreach (var item in datiSeiUnico.rischioUnit().rischio.rischioCreditoConcetrazione
.patrimonioAltriIstituti.elencoSlice.ToList()
.FindAll(o => o.sliceRappresentabile == false))
{
listPosizioni.Add(new rsPosizioneLight
{
ctvPosizione = item.ctv,
rappresentabile = false
});
}
var prodottiNonCoperti = listPosizioni;
var displayInfo = datiSeiUnico.displayInfos().coperturaRischioCreditoInfos.ToList();
string risorseFinanziarieTerzi = datiSeiUnico.patrimonioUnit().patrimonioTerzi.patrimonioTerziBean.risorseFinanziarieTerzi.ToString();
var rischioCreditoDecodificato = datiSeiUnico.rischioUnit().rischio.rischioMercatoCredito.altriIstituti.rischioCreditoDecodificato;//datiSeiUnico.patrimonioUnit().patrimonioTerzi.patrimonioTerziBean.varInfos.rischioCreditoDecodificato;
#endregion
#region Categoria rischio credito
ds.Tables["categoriaRischioCredito"].Columns.Add(new DataColumn("CodiceCategoria", typeof(string)));
ds.Tables["categoriaRischioCredito"].Columns.Add(new DataColumn("DescrizioneCategoria", typeof(string)));
ds.Tables["categoriaRischioCredito"].Columns.Add(new DataColumn("Controvalore", typeof(decimal)));
ds.Tables["categoriaRischioCredito"].Columns.Add(new DataColumn("RischioCredito", typeof(string)));
ds.Tables["categoriaRischioCredito"].Columns.Add(new DataColumn("Peso", typeof(decimal)));
ds.Tables["categoriaRischioCredito"].Columns.Add(new DataColumn("CodiceHex", typeof(string)));
ds.Tables["categoriaRischioCredito"].Columns.Add(new DataColumn("Ordinamento", typeof(Int32)));
foreach (var categoria in categorie)
{
var mapDisplayInfo = displayInfo.FirstOrDefault(o => o.key.Equals(categoria.codice)).value;
DataRow newlyAddedRow = ds.Tables["categoriaRischioCredito"].Rows.Add(
categoria.codice, //CodiceCategoria
categoria.descrizione, //DescrizioneCategoria
categoria.ctvCC, //Controvalore
categoria.codice.ToLower().Equals("sogg") ? ((rischioCreditoDecodificato.ToUpper().Contains("CLASSE") ?
Helper.CapitalizeWords(rischioCreditoDecodificato) : categoria.ctvCC==0? "-" :
rischioCreditoDecodificato)) : "n.a.", //RischioCredito
categoria.pesoCC * 100, //Peso
mapDisplayInfo.fill, //CodiceHex
mapDisplayInfo.order //Ordinamento
);
if (categoria.ctvCC == 0)
{
newlyAddedRow["RischioCredito"] = "-";
}
}
#endregion
#region Footer Categoria rischio credito
var dtFooterCategoriaRischioCredito = new DataTable();
ds.Tables["categoriaRischioCreditoFooter"].Columns.Add(new DataColumn("Colonna1", typeof(string)));
ds.Tables["categoriaRischioCreditoFooter"].Columns.Add(new DataColumn("Colonna2", typeof(decimal)));
ds.Tables["categoriaRischioCreditoFooter"].Columns.Add(new DataColumn("Colonna3", typeof(string)));
ds.Tables["categoriaRischioCreditoFooter"].Columns.Add(new DataColumn("FontBold", typeof(bool)));
ds.Tables["categoriaRischioCreditoFooter"].Columns.Add(new DataColumn("BackgroundGray", typeof(bool)));
if (prodottiNonCoperti.Any() && rischioCreditoConcentrazione.patrimonioAltriIstituti.totaleNonRappr != 0)
{
ds.Tables["categoriaRischioCreditoFooter"].Rows.Add(
"Patrimonio rappresentabile",
rischioCreditoConcentrazione.patrimonioAltriIstituti.totaleRapprCC,
(rischioCreditoDecodificato.ToUpper().Contains("CLASSE") ?
Helper.CapitalizeWords(rischioCreditoDecodificato) :
rischioCreditoDecodificato),
true,
true
);
ds.Tables["categoriaRischioCreditoFooter"].Rows.Add(
"Patrimonio non rappresentabile",
rischioCreditoConcentrazione.patrimonioAltriIstituti.totaleNonRappr,//prodottiNonCoperti.Sum(o => o.ctvPosizione),
"n.c.",
false,
false
);
ds.Tables["categoriaRischioCreditoFooter"].Rows.Add(
"Patrimonio altri Istituti",
rischioCreditoConcentrazione.patrimonioAltriIstituti.totaleCtv,
(rischioCreditoDecodificato.ToUpper().Contains("CLASSE") ?
Helper.CapitalizeWords(rischioCreditoDecodificato) :
rischioCreditoDecodificato),
true,
true
);
}
else
{
ds.Tables["categoriaRischioCreditoFooter"].Rows.Add(
"Patrimonio altri Istituti",
rischioCreditoConcentrazione.patrimonioAltriIstituti.totaleCtv,
(rischioCreditoDecodificato.ToUpper().Contains("CLASSE") ?
Helper.CapitalizeWords(rischioCreditoDecodificato) :
rischioCreditoDecodificato),
true,
true
);
}
#endregion
#region Rischio credito - concentrazione per emittente
ds.Tables["emittente"].Columns.Add(new DataColumn("IdEmittente", typeof(int)));
ds.Tables["emittente"].Columns.Add(new DataColumn("ImmagineEmittente", typeof(string)));
ds.Tables["emittente"].Columns.Add(new DataColumn("DescrizioneEmittente", typeof(string)));
ds.Tables["emittente"].Columns.Add(new DataColumn("ControvaloreObbligazionario", typeof(decimal)));
ds.Tables["emittente"].Columns.Add(new DataColumn("ControvaloreAzionario", typeof(decimal)));
ds.Tables["emittente"].Columns.Add(new DataColumn("Concentrazione", typeof(decimal)));
ds.Tables["emittente"].Columns.Add(new DataColumn("RischioCredito", typeof(string)));
ds.Tables["emittente"].Columns.Add(new DataColumn("RischioCreditoString", typeof(string)));
ds.Tables["emittente"].Columns.Add(new DataColumn("Rating", typeof(string)));
var emittenti = rischioCreditoConcentrazione.elencoEmittentiAltriIstituti.ToList().OrderByDescending(o => o.concentrazione).Take(5);
var i = 0;
foreach (var emittente in emittenti)
{
i++;
if (emittente.rischioCredito == "n.c." || emittente.rischioCredito == "n.a.")
{
emittente.rischioCreditoValue = 0;
emittente.listaRischioCredito[0] = 0;
}
ds.Tables["emittente"].Rows.Add(
i, //IdEmittente
string.Format("Pallino{0}.png", i), //ImmaginePatrimonio
emittente.emittente, //DescrizioneEmittente
emittente.ctvObbligazionario, //ControvaloreObbligazionario
emittente.ctvAzionario, //ControvaloreAzionario
emittente.concentrazione * 100, //Concentrazione
emittente.listaRischioCredito != null ? String.Join("-", emittente.listaRischioCredito) : "0", //RischioCredito
emittente.rischioCredito, //RischioCreditoString
emittente.rating //Rating
);
}
#endregion
return ds;
}
public virtual bool presenzaTabellaClassificazione()
{
return GetOption<Opzione4_1>().Valore;
}
public virtual bool presenzaGraficoTabellaEmittenti()
{
return GetOption<Opzione4_2>().Valore;
}
public virtual string getTesto1()
{
return Helper.ReplaceVariables(GetText().Rows[0]["testo2"].ToString(), EnvironmentFacade.ReportEnvironment);
}
public virtual string getTesto2()
{
return Helper.ReplaceVariables(GetText().Rows[0]["testo1"].ToString(), EnvironmentFacade.ReportEnvironment);
}
}
}