using System;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using Consulenza.ReportWriter.Business.Entity;
using System.Data;
using Consulenza.ReportCommon;
using Consulenza.ReportWriter.Manager.Integration;
using System.Collections.Generic;
using System.Linq;
using Consulenza.ReportWriter.Business.CUSTOM_PDF.ConsulenzaUnica;
namespace Consulenza.ReportWriter.Manager.Section.Unica
{
///
///S31.PatrimonioAltriIstitutiDettaglioProdotti idSezione = 74
///
public class S31 : Entity.Section
{
//FINIRE IL DRAW: FOOTER DI ENTRAMBI E CONTROLLARE IL RAGGRUPPAMENTO PER CATEGORIE
public string NomeIntermediario { get; set; }
bool notaproxy;
private List _elencocategorie = new List();
public S31(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S31", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
}
}
//protected override sealed void OLD_Draw()
//{
// var dati = GetDataSet();
// TablePDF tabellaCategorie = null;
// #region Raggruppamento per Categoria
// if (raggruppamentoCategoria())
// {
// AddElement(new PagePDF(PagePDF.PagePDFType.Generic) { ID="pagina1"});
// var intestazione = new SectionHeadingPDF(
// getTitolo(),
// EnvironmentFacade.RendererFacade.XLeftLimit,
// EnvironmentFacade.RendererFacade.YUpperLimit,
// EnvironmentFacade.ReportEnvironment.FontFamily);
// AddElement(intestazione.ToElement());
// AddElement(new SpacePDF(20));
// AddElement(new FormattedTextAreaPDF(getTestoIntro(), EnvironmentFacade.RendererFacade.XLeftLimit) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, FontSize = 7 });
// AddElement(new SpacePDF(15));
// DataView view = new DataView(dati.Tables["categorie"].AsEnumerable().OrderBy(o => o.Field("Ordinamento")).CopyToDataTable());
// DataTable dtCategoria = view.ToTable(true, "Categoria");
// DataTable dtFinale = new DataTable();
// dtFinale.Columns.Add("Categoria", typeof(string));
// dtFinale.Columns.Add("Intermediario", typeof(string));
// dtFinale.Columns.Add("ChiaveProdotto", typeof(string));
// dtFinale.Columns.Add("NomeProdotto", typeof(string));
// dtFinale.Columns.Add("Controvalore", typeof(string));
// dtFinale.Columns.Add("Versatonetto", typeof(string));
// dtFinale.Columns.Add("Utileperdita", typeof(string));
// dtFinale.Columns.Add("Rischiocredito", typeof(string));
// dtFinale.Columns.Add("VaR", typeof(string));
// foreach (DataRow it in dati.Tables["categorie"].Rows)
// {
// dtFinale.Rows.Add(it["Categoria"].ToString(), it["Intermediario"].ToString(), it["ChiaveProdotto"].ToString(), it["NomeProdotto"].ToString(), it["Controvalore"].ToString(), it["Versatonetto"].ToString(), it["Utileperdita"].ToString(), it["Rischiocredito"].ToString(), it["VaR"].ToString());
// }
// for (int i = 0; i < dtCategoria.Rows.Count; i++)
// {
// var categoria = dtFinale.Select("Categoria ='" + dtCategoria.Rows[i]["Categoria"].ToString() + "'").CopyToDataTable();// : dati.Tables[0].Select("Categoria ='" + p["Categoria"].ToString() + "' AND Intermediario='" + p["Intermediario"].ToString() + "'").CopyToDataTable();
// var footer = dati.Tables["categorieFooter"].AsEnumerable().Where(o => o.Field("Categoria").Contains(dtCategoria.Rows[i]["Categoria"].ToString())).CopyToDataTable();
// bool notaproxyCat = categoria.AsEnumerable().Any(o => o.Field("ChiaveProdotto").ToString() == "0");
// decimal copertura = Convert.ToDecimal(footer.Rows[0]["Copertura"]);
// bool notaGrado = getNota1(copertura).Length > 0;
// string testoNotaGrado = getNota1(copertura);
// bool presenzaAsterischiProxy = categoria.AsEnumerable().Any(o => o.Field("VaR").ToString().Contains(notaGrado ? "**" : "*"));
// string testoNotaProxy = notaproxyCat ? getNotaProxyVar() : "";
// bool tuttivarnc = categoria.AsEnumerable().All(o => o.Field("VaR").ToString() == "n.c." || o.Field("VaR").ToString() == "0,00" || o.Field("Categoria").ToString().ToLower().Contains("conti"));
// tabellaCategorie = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, categoria, footer)
// {
// Style = Style.ConsulenzaUnica,
// Footer = true,
// AlternateRow = false,
// ShowBorderLastLine = false,
// HeaderHeight = 22,
// //MinimumRowHeight = 27,
// //RowHeight = 27,
// HeaderFontSize = 7,
// ID=dtCategoria.Rows[i]["Categoria"].ToString(),
// TitleRow = true,
// TitleRowText = dtCategoria.Rows[i]["Categoria"].ToString(),
// TitleRowBorder = BorderTitleRowType.Nessuno,
// TitleRowSpace = 15,
// //,
// PageBreak=true
// };
// tabellaCategorie.Columns.Add(new ColumnPDF("Intermediario", 105, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Intermediario", "Intermediario") { PaddingRight = 3, HeaderFontSize = 7, FontSize = 7 });
// tabellaCategorie.Columns.Add(new ColumnPDF("NomeProdotto", 120, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "NomeProdotto", "Descrizione") { PaddingRight = 3, HeaderFontSize = 7, FontSize = 7 });
// tabellaCategorie.Columns.Add(new ColumnPDF("Controvaloreattuale", 65, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvalore", "Controvalore
attuale (€)") { PaddingRight = 3, HeaderPaddingLeft = 5, HeaderFontSize = 7, FontSize = 7 });
// tabellaCategorie.Columns.Add(new ColumnPDF("Versatonetto", 65, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Versatonetto", "Versato
netto (€)") { PaddingRight = 3, HeaderPaddingLeft = 7, HeaderFontSize = 7, FontSize = 7 });
// tabellaCategorie.Columns.Add(new ColumnPDF("Utileperdita", 65, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Utileperdita", "Utile/
Perdita (€)") { PaddingRight = 3, HeaderPaddingLeft = 7, HeaderFontSize = 7, FontSize = 7 });
// tabellaCategorie.Columns.Add(new ColumnPDF("Rischiocredito", 60, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Rischiocredito", "Rischio
Credito") { HeaderFontSize = 7, HeaderPaddingLeft = 4, FontSize = 7, PaddingLeft = 4});
// tabellaCategorie.Columns.Add(new ColumnPDF("VaR", 40, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "VaR", "VaR (%)") { HeaderPaddingLeft = 4, PaddingRight = 4, HeaderFontSize = 7, FontSize = 7 });
// int a = 0;
// foreach (var item in categoria.Rows)
// {
// tabellaCategorie.Cells[2, a].HorizontalAlignment = HorizontalAlignmentType.Destra;
// tabellaCategorie.Cells[3, a].HorizontalAlignment = HorizontalAlignmentType.Destra;
// tabellaCategorie.Cells[4, a].HorizontalAlignment = HorizontalAlignmentType.Destra;
// tabellaCategorie.Cells[5, a].HorizontalAlignment = HorizontalAlignmentType.Destra;
// tabellaCategorie.Cells[6, a].HorizontalAlignment = HorizontalAlignmentType.Destra;
// a++;
// }
// tabellaCategorie.FooterColumns.Add(new ColumnPDF("Totale", 225, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo) { HeaderFontSize = 7, FontSize = 7 });
// tabellaCategorie.FooterColumns.Add(new ColumnPDF("Controvaloreattuale", 65, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 3, HeaderFontSize = 7, FontSize = 7 });
// tabellaCategorie.FooterColumns.Add(new ColumnPDF("Versatonetto", 65, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 3, HeaderFontSize = 7, FontSize = 7 });
// tabellaCategorie.FooterColumns.Add(new ColumnPDF("Utileperdita", 65, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 3, HeaderFontSize = 7, FontSize = 7 });
// tabellaCategorie.FooterColumns.Add(new ColumnPDF("Rischiocredito", 60, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { HeaderFontSize = 7, FontSize = 7});
// tabellaCategorie.FooterColumns.Add(new ColumnPDF("VaRfooter", 40, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 2, HeaderFontSize = 7, FontSize = 7 });
// AddElement(tabellaCategorie);
// if (notaGrado)
// {
// AddElement(new SpacePDF(10));
// AddElement(new FormattedTextAreaPDF("(*) " +testoNotaGrado, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
// }
// if (notaproxyCat && !tuttivarnc && presenzaAsterischiProxy)
// {
// AddElement(new SpacePDF(7));
// string ast = notaGrado ? "(**) " : "(*) ";
// AddElement(new FormattedTextAreaPDF(ast + testoNotaProxy, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
// }
// AddElement(new SpacePDF(8));
// }
// }
// #endregion
// #region stampa per intermediari
// else
// {
// for (int i = 0; i < dati.Tables["Intermediari"].Rows.Count; i++)
// {
// NomeIntermediario = "«" + dati.Tables["Intermediari"].Rows[i]["NomeIntermediario"].ToString()+"»";
// AddElement(new PagePDF(PagePDF.PagePDFType.Generic));
// var intestazione = new SectionHeadingPDF(
// string.Format(getTitolo(), NomeIntermediario),
// EnvironmentFacade.RendererFacade.XLeftLimit,
// EnvironmentFacade.RendererFacade.YUpperLimit,
// EnvironmentFacade.ReportEnvironment.FontFamily);
// AddElement(intestazione.ToElement());
// AddElement(new SpacePDF(20));
// AddElement(new FormattedTextAreaPDF(getTestoIntro(), EnvironmentFacade.RendererFacade.XLeftLimit) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, FontSize = 7 });
// //DataView view = new DataView(dati.Tables["categorie" + i]);
// DataView view = new DataView(dati.Tables["categorie" + i].AsEnumerable().OrderBy(o => o.Field("Ordinamento")).CopyToDataTable());
// DataView view2 = new DataView(dati.Tables["footer" + i]);
// DataTable dtCategoria = view.ToTable(true, "Categoria");
// DataTable dtCategoriaFooter = view2.ToTable(true, "Copertura", "CategoriaString");
// DataTable dtFinale = new DataTable();
// dtFinale.Columns.Add("Categoria", typeof(string));
// // dtFinale.Columns.Add("Intermediario", typeof(string));
// dtFinale.Columns.Add("ChiaveProdotto", typeof(string));
// dtFinale.Columns.Add("NomeProdotto", typeof(string));
// dtFinale.Columns.Add("Controvalore", typeof(string));
// dtFinale.Columns.Add("Versatonetto", typeof(string));
// dtFinale.Columns.Add("Utileperdita", typeof(string));
// dtFinale.Columns.Add("Rischiocredito", typeof(string));
// dtFinale.Columns.Add("VaR", typeof(string));
// foreach (DataRow it in dati.Tables["categorie"+i].Rows)
// {
// dtFinale.Rows.Add(it["Categoria"].ToString(),it["ChiaveProdotto"].ToString(), it["NomeProdotto"].ToString(), it["Controvalore"].ToString(), it["Versatonetto"].ToString(), it["Utileperdita"].ToString(), it["Rischiocredito"].ToString(), it["VaR"].ToString());
// }
// for (int b = 0; b < dtCategoria.Rows.Count; b++)
// {
// //for (int c = 0; c < dtCategoriaFooter.Rows.Count; c++)
// {
// var categoria = dtFinale.Select("Categoria ='" + dtCategoria.Rows[b]["Categoria"].ToString() + "'").CopyToDataTable();// : dati.Tables[0].Select("Categoria ='" + p["Categoria"].ToString() + "' AND Intermediario='" + p["Intermediario"].ToString() + "'").CopyToDataTable();
// var footer = dati.Tables["footer" + i].AsEnumerable().Where(o => o.Field("Categoria").Contains(dtCategoria.Rows[b]["Categoria"].ToString())).CopyToDataTable();
// var coperturaNota = dtCategoriaFooter.AsEnumerable().FirstOrDefault(o => o.Field("CategoriaString").Contains(dtCategoria.Rows[b]["Categoria"].ToString()));
// bool notaproxyCat = categoria.AsEnumerable().Any(o => o.Field("ChiaveProdotto").ToString() == "0");
// bool tuttivarnc = categoria.AsEnumerable().All(o => o.Field("VaR").ToString() == "n.c." || o.Field("VaR").ToString() == "0,00" || o.Field("Categoria").ToString().ToLower().Contains("conti"));
// string testoNotaProxy = notaproxyCat ? getNotaProxyVar() : "";
// decimal copertura = Convert.ToDecimal(footer.Rows[0]["Copertura"]);
// bool notaGrado = getNota1(copertura).Length > 0;
// string testoNotaGrado = notaGrado ? getNota1(copertura) : "";
// bool presenzaAsterischiProxy = categoria.AsEnumerable().Any(o => o.Field("VaR").ToString().Contains(notaGrado ? "**" : "*"));
// AddElement(new SpacePDF(b > 0 ? 10 : 1));
// //AddElement(new FormattedTextAreaPDF(dtCategoria.Rows[i]["Categoria"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 9, FontBold = true });
// //AddElement(new SpacePDF(10));
// tabellaCategorie = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, categoria, footer)
// {
// Style = Style.ConsulenzaUnica,
// Footer = true,
// AlternateRow = false,
// ShowBorderLastLine = false,
// HeaderHeight = 22,
// //MinimumRowHeight = 27,
// RowHeight = 17,
// HeaderFontSize = 7,
// TitleRow = true,
// TitleRowText = dtCategoria.Rows[b]["Categoria"].ToString(),
// TitleRowBorder = BorderTitleRowType.Nessuno,
// TitleRowSpace = 14
// };
// tabellaCategorie.Columns.Add(new ColumnPDF("NomeProdotto", 200, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "NomeProdotto", "Descrizione") { HeaderFontSize = 7, FontSize = 7 });
// tabellaCategorie.Columns.Add(new ColumnPDF("Controvaloreattuale", 75, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvalore", "Controvalore
attuale (€)") { PaddingRight = 3, HeaderPaddingLeft = 5, HeaderFontSize = 7, FontSize = 7 });
// tabellaCategorie.Columns.Add(new ColumnPDF("Versatonetto", 75, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Versatonetto", "Versato
netto (€)") { PaddingRight = 3, HeaderPaddingLeft = 7, HeaderFontSize = 7, FontSize = 7 });
// tabellaCategorie.Columns.Add(new ColumnPDF("Utileperdita", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Utileperdita", "Utile/
Perdita (€)") { PaddingRight = 3, HeaderPaddingLeft = 7, HeaderFontSize = 7, FontSize = 7 });
// tabellaCategorie.Columns.Add(new ColumnPDF("Rischiocredito", 60, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Rischiocredito", "Rischio
Credito") { HeaderFontSize = 7, HeaderPaddingLeft = 4, FontSize = 7, PaddingLeft = 4 });
// tabellaCategorie.Columns.Add(new ColumnPDF("VaR", 40, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "VaR", "VaR (%)") { HeaderPaddingLeft = 4, PaddingRight = 4, HeaderFontSize = 7, FontSize = 7 });
// int a = 0;
// foreach (var item in categoria.Rows)
// {
// tabellaCategorie.Cells[1, a].HorizontalAlignment =
// tabellaCategorie.Cells[2, a].HorizontalAlignment =
// tabellaCategorie.Cells[3, a].HorizontalAlignment =
// tabellaCategorie.Cells[4, a].HorizontalAlignment =
// tabellaCategorie.Cells[5, a].HorizontalAlignment = HorizontalAlignmentType.Destra;
// a++;
// }
// tabellaCategorie.FooterColumns.Add(new ColumnPDF("Totale", 200, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo) { HeaderFontSize = 7, FontSize = 7 });
// tabellaCategorie.FooterColumns.Add(new ColumnPDF("Controvaloreattuale", 75, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { HeaderFontSize = 7, FontSize = 7, PaddingRight = 3 });
// tabellaCategorie.FooterColumns.Add(new ColumnPDF("Versatonetto", 75, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { HeaderFontSize = 7, FontSize = 7, PaddingRight = 3 });
// tabellaCategorie.FooterColumns.Add(new ColumnPDF("Utileperdita", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { HeaderFontSize = 7, FontSize = 7, PaddingRight = 3 });
// tabellaCategorie.FooterColumns.Add(new ColumnPDF("Rischiocredito", 60, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { HeaderFontSize = 7, FontSize = 7 });
// tabellaCategorie.FooterColumns.Add(new ColumnPDF("VaRfooter", 40, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { HeaderFontSize = 7, FontSize = 7 });
// float y = tabellaCategorie.Y;
// AddElement(tabellaCategorie);
// if (notaGrado)
// {
// AddElement(new SpacePDF(10));
// AddElement(new FormattedTextAreaPDF("(*) " + testoNotaGrado, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
// }
// if (notaproxyCat && !tuttivarnc && presenzaAsterischiProxy)
// {
// AddElement(new SpacePDF(7));
// string ast = notaGrado ? "(**) " : "(*) ";
// AddElement(new FormattedTextAreaPDF(ast + testoNotaProxy, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
// }
// AddElement(new SpacePDF(8));
// }
// }
// }
// }
// #endregion
//}
protected override sealed void Draw()
{
var dati = GetDataSet();
TablePDF tabellaCategorie = null;
// 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 l’aggiornamento 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 l’aggiornamento 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
};
// Fine Modifiche
#region Raggruppamento per Categoria
if (raggruppamentoCategoria())
{
AddElement(new PagePDF(PagePDF.PagePDFType.Generic) { ID = "pagina1" });
var intestazione = new SectionHeadingPDF(
getTitolo(),
EnvironmentFacade.RendererFacade.XLeftLimit,
EnvironmentFacade.RendererFacade.YUpperLimit,
EnvironmentFacade.ReportEnvironment.FontFamily);
AddElement(intestazione.ToElement());
// Modifiche 20190628 per Evolutiva
//AddElement(new SpacePDF(20));
// Fine Modifiche
AddElement(new FormattedTextAreaPDF(getTestoIntro(), EnvironmentFacade.RendererFacade.XLeftLimit) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, FontSize = 7 });
AddElement(new SpacePDF(15));
DataView view = new DataView(dati.Tables["categorie"].AsEnumerable().OrderBy(o => o.Field("Ordinamento")).CopyToDataTable());
DataTable dtCategoria = view.ToTable(true, "Categoria");
DataTable dtFinale = new DataTable();
dtFinale.Columns.Add("Categoria", typeof(string));
dtFinale.Columns.Add("Intermediario", typeof(string));
dtFinale.Columns.Add("ChiaveProdotto", typeof(string));
dtFinale.Columns.Add("NomeProdotto", typeof(string));
dtFinale.Columns.Add("Controvalore", typeof(string));
dtFinale.Columns.Add("Versatonetto", typeof(string));
dtFinale.Columns.Add("Utileperdita", typeof(string));
dtFinale.Columns.Add("Rischiocredito", typeof(string));
dtFinale.Columns.Add("VaR", typeof(string));
foreach (DataRow it in dati.Tables["categorie"].Rows)
{
dtFinale.Rows.Add(it["Categoria"].ToString(), it["Intermediario"].ToString(), it["ChiaveProdotto"].ToString(), it["NomeProdotto"].ToString(), it["Controvalore"].ToString(), it["Versatonetto"].ToString(), it["Utileperdita"].ToString(), it["Rischiocredito"].ToString(), it["VaR"].ToString());
}
for (int i = 0; i < dtCategoria.Rows.Count; i++)
{
var categoria = dtFinale.Select("Categoria ='" + dtCategoria.Rows[i]["Categoria"].ToString() + "'").CopyToDataTable();// : dati.Tables[0].Select("Categoria ='" + p["Categoria"].ToString() + "' AND Intermediario='" + p["Intermediario"].ToString() + "'").CopyToDataTable();
var footer = dati.Tables["categorieFooter"].AsEnumerable().Where(o => o.Field("Categoria").Contains(dtCategoria.Rows[i]["Categoria"].ToString())).CopyToDataTable();
bool notaproxyCat = categoria.AsEnumerable().Any(o => o.Field("ChiaveProdotto").ToString() == "0");
decimal copertura = Convert.ToDecimal(footer.Rows[0]["Copertura"]);
bool notaGrado = getNota1(copertura).Length > 0;
string testoNotaGrado = getNota1(copertura);
bool presenzaAsterischiProxy = categoria.AsEnumerable().Any(o => o.Field("VaR").ToString().Contains(notaGrado ? "**" : "*"));
string testoNotaProxy = notaproxyCat ? getNotaProxyVar() : "";
bool tuttivarnc = categoria.AsEnumerable().All(o => o.Field("VaR").ToString() == "n.c." || o.Field("VaR").ToString() == "0,00" || o.Field("Categoria").ToString().ToLower().Contains("conti"));
tabellaCategorie = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, categoria, footer)
{
Style = Style.ConsulenzaUnica,
Footer = true,
AlternateRow = false,
ShowBorderLastLine = false,
HeaderHeight = 22,
//MinimumRowHeight = 27,
//RowHeight = 27,
HeaderFontSize = 7,
ID = dtCategoria.Rows[i]["Categoria"].ToString(),
TitleRow = true,
TitleRowText = dtCategoria.Rows[i]["Categoria"].ToString(),
TitleRowBorder = BorderTitleRowType.Nessuno,
TitleRowSpace = 15,
//,
PageBreak = true
};
tabellaCategorie.Columns.Add(new ColumnPDF("Intermediario", 105, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Intermediario", "Intermediario") { PaddingRight = 3, HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.Columns.Add(new ColumnPDF("NomeProdotto", 120, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "NomeProdotto", "Descrizione") { PaddingRight = 3, HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.Columns.Add(new ColumnPDF("Controvaloreattuale", 65, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvalore", "Controvalore
attuale (€)") { PaddingRight = 3, HeaderPaddingLeft = 5, HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.Columns.Add(new ColumnPDF("Versatonetto", 65, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Versatonetto", "Versato
netto (€)") { PaddingRight = 3, HeaderPaddingLeft = 7, HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.Columns.Add(new ColumnPDF("Utileperdita", 65, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Utileperdita", "Utile/
Perdita (€)") { PaddingRight = 3, HeaderPaddingLeft = 7, HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.Columns.Add(new ColumnPDF("Rischiocredito", 60, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Rischiocredito", "Rischio
Credito") { HeaderFontSize = 7, HeaderPaddingLeft = 4, FontSize = 7, PaddingLeft = 4 });
tabellaCategorie.Columns.Add(new ColumnPDF("VaR", 40, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "VaR", "VaR (%)") { HeaderPaddingLeft = 4, PaddingRight = 4, HeaderFontSize = 7, FontSize = 7 });
int a = 0;
foreach (var item in categoria.Rows)
{
tabellaCategorie.Cells[2, a].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaCategorie.Cells[3, a].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaCategorie.Cells[4, a].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaCategorie.Cells[5, a].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaCategorie.Cells[6, a].HorizontalAlignment = HorizontalAlignmentType.Destra;
a++;
}
tabellaCategorie.FooterColumns.Add(new ColumnPDF("Totale", 225, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo) { HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.FooterColumns.Add(new ColumnPDF("Controvaloreattuale", 65, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 3, HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.FooterColumns.Add(new ColumnPDF("Versatonetto", 65, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 3, HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.FooterColumns.Add(new ColumnPDF("Utileperdita", 65, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 3, HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.FooterColumns.Add(new ColumnPDF("Rischiocredito", 60, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.FooterColumns.Add(new ColumnPDF("VaRfooter", 40, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 2, HeaderFontSize = 7, FontSize = 7 });
AddElement(tabellaCategorie);
if (notaGrado)
{
AddElement(new SpacePDF(10));
AddElement(new FormattedTextAreaPDF("(*) " + testoNotaGrado, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
}
if (notaproxyCat && !tuttivarnc && presenzaAsterischiProxy)
{
AddElement(new SpacePDF(7));
string ast = notaGrado ? "(**) " : "(*) ";
AddElement(new FormattedTextAreaPDF(ast + testoNotaProxy, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
}
AddElement(new SpacePDF(8));
}
}
#endregion
#region stampa per intermediari
else
{
for (int i = 0; i < dati.Tables["Intermediari"].Rows.Count; i++)
{
NomeIntermediario = "«" + dati.Tables["Intermediari"].Rows[i]["NomeIntermediario"].ToString() + "»";
AddElement(new PagePDF(PagePDF.PagePDFType.Generic));
var intestazione = new SectionHeadingPDF(
string.Format(getTitolo(), NomeIntermediario),
EnvironmentFacade.RendererFacade.XLeftLimit,
EnvironmentFacade.RendererFacade.YUpperLimit,
EnvironmentFacade.ReportEnvironment.FontFamily);
AddElement(intestazione.ToElement());
// Modifiche 20190628 per Evolutiva
//AddElement(new SpacePDF(20));
// Fine Modifiche
AddElement(new FormattedTextAreaPDF(getTestoIntro(), EnvironmentFacade.RendererFacade.XLeftLimit) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, FontSize = 7 });
//DataView view = new DataView(dati.Tables["categorie" + i]);
DataView view = new DataView(dati.Tables["categorie" + i].AsEnumerable().OrderBy(o => o.Field("Ordinamento")).CopyToDataTable());
DataView view2 = new DataView(dati.Tables["footer" + i]);
DataTable dtCategoria = view.ToTable(true, "Categoria");
DataTable dtCategoriaFooter = view2.ToTable(true, "Copertura", "CategoriaString");
DataTable dtFinale = new DataTable();
dtFinale.Columns.Add("Categoria", typeof(string));
// dtFinale.Columns.Add("Intermediario", typeof(string));
dtFinale.Columns.Add("ChiaveProdotto", typeof(string));
dtFinale.Columns.Add("NomeProdotto", typeof(string));
dtFinale.Columns.Add("Controvalore", typeof(string));
dtFinale.Columns.Add("Versatonetto", typeof(string));
dtFinale.Columns.Add("Utileperdita", typeof(string));
dtFinale.Columns.Add("Rischiocredito", typeof(string));
dtFinale.Columns.Add("VaR", typeof(string));
foreach (DataRow it in dati.Tables["categorie" + i].Rows)
{
dtFinale.Rows.Add(it["Categoria"].ToString(), it["ChiaveProdotto"].ToString(), it["NomeProdotto"].ToString(), it["Controvalore"].ToString(), it["Versatonetto"].ToString(), it["Utileperdita"].ToString(), it["Rischiocredito"].ToString(), it["VaR"].ToString());
}
for (int b = 0; b < dtCategoria.Rows.Count; b++)
{
//for (int c = 0; c < dtCategoriaFooter.Rows.Count; c++)
{
var categoria = dtFinale.Select("Categoria ='" + dtCategoria.Rows[b]["Categoria"].ToString() + "'").CopyToDataTable();// : dati.Tables[0].Select("Categoria ='" + p["Categoria"].ToString() + "' AND Intermediario='" + p["Intermediario"].ToString() + "'").CopyToDataTable();
var footer = dati.Tables["footer" + i].AsEnumerable().Where(o => o.Field("Categoria").Contains(dtCategoria.Rows[b]["Categoria"].ToString())).CopyToDataTable();
var coperturaNota = dtCategoriaFooter.AsEnumerable().FirstOrDefault(o => o.Field("CategoriaString").Contains(dtCategoria.Rows[b]["Categoria"].ToString()));
bool notaproxyCat = categoria.AsEnumerable().Any(o => o.Field("ChiaveProdotto").ToString() == "0");
bool tuttivarnc = categoria.AsEnumerable().All(o => o.Field("VaR").ToString() == "n.c." || o.Field("VaR").ToString() == "0,00" || o.Field("Categoria").ToString().ToLower().Contains("conti"));
string testoNotaProxy = notaproxyCat ? getNotaProxyVar() : "";
decimal copertura = Convert.ToDecimal(footer.Rows[0]["Copertura"]);
bool notaGrado = getNota1(copertura).Length > 0;
string testoNotaGrado = notaGrado ? getNota1(copertura) : "";
bool presenzaAsterischiProxy = categoria.AsEnumerable().Any(o => o.Field("VaR").ToString().Contains(notaGrado ? "**" : "*"));
AddElement(new SpacePDF(b > 0 ? 10 : 1));
//AddElement(new FormattedTextAreaPDF(dtCategoria.Rows[i]["Categoria"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 9, FontBold = true });
//AddElement(new SpacePDF(10));
tabellaCategorie = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, categoria, footer)
{
Style = Style.ConsulenzaUnica,
Footer = true,
AlternateRow = false,
ShowBorderLastLine = false,
HeaderHeight = 22,
//MinimumRowHeight = 27,
RowHeight = 17,
HeaderFontSize = 7,
TitleRow = true,
TitleRowText = dtCategoria.Rows[b]["Categoria"].ToString(),
TitleRowBorder = BorderTitleRowType.Nessuno,
TitleRowSpace = 14
};
tabellaCategorie.Columns.Add(new ColumnPDF("NomeProdotto", 200, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "NomeProdotto", "Descrizione") { HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.Columns.Add(new ColumnPDF("Controvaloreattuale", 75, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvalore", "Controvalore
attuale (€)") { PaddingRight = 3, HeaderPaddingLeft = 5, HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.Columns.Add(new ColumnPDF("Versatonetto", 75, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Versatonetto", "Versato
netto (€)") { PaddingRight = 3, HeaderPaddingLeft = 7, HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.Columns.Add(new ColumnPDF("Utileperdita", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Utileperdita", "Utile/
Perdita (€)") { PaddingRight = 3, HeaderPaddingLeft = 7, HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.Columns.Add(new ColumnPDF("Rischiocredito", 60, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Rischiocredito", "Rischio
Credito") { HeaderFontSize = 7, HeaderPaddingLeft = 4, FontSize = 7, PaddingLeft = 4 });
tabellaCategorie.Columns.Add(new ColumnPDF("VaR", 40, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "VaR", "VaR (%)") { HeaderPaddingLeft = 4, PaddingRight = 4, HeaderFontSize = 7, FontSize = 7 });
int a = 0;
foreach (var item in categoria.Rows)
{
tabellaCategorie.Cells[1, a].HorizontalAlignment =
tabellaCategorie.Cells[2, a].HorizontalAlignment =
tabellaCategorie.Cells[3, a].HorizontalAlignment =
tabellaCategorie.Cells[4, a].HorizontalAlignment =
tabellaCategorie.Cells[5, a].HorizontalAlignment = HorizontalAlignmentType.Destra;
a++;
}
tabellaCategorie.FooterColumns.Add(new ColumnPDF("Totale", 200, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo) { HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.FooterColumns.Add(new ColumnPDF("Controvaloreattuale", 75, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { HeaderFontSize = 7, FontSize = 7, PaddingRight = 3 });
tabellaCategorie.FooterColumns.Add(new ColumnPDF("Versatonetto", 75, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { HeaderFontSize = 7, FontSize = 7, PaddingRight = 3 });
tabellaCategorie.FooterColumns.Add(new ColumnPDF("Utileperdita", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { HeaderFontSize = 7, FontSize = 7, PaddingRight = 3 });
tabellaCategorie.FooterColumns.Add(new ColumnPDF("Rischiocredito", 60, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { HeaderFontSize = 7, FontSize = 7 });
tabellaCategorie.FooterColumns.Add(new ColumnPDF("VaRfooter", 40, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { HeaderFontSize = 7, FontSize = 7 });
float y = tabellaCategorie.Y;
AddElement(tabellaCategorie);
if (notaGrado)
{
AddElement(new SpacePDF(10));
AddElement(new FormattedTextAreaPDF("(*) " + testoNotaGrado, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
}
if (notaproxyCat && !tuttivarnc && presenzaAsterischiProxy)
{
AddElement(new SpacePDF(7));
string ast = notaGrado ? "(**) " : "(*) ";
AddElement(new FormattedTextAreaPDF(ast + testoNotaProxy, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
}
AddElement(new SpacePDF(8));
}
}
}
}
#endregion
// Modifiche 20190628 per Evolutiva
var listaOggettiDaRipetere = new List { testoPaginaVerticale };
//AddElement(listaOggettiDaRipetere);
AddElement(new RepeaterPDF(listaOggettiDaRipetere));
// Fine Modifiche
}
///
/// 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 intermediari = datiSeiUnico.patrimonioUnit().patrimonioTerzi.patrimonioTerziBean.intermediari;
var prometeiaInfosCategoria = datiSeiUnico.patrimonioUnit().patrimonioTerzi.patrimonioTerziBean.prometeiaInfosCategoria;
var distribuzione = datiSeiUnico.patrimonioUnit().patrimonioTerzi.categoria.distribuzione;
var categoriaDisplayInfos = datiSeiUnico.displayInfos().categoriaDisplayInfos;
var dettaglioProdotti = datiSeiUnico.patrimonioUnit().patrimonioTerzi.dettaglioProdotti.dettaglioProdotti;
#region categoria
if (raggruppamentoCategoria())
{
#region colonne tabelle
ds.Tables.Add(new DataTable("categorie"));
ds.Tables.Add(new DataTable("categorieFooter"));
ds.Tables["categorie"].Columns.Add(new DataColumn("Categoria", typeof(string)));
ds.Tables["categorie"].Columns.Add(new DataColumn("Intermediario", typeof(string)));
ds.Tables["categorie"].Columns.Add(new DataColumn("NomeProdotto", typeof(string)));
ds.Tables["categorie"].Columns.Add(new DataColumn("Controvalore", typeof(decimal)));
ds.Tables["categorie"].Columns.Add(new DataColumn("Versatonetto", typeof(decimal)));
ds.Tables["categorie"].Columns.Add(new DataColumn("Utileperdita", typeof(decimal)));
ds.Tables["categorie"].Columns.Add(new DataColumn("Rischiocredito", typeof(string)));
ds.Tables["categorie"].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables["categorie"].Columns.Add(new DataColumn("Ordinamento", typeof(int)));
ds.Tables["categorie"].Columns.Add(new DataColumn("ChiaveProdotto", typeof(string)));
ds.Tables["categorieFooter"].Columns.Add(new DataColumn("Categoria", typeof(string)));
ds.Tables["categorieFooter"].Columns.Add(new DataColumn("Controvalore", typeof(decimal)));
ds.Tables["categorieFooter"].Columns.Add(new DataColumn("Versatonetto", typeof(decimal)));
ds.Tables["categorieFooter"].Columns.Add(new DataColumn("Utileperdita", typeof(decimal)));
ds.Tables["categorieFooter"].Columns.Add(new DataColumn("Rischiocredito", typeof(string)));
ds.Tables["categorieFooter"].Columns.Add(new DataColumn("VaRfooter", typeof(string)));
ds.Tables["categorieFooter"].Columns.Add(new DataColumn("Copertura", typeof(decimal)));
#endregion
foreach (var categoria in prometeiaInfosCategoria)
{
foreach (var posizione in dettaglioProdotti)
{
if (posizione.prodotto.alberatura.livello2.Equals(categoria.key))
{
if (!_elencocategorie.Contains(posizione.prodotto.alberatura.livello2))
_elencocategorie.Add(posizione.prodotto.alberatura.livello2);
var order = categoriaDisplayInfos.FirstOrDefault(o => o.key.Equals(categoria.key.ToUpper().Replace(" ", "")));
var coperturaProdotto = posizione.prodotto;
bool notavargrado = posizione.prodotto.alberatura.livello2.ToLower().Contains("conti") ? false : getNota1(categoria.value.stat.copertura).Length > 0;
DataRow dr = ds.Tables["categorie"].NewRow();
var categoriaLivello = posizione.prodotto.alberatura.livello2;
dr["Categoria"] = categoriaLivello;
dr["Intermediario"] = posizione.nomeIntermediario;
dr["NomeProdotto"] = posizione.prodotto.nomeProdotto;
dr["Controvalore"] = posizione.ctv;
dr["Versatonetto"] = posizione.versamentoNetto;
dr["Utileperdita"] = posizione.utilePerdita;
dr["Rischiocredito"] = (categoriaLivello.ToLower().Contains("conti") && posizione.ctv < 0) ? "n.c." : posizione.prodotto.rischioCreditoDecodificato;
dr["VaR"] = (categoriaLivello.ToLower().Contains("conti") && posizione.ctv < 0) ? "n.c." : (posizione.prodotto.chiaveProdotto == 0 && notavargrado && posizione.prodotto.varDecodificato.ToLower() != "n.c." ?
posizione.prodotto.varDecodificato + "**" : posizione.prodotto.chiaveProdotto == 0 && !notavargrado && posizione.prodotto.varDecodificato.ToLower() != "n.c." && !posizione.prodotto.alberatura.livello2.ToLower().Contains("conti") ? posizione.prodotto.varDecodificato + "*" : posizione.prodotto.varDecodificato);
dr["Ordinamento"] = order.value.order;
dr["ChiaveProdotto"] = posizione.prodotto.chiaveProdotto;
ds.Tables["categorie"].Rows.Add(dr);
if ((posizione.prodotto.varDecodificato.Replace(".", ",").Equals("0,00") && categoriaLivello.ToLower().Contains("conti")) && posizione.ctv > 0)
dr["VaR"] = "0,00";
}
else {
}
}
}
ds.Tables["categorie"].AsEnumerable().OrderByDescending(o => o.Field("Controvalore")).CopyToDataTable();
foreach (string cat in _elencocategorie)
{
var prometeiaInfo = (from o in prometeiaInfosCategoria where o.key == cat select o.value).FirstOrDefault();
ds.Tables["categorieFooter"].Rows.Add(string.Format("Totale {0}",cat),
Convert.ToDecimal(ds.Tables["categorie"].AsEnumerable().Where(o => o.Field("Categoria") == cat).CopyToDataTable().Compute("Sum(Controvalore)", string.Empty)).ToString(),
Convert.ToDecimal(ds.Tables["categorie"].AsEnumerable().Where(o => o.Field("Categoria") == cat).CopyToDataTable().Compute("Sum(Versatonetto)", string.Empty)).ToString(),
Convert.ToDecimal(ds.Tables["categorie"].AsEnumerable().Where(o => o.Field("Categoria") == cat).CopyToDataTable().Compute("Sum(Utileperdita)", string.Empty)).ToString(),
"",
prometeiaInfo.varDecodificato + (getNota1(prometeiaInfo.stat.copertura).Length > 0 ? "*" : ""),
prometeiaInfo.stat.copertura
// distribuzione.elencoSlice.Where(o => o.descrizione.Equals(cat)).FirstOrDefault().prometeiaInfo.varDecodificato + (getNota1(cat).Length > 0 && ds.Tables["categorie"].AsEnumerable().Any(o => o.Field("ChiaveProdotto").ToString() == "0") ? "*" : "")
);
}
}
#endregion
#region intermediari
else
{
if (intermediari != null)
{
ds.Tables.Add(new DataTable("Intermediari"));
ds.Tables["Intermediari"].Columns.Add(new DataColumn("NomeIntermediario", typeof(string)));
ds.Tables["Intermediari"].Columns.Add(new DataColumn("Controvalore", typeof(decimal))); //per ordinamento: quale scheda di intermediario stampare prima
//ds.Tables["Intermediari"].Columns.Add(new DataColumn("NotaProxy", typeof(bool)));
int i = 0;
foreach (var item in from o in intermediari orderby o.ctvIntermediario descending select o) //pagina si ripete per ogni intermediario della lista
{
var categoriePrometeia = item.prometeiaInfosCategoria;
var listaprodotti = dettaglioProdotti.Where(o => o.nomeIntermediario.Equals(item.nomeIntermediario));
ds.Tables["Intermediari"].Rows.Add(item.nomeIntermediario, item.ctvIntermediario);
string categorie = "categorie" + i;
string footer = "footer" + i;
ds.Tables.Add(new DataTable(categorie));
ds.Tables.Add(new DataTable(footer));
string categoriacurr = "";
if (listaprodotti.Count() > 0)
{
ds.Tables[categorie].Columns.Add(new DataColumn("Categoria", typeof(string)));
ds.Tables[categorie].Columns.Add(new DataColumn("Intermediario", typeof(string)));
ds.Tables[categorie].Columns.Add(new DataColumn("NomeProdotto", typeof(string)));
ds.Tables[categorie].Columns.Add(new DataColumn("Controvalore", typeof(decimal)));
ds.Tables[categorie].Columns.Add(new DataColumn("Versatonetto", typeof(decimal)));
ds.Tables[categorie].Columns.Add(new DataColumn("Utileperdita", typeof(decimal)));
ds.Tables[categorie].Columns.Add(new DataColumn("Rischiocredito", typeof(string)));
ds.Tables[categorie].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables[categorie].Columns.Add(new DataColumn("ChiaveProdotto", typeof(string)));
ds.Tables[categorie].Columns.Add(new DataColumn("Ordinamento", typeof(int)));
ds.Tables[footer].Columns.Add(new DataColumn("Categoria", typeof(string)));
ds.Tables[footer].Columns.Add(new DataColumn("Controvalore", typeof(decimal)));
ds.Tables[footer].Columns.Add(new DataColumn("Versatonetto", typeof(decimal)));
ds.Tables[footer].Columns.Add(new DataColumn("Utileperdita", typeof(decimal)));
ds.Tables[footer].Columns.Add(new DataColumn("Rischiocredito", typeof(string)));
ds.Tables[footer].Columns.Add(new DataColumn("VaRfooter", typeof(string)));
ds.Tables[footer].Columns.Add(new DataColumn("Copertura", typeof(decimal)));
ds.Tables[footer].Columns.Add(new DataColumn("CategoriaString", typeof(string)));
foreach (var prodotto in listaprodotti)
{
var order = categoriaDisplayInfos.FirstOrDefault(o => o.key.Equals(prodotto.prodotto.alberatura.livello2.ToUpper().Replace(" ", "")));
if (!_elencocategorie.Contains(prodotto.prodotto.alberatura.livello2))
_elencocategorie.Add(prodotto.prodotto.alberatura.livello2);
categoriacurr = prodotto.prodotto.alberatura.livello2;
decimal var = categoriePrometeia.FirstOrDefault(o => o.key.Equals(categoriacurr)).value.stat.copertura;
bool notavargrado = prodotto.prodotto.alberatura.livello2.ToLower().Contains("conti") ? false : getNota1(var).Length > 0;
var VaR = prodotto.prodotto.alberatura.livello2.ToLower().Contains("conti") && prodotto.ctv < 0 ? "n.c." : "";
ds.Tables[categorie].Rows.Add(prodotto.prodotto.alberatura.livello2,
prodotto.nomeIntermediario,
prodotto.prodotto.nomeProdotto,
prodotto.ctv,
prodotto.versamentoNetto,
prodotto.utilePerdita,
(VaR.Equals("") ? prodotto.prodotto.rischioCreditoDecodificato : VaR),
VaR.Equals("") ? (prodotto.prodotto.chiaveProdotto == 0 && notavargrado && prodotto.prodotto.varDecodificato.ToLower() != "n.c." && !prodotto.prodotto.varDecodificato.Replace(".", ",").Equals("0,00") ? prodotto.prodotto.varDecodificato + "**" : prodotto.prodotto.chiaveProdotto == 0 && !notavargrado && prodotto.prodotto.varDecodificato.ToLower() != "n.c." && !prodotto.prodotto.varDecodificato.Replace(".", ",").Equals("0,00") && !prodotto.prodotto.alberatura.livello2.ToLower().Contains("conti") ? prodotto.prodotto.varDecodificato + "*" : prodotto.prodotto.varDecodificato) : VaR,
prodotto.prodotto.chiaveProdotto,
order.value.order
);
}
ds.Tables[categorie].AsEnumerable().OrderByDescending(o => o.Field("Controvalore")).CopyToDataTable();
foreach (string cat in _elencocategorie)
{
if (ds.Tables[categorie].AsEnumerable().FirstOrDefault(o => o.Field("Categoria") == cat) != null)
{
var prometeiaCategoria = categoriePrometeia.FirstOrDefault(o => o.key.Equals(cat)).value;
ds.Tables[footer].Rows.Add(string.Format("Totale {0}", cat),
Convert.ToDecimal(ds.Tables[categorie].AsEnumerable().Where(o => o.Field("Categoria") == cat).CopyToDataTable().Compute("Sum(Controvalore)", string.Empty)).ToString(),
Convert.ToDecimal(ds.Tables[categorie].AsEnumerable().Where(o => o.Field("Categoria") == cat).CopyToDataTable().Compute("Sum(Versatonetto)", string.Empty)).ToString(),
Convert.ToDecimal(ds.Tables[categorie].AsEnumerable().Where(o => o.Field("Categoria") == cat).CopyToDataTable().Compute("Sum(Utileperdita)", string.Empty)).ToString(),
"",
prometeiaCategoria.varDecodificato + ((getNota1(prometeiaCategoria.stat.copertura).Length > 0) ? "*" : ""),//Helper.FormatDecimal(patrimonioTerzi.categoria.distribuzione.elencoSlice.Where(o => o.descrizione.ToLower().Equals(cat.ToLower())).FirstOrDefault().prometeiaInfo.varDecodificato.ToString(), 2) + (getNota1(cat).Length > 0 /*&& ds.Tables[categorie].AsEnumerable().Any(o => o.Field("ChiaveProdotto").ToString() == "0")*/ ? "*" : "")
prometeiaCategoria.stat.copertura,
cat
);
}
}
}
i++;
}
ds.Tables["Intermediari"].AsEnumerable().OrderByDescending(o => o.Field("Controvalore")).CopyToDataTable();
}
}
#endregion
return ds;
}
public virtual bool raggruppamentoCategoria()
{
return GetOption().Valore.Equals("S");
}
public virtual string getTitolo()
{
return raggruppamentoCategoria() ? "Patrimonio altri Istituti: dettaglio prodotti" : "Patrimonio altri Istituti: {0}";
}
public virtual string getTestoIntro()
{
string testo = "";
testo = !raggruppamentoCategoria() ?
"In questa scheda sono riportati i prodotti che lei detiene presso " + NomeIntermediario + ", raggruppati secondo le categorie di appartenenza, con indicazione del relativo intermediario."
: "In questa scheda sono riportati i prodotti che lei detiene presso altri Istituti, raggruppati secondo la categoria di appartenenza, con indicazione del relativo intermediario.";
return testo;
}
public virtual string getNota1(string categoria)
{
string nota = "";
return "";
var gradoCopertura = datiSeiUnico.patrimonioUnit().patrimonioTerzi.categoria.distribuzione.elencoSlice.Where(o => o.descrizione.Equals(categoria)).FirstOrDefault().prometeiaInfo.stat.copertura;
if (gradoCopertura < 100 && gradoCopertura > 0)
{
try
{
nota = string.Format("Grado di copertura prodotti in termini di Rischio Mercato (VaR): {0}.", gradoCopertura == 0 ? gradoCopertura.ToString() : Helper.FormatCurrency(gradoCopertura.ToString()));
}
catch
{
nota = "";
}
}
return nota;
}
public virtual string getNota1(decimal copertura)
{
string nota = "";
if (copertura > 0 && copertura < 100)
{
try
{
nota = string.Format("Grado di copertura prodotti in termini di Rischio Mercato (VaR): {0}.", copertura == 0 ? copertura.ToString() : Helper.FormatCurrency(copertura.ToString()));
}
catch
{
nota = "";
}
}
return nota;
}
public virtual string getNotaProxyVar()
{
return "Non è stato possibile calcolare il rischio dei prodotti contrassegnati sulla base delle loro specifiche caratteristiche. Il VaR indicato è calcolato in modo approssimato utilizzando gli indici di mercato associati all'asset allocation da lei fornita.";
}
}
}