868 lines
62 KiB
C#
868 lines
62 KiB
C#
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 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<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.";
|
||
}
|
||
}
|
||
}
|