868 lines
62 KiB
C#
Raw Permalink 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 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
{
/// <summary>
///S31.PatrimonioAltriIstitutiDettaglioProdotti idSezione = 74
/// </summary>
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<string> _elencocategorie = new List<string>();
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<int>("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<string>("Categoria").Contains(dtCategoria.Rows[i]["Categoria"].ToString())).CopyToDataTable();
// bool notaproxyCat = categoria.AsEnumerable().Any(o => o.Field<string>("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<string>("VaR").ToString().Contains(notaGrado ? "**" : "*"));
// string testoNotaProxy = notaproxyCat ? getNotaProxyVar() : "";
// bool tuttivarnc = categoria.AsEnumerable().All(o => o.Field<string>("VaR").ToString() == "n.c." || o.Field<string>("VaR").ToString() == "0,00" || o.Field<string>("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 <br>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<br>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/<br>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<br>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<int>("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<string>("Categoria").Contains(dtCategoria.Rows[b]["Categoria"].ToString())).CopyToDataTable();
// var coperturaNota = dtCategoriaFooter.AsEnumerable().FirstOrDefault(o => o.Field<string>("CategoriaString").Contains(dtCategoria.Rows[b]["Categoria"].ToString()));
// bool notaproxyCat = categoria.AsEnumerable().Any(o => o.Field<string>("ChiaveProdotto").ToString() == "0");
// bool tuttivarnc = categoria.AsEnumerable().All(o => o.Field<string>("VaR").ToString() == "n.c." || o.Field<string>("VaR").ToString() == "0,00" || o.Field<string>("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<string>("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 <br>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<br>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/<br>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<br>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 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
};
// 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<int>("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<string>("Categoria").Contains(dtCategoria.Rows[i]["Categoria"].ToString())).CopyToDataTable();
bool notaproxyCat = categoria.AsEnumerable().Any(o => o.Field<string>("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<string>("VaR").ToString().Contains(notaGrado ? "**" : "*"));
string testoNotaProxy = notaproxyCat ? getNotaProxyVar() : "";
bool tuttivarnc = categoria.AsEnumerable().All(o => o.Field<string>("VaR").ToString() == "n.c." || o.Field<string>("VaR").ToString() == "0,00" || o.Field<string>("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 <br>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<br>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/<br>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<br>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<int>("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<string>("Categoria").Contains(dtCategoria.Rows[b]["Categoria"].ToString())).CopyToDataTable();
var coperturaNota = dtCategoriaFooter.AsEnumerable().FirstOrDefault(o => o.Field<string>("CategoriaString").Contains(dtCategoria.Rows[b]["Categoria"].ToString()));
bool notaproxyCat = categoria.AsEnumerable().Any(o => o.Field<string>("ChiaveProdotto").ToString() == "0");
bool tuttivarnc = categoria.AsEnumerable().All(o => o.Field<string>("VaR").ToString() == "n.c." || o.Field<string>("VaR").ToString() == "0,00" || o.Field<string>("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<string>("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 <br>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<br>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/<br>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<br>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<ObjectPDF> { testoPaginaVerticale };
//AddElement(listaOggettiDaRipetere);
AddElement(new RepeaterPDF(listaOggettiDaRipetere));
// Fine Modifiche
}
/// <summary>
/// Recupera i dati necessari alla Section restituendo un DataTable.
/// </summary>
/// <returns></returns>
protected sealed override DataTable GetDataTable()
{
return null;
}
/// <summary>
/// Recupera i dati necessari alla Section restituendo un DataSet.
/// </summary>
/// <returns></returns>
protected sealed override DataSet GetDataSet()
{
var ds = new DataSet();
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<decimal>("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<string>("Categoria") == cat).CopyToDataTable().Compute("Sum(Controvalore)", string.Empty)).ToString(),
Convert.ToDecimal(ds.Tables["categorie"].AsEnumerable().Where(o => o.Field<string>("Categoria") == cat).CopyToDataTable().Compute("Sum(Versatonetto)", string.Empty)).ToString(),
Convert.ToDecimal(ds.Tables["categorie"].AsEnumerable().Where(o => o.Field<string>("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<string>("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<decimal>("Controvalore")).CopyToDataTable();
foreach (string cat in _elencocategorie)
{
if (ds.Tables[categorie].AsEnumerable().FirstOrDefault(o => o.Field<string>("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<string>("Categoria") == cat).CopyToDataTable().Compute("Sum(Controvalore)", string.Empty)).ToString(),
Convert.ToDecimal(ds.Tables[categorie].AsEnumerable().Where(o => o.Field<string>("Categoria") == cat).CopyToDataTable().Compute("Sum(Versatonetto)", string.Empty)).ToString(),
Convert.ToDecimal(ds.Tables[categorie].AsEnumerable().Where(o => o.Field<string>("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<string>("ChiaveProdotto").ToString() == "0")*/ ? "*" : "")
prometeiaCategoria.stat.copertura,
cat
);
}
}
}
i++;
}
ds.Tables["Intermediari"].AsEnumerable().OrderByDescending(o => o.Field<decimal>("Controvalore")).CopyToDataTable();
}
}
#endregion
return ds;
}
public virtual bool raggruppamentoCategoria()
{
return GetOption<Opzione6>().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.";
}
}
}