using System;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using System.Data;
using Consulenza.ReportCommon;
using System.Linq;
using System.Collections.Generic;
using Consulenza.ReportWriter.Business.Entity;
using Consulenza.ReportWriter.Business.CUSTOM_PDF.ConsulenzaUnica;
namespace Consulenza.ReportWriter.Manager.Section.Unica
{
///
/// S65.PropostaProdottiNonRappresentabili idSezione = 108
///
public class S65 : Entity.Section
{
///
///
///
public S65(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
if (!datiSeiUnico.isVincolo("prodottiCasa_nonrappPro"))
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S65", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
}
}
protected override sealed void Draw()
{
//AddElement(new SpacePDF(15));
var dati = GetDataSet();
bool isAdeguata = (bool)datiSeiUnico.flagAdeguatezzaPro();
AddElement(new PagePDF(PagePDF.PagePDFType.Generic));
var intestazione = new SectionHeadingPDF(
(isAdeguata ? "Proposta" : "Operazioni richieste") + ": prodotti non rappresentabili",
EnvironmentFacade.RendererFacade.XLeftLimit,
EnvironmentFacade.RendererFacade.YUpperLimit,
EnvironmentFacade.ReportEnvironment.FontFamily);
AddElement(intestazione.ToElement());
if (showAsset() && dati.Tables["prodottoPerAreaAsset"].Rows.Count > 0)
{
#region Testo Introduttivo Asset
var titolo = "Prodotti non rappresentabili per asset class";
AddElement(new SpacePDF(15));
AddElement(new FormattedTextAreaPDF(titolo, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 9, FontBold = true });
AddElement(new SpacePDF(20));
AddElement(new FormattedTextAreaPDF(getTesto1(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
AddElement(new SpacePDF(15));
#endregion
#region Tabella dei prodotti non rappresentabili - Asset
var tabellaAsset = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["prodottoPerAreaAsset"], dati.Tables["nonRappresentabiliAssetFooter"])
{
Style = Style.ConsulenzaUnica,
Header = true,
Footer = true,
AlternateRow = false,
HeaderHeight = 25,
HeaderMargin = 2
};
#region Columns e Footer
tabellaAsset.Columns.Add(new ColumnPDF("Immagine", 110 + 15, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Objectpdf, "CodiceContratto", "Codice
contratto") { HeaderFontSize = 7, FontSize = 7, DeltaYContent = 4, PaddingLeft = 2 });
//tabellaEsposizione.Columns.Add(new ColumnPDF("DataSottoscrizione", 100, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Datasottoscrizione", "Data
sottoscrizione") { BackgroundColor = ColorPDF.Bianco });
//tabellaEsposizione.Columns.Add(new ColumnPDF("CodiceContratto", 110+15, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Codicecontratto", "Codice
contratto") { HeaderFontSize = 7, PaddingRight = 4, BackgroundColor = ColorPDF.Bianco });
tabellaAsset.Columns.Add(new ColumnPDF("Descrizione", 245, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Descrizione", "Descrizione") { HeaderFontSize = 7, FontSize = 7, PaddingRight = 4, BackgroundColor = ColorPDF.Bianco });
tabellaAsset.Columns.Add(new ColumnPDF("ControvaloreProposto", 90, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Decimale, "ControvaloreProposto", "Controvalore
" + (isAdeguata ? "proposto" : "prospettico") + " (€)") { HeaderFontSize = 7, FontSize = 7, PaddingRight = 4, BackgroundColor = ColorPDF.Bianco });
tabellaAsset.Columns.Add(new ColumnPDF("VaR", 60, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo, "VaR", "VaR (%)") { HeaderFontSize = 7, PaddingRight = 4, FontSize = 7, BackgroundColor = ColorPDF.Bianco });
tabellaAsset.FooterColumns.Add(new ColumnPDF("Totale", 370, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo) { HeaderFontSize = 7, FontSize = 7 });
tabellaAsset.FooterColumns.Add(new ColumnPDF("ControvaloreProposto", 90, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { HeaderFontSize = 7, FontSize = 7, PaddingRight = 4 });
tabellaAsset.FooterColumns.Add(new ColumnPDF("VaR", 60, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { HeaderFontSize = 7, FontSize = 7, PaddingRight = 5 });
//tabellaAsset.Columns.Add(new ColumnPDF("Immagine", 15, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Objectpdf, string.Empty, string.Empty) { DeltaYContent = 4, PaddingLeft = 2 });
////tabellaAsset.Columns.Add(new ColumnPDF("DataSottoscrizione", 100, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Datasottoscrizione", "Data
sottoscrizione") { BackgroundColor = ColorPDF.Bianco });
//tabellaAsset.Columns.Add(new ColumnPDF("CodiceContratto", 110, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Codicecontratto", "Codice contratto") {HeaderFontSize=7,PaddingRight=4, BackgroundColor = ColorPDF.Bianco });
//tabellaAsset.Columns.Add(new ColumnPDF("Descrizione", 245, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Descrizione", "Descrizione") { HeaderFontSize = 7, PaddingRight = 4, BackgroundColor = ColorPDF.Bianco });
//tabellaAsset.Columns.Add(new ColumnPDF("ControvaloreProposto", 90, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Decimale, "ControvaloreProposto", "Controvalore
proposto (€)") { HeaderFontSize = 7, PaddingRight = 4, BackgroundColor = ColorPDF.Bianco });
//tabellaAsset.Columns.Add(new ColumnPDF("VaR", 60, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo, "VaR", "VaR (%)") { HeaderFontSize = 7, PaddingRight = 4, BackgroundColor = ColorPDF.Bianco });
//tabellaAsset.FooterColumns.Add(new ColumnPDF("Totale", 375, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo));
//tabellaAsset.FooterColumns.Add(new ColumnPDF("ControvaloreProposto", 90, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingLeft = 2, PaddingRight = 5 });
//tabellaAsset.FooterColumns.Add(new ColumnPDF("VaR", 60, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
#endregion
#region Cells
int i = 0;
foreach (DataRow rw in dati.Tables["prodottoPerAreaAsset"].Rows)
{
var isTotal = Convert.ToBoolean(rw["IsTotal"]);
var isSubTotal = Convert.ToBoolean(rw["IsSubTotal"]);
if (isTotal || isSubTotal)
{
if (isTotal)
{
// Sfondo grigio per la riga identificata con isTotal [quella di intestazione di area]
for (int c = 0; c < tabellaAsset.Columns.Count; c++)
{
tabellaAsset.Cells[c, i].BackgroundColor = isSubTotal ?
ColorPDF.Bianco :
ColorPDF.Standard_Grigio_SfondoColonnaTabella;
tabellaAsset.Cells[c, i].FontBold = true;
tabellaAsset.Cells[c, i].FontColor = ColorPDF.Nero;
}
// Simboli dell'area di bisogno
var listaOggetti = new List
{
new RectanglePDF(8, 8, ColorPDF.GetBy_AreaBisogno(rw["CodiceAreaBisogno"].ToString())),
new FormattedTextAreaPDF
{
Text = new AreaBisogno(rw["CodiceAreaBisogno"].ToString()).Abbreviazione,
FontBold = true,
FontColor = ColorPDF.Bianco,
DeltaX = 2,
FontSize = 7,
},
new FormattedTextAreaPDF
{
Text = new AreaBisogno(rw["CodiceAreaBisogno"].ToString()).Nome,
FontBold = true,
FontColor = ColorPDF.Nero,
DeltaX = 12F,
FontSize = 7
}
};
//Quadrato colorato indicatore Area
tabellaAsset.Cells[0, i].ValueObjectList.AddRange(listaOggetti);
}
if (isSubTotal)
{
var stringa = rw["CodiceContratto"].ToString();
tabellaAsset.Cells[0, i].ValueObject = new FormattedTextAreaPDF
{
Text = stringa,
FontBold = true,
FontColor = ColorPDF.Nero,
DeltaX = 2F,
FontSize = 7,
Width = 130
};
}
}
else
{
var stringa = rw["CodiceContratto"].ToString();
tabellaAsset.Cells[0, i].ValueObject = new FormattedTextAreaPDF
{
Text = stringa,
FontBold = false,
FontColor = ColorPDF.Nero,
DeltaX = 2F,
FontSize = 7,
Width = 130,
DeltaY = 1
};
}
tabellaAsset.Cells[2, i].HorizontalAlignment =
tabellaAsset.Cells[3, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
i++;
}
//{
// var isTotal = Convert.ToBoolean(rw["IsTotal"]);
// var isSubTotal = Convert.ToBoolean(rw["IsSubTotal"]);
// if (isTotal)
// {
// // Sfondo grigio per la riga identificata con isTotal [quella di intestazione di area]
// for (int c = 0; c < tabellaAsset.Columns.Count; c++)
// tabellaAsset.Cells[c, i].BackgroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella;
// // Simboli dell'area di bisogno
// var listaOggetti = new List
// {
// new RectanglePDF(10, 10, ColorPDF.GetBy_AreaBisogno(rw["CodiceAreaBisogno"].ToString())),
// new FormattedTextAreaPDF
// {
// Text = new AreaBisogno(rw["CodiceAreaBisogno"].ToString()).Abbreviazione,
// FontBold = true,
// FontSize=7,
// FontColor = ColorPDF.Bianco,
// DeltaX = 2
// }
// };
// //Quadrato colorato indicatore Area
// tabellaAsset.Cells[0, i].ValueObjectList.AddRange(listaOggetti);
// }
// tabellaAsset.Cells[3, i].HorizontalAlignment =
// tabellaAsset.Cells[4, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
// i++;
//}
#endregion
AddElement(tabellaAsset);
#endregion
AddElement(new SpacePDF(20));
}
if (showValutaria() && dati.Tables["prodottoPerAreaEsposizione"].Rows.Count > 0)
{
#region Testo Introduttivo Valutaria
var titolo = "Prodotti non rappresentabili per esposizione valutaria";
AddElement(new SpacePDF(15));
AddElement(new FormattedTextAreaPDF(titolo, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 9, FontBold = true });
AddElement(new SpacePDF(15));
AddElement(new FormattedTextAreaPDF(getTesto2(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize=7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify});
AddElement(new SpacePDF(15));
#endregion
#region Tabella dei prodotti non rappresentabili - Esposizione Valutaria
var tabellaEsposizione = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["prodottoPerAreaEsposizione"], dati.Tables["nonRappresentabiliEsposizioneFooter"])
{
Style = Style.ConsulenzaUnica,
Header = true,
Footer = true,
AlternateRow = false,
HeaderHeight = 25,
HeaderMargin = 2
};
#region Columns e Footer
tabellaEsposizione.Columns.Add(new ColumnPDF("Immagine", 110 + 15, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Objectpdf, "CodiceContratto", "Codice contratto") { HeaderFontSize = 7, FontSize = 7, DeltaYContent = 4, PaddingLeft = 2 });
//tabellaEsposizione.Columns.Add(new ColumnPDF("DataSottoscrizione", 100, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Datasottoscrizione", "Data
sottoscrizione") { BackgroundColor = ColorPDF.Bianco });
//tabellaEsposizione.Columns.Add(new ColumnPDF("CodiceContratto", 110+15, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Codicecontratto", "Codice
contratto") { HeaderFontSize = 7, PaddingRight = 4, BackgroundColor = ColorPDF.Bianco });
tabellaEsposizione.Columns.Add(new ColumnPDF("Descrizione", 230, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Descrizione", "Descrizione") { HeaderFontSize = 7, FontSize = 7, PaddingRight = 4, BackgroundColor = ColorPDF.Bianco });
tabellaEsposizione.Columns.Add(new ColumnPDF("ControvaloreProposto", 105, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Decimale, "ControvaloreProposto", "Controvalore
" + (isAdeguata ? "proposto" : "prospettico") + " (€)") { HeaderFontSize = 7, FontSize = 7, PaddingRight = 4, BackgroundColor = ColorPDF.Bianco });
tabellaEsposizione.Columns.Add(new ColumnPDF("VaR", 60, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo, "VaR", "VaR (%)") { HeaderFontSize = 7, PaddingRight = 4, FontSize = 7, BackgroundColor = ColorPDF.Bianco });
tabellaEsposizione.FooterColumns.Add(new ColumnPDF("Totale", 355, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo) { HeaderFontSize = 7, FontSize = 7 });
tabellaEsposizione.FooterColumns.Add(new ColumnPDF("ControvaloreProposto", 105, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { HeaderFontSize = 7, FontSize = 7, PaddingRight = 4 });
tabellaEsposizione.FooterColumns.Add(new ColumnPDF("VaR", 60, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { HeaderFontSize = 7, FontSize = 7, PaddingRight = 5});
#endregion
#region Cells
int i = 0;
foreach (DataRow rw in dati.Tables["prodottoPerAreaEsposizione"].Rows)
{
var isTotal = Convert.ToBoolean(rw["IsTotal"]);
var isSubTotal = Convert.ToBoolean(rw["IsSubTotal"]);
if (isTotal || isSubTotal)
{
// Sfondo grigio per la riga identificata con isTotal [quella di intestazione di area]
if (isTotal)
{
for (int c = 0; c < tabellaEsposizione.Columns.Count; c++)
{
tabellaEsposizione.Cells[c, i].BackgroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella;
tabellaEsposizione.Cells[c, i].FontBold = true;
tabellaEsposizione.Cells[c, i].FontColor = ColorPDF.Nero;
}
var listaOggetti = new List
{
new RectanglePDF(8, 8, ColorPDF.GetBy_AreaBisogno(rw["CodiceAreaBisogno"].ToString())),
new FormattedTextAreaPDF
{
Text = new AreaBisogno(rw["CodiceAreaBisogno"].ToString()).Abbreviazione,
FontBold = true,
FontColor = ColorPDF.Bianco,
DeltaX = 2,
FontSize = 7,
},
new FormattedTextAreaPDF
{
Text = new AreaBisogno(rw["CodiceAreaBisogno"].ToString()).Nome,
FontBold = true,
FontColor = ColorPDF.Nero,
DeltaX = 12F,
FontSize = 7
}
};
//Quadrato colorato indicatore Area
tabellaEsposizione.Cells[0, i].ValueObjectList.AddRange(listaOggetti);
}
if (isSubTotal)
{
for (int c = 0; c < tabellaEsposizione.Columns.Count; c++)
{
tabellaEsposizione.Cells[c, i].FontBold = true;
tabellaEsposizione.Cells[c, i].FontColor = ColorPDF.Nero;
}
var stringa = rw["CodiceContratto"].ToString();
tabellaEsposizione.Cells[0, i].ValueObject = new FormattedTextAreaPDF
{
Text = stringa,
FontBold = true,
FontColor = ColorPDF.Nero,
DeltaX = 2F,
FontSize = 7,
Width = 130
};
}
}
else
{
var stringa = rw["CodiceContratto"].ToString();
tabellaEsposizione.Cells[0, i].ValueObject = new FormattedTextAreaPDF
{
Text = stringa,
FontBold = false,
FontColor = ColorPDF.Nero,
DeltaX = 2F,
FontSize = 7,
Width = 130,
DeltaY = 1
};
}
tabellaEsposizione.Cells[2, i].HorizontalAlignment =
tabellaEsposizione.Cells[3, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
i++;
}
#endregion
AddElement(tabellaEsposizione);
#endregion
}
}
///
/// Recupera i dati necessari alla Section restituendo un DataTable.
///
///
protected override DataTable GetDataTable()
{
return null;
}
///
/// Recupera i dati necessari alla Section restituendo un DataSet.
///
///
protected override DataSet GetDataSet()
{
#region Definizione Dataset
const string stringReplaceIfZero = " ";
var ds = new DataSet();
#endregion
#region Estrazione ChiavePB + Servizi
var chiaveClientePb = EnvironmentFacade.ReportEnvironment.Cliente.Chiave;
var dataPiramideModello = datiSeiUnico.piramideModelloUnit().piramideModello.areaModello;
var dettaglioProdotti = datiSeiUnico.propostaUnit().dettaglioProdotti;
var dataProdottiNonRappresentabili_Asset = datiSeiUnico.propostaUnit().assetClass.distribuzionePerProdotti.listaProdotti.Where(o => o.rappresentabile == false);
var dataProdottiNonRappresentabili_Esposizioni = datiSeiUnico.propostaUnit().esposizioneValutaria.distribuzionePerProdotti.listaProdotti.Where(o => o.rappresentabile == false);
#endregion
#region Asset - Prodotti non Rappresentabili
ds.Tables.Add(new DataTable("nonRappresentabiliAsset"));
ds.Tables["nonRappresentabiliAsset"].ExtendedProperties.Add("IndiceTabella", 1);
ds.Tables["nonRappresentabiliAsset"].Columns.Add(new DataColumn("CodiceAreaBisogno", typeof(string)));
ds.Tables["nonRappresentabiliAsset"].Columns.Add(new DataColumn("DescrizioneAreaBisogno", typeof(string)));
ds.Tables["nonRappresentabiliAsset"].Columns.Add(new DataColumn("OrdinamentoAreaBisogno", typeof(int)));
ds.Tables["nonRappresentabiliAsset"].Columns.Add(new DataColumn("DescrizioneProgetto", typeof(string)));
ds.Tables["nonRappresentabiliAsset"].Columns.Add(new DataColumn("DataSottoscrizione", typeof(string)));
ds.Tables["nonRappresentabiliAsset"].Columns.Add(new DataColumn("CodiceContratto", typeof(string)));
ds.Tables["nonRappresentabiliAsset"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
ds.Tables["nonRappresentabiliAsset"].Columns.Add(new DataColumn("ControvaloreProposto", typeof(decimal)));
ds.Tables["nonRappresentabiliAsset"].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables["nonRappresentabiliAsset"].Columns.Add(new DataColumn("FontBold", typeof(bool)));
ds.Tables["nonRappresentabiliAsset"].Columns.Add(new DataColumn("ReplaceIfZero", typeof(string)));
ds.Tables["nonRappresentabiliAsset"].Columns.Add(new DataColumn("CanLastRow", typeof(bool)));
ds.Tables["nonRappresentabiliAsset"].Columns.Add(new DataColumn("IsTotal", typeof(bool)));
ds.Tables["nonRappresentabiliAsset"].Columns.Add(new DataColumn("IsSubTotal", typeof(bool)));
foreach (var prodotto in dataProdottiNonRappresentabili_Asset)
{
var itemPosizione = dettaglioProdotti.dettaglioProdotti.FirstOrDefault(o => o.chiaveAggregazione.Equals(prodotto.chiaveAggregazione));
var itemPiramideModello = dataPiramideModello.FirstOrDefault(o => o.area.ToLower().Trim().Equals(itemPosizione.area.ToLower().Trim()));
if (itemPosizione.ctvPro != 0)
{
var rowProdotto = ds.Tables["nonRappresentabiliAsset"].NewRow();
rowProdotto["CodiceAreaBisogno"] = itemPosizione.area;
rowProdotto["DescrizioneAreaBisogno"] = itemPosizione.descAreaEstesa;
rowProdotto["OrdinamentoAreaBisogno"] = itemPiramideModello.ordinamento;
rowProdotto["DescrizioneProgetto"] = itemPosizione.nomeProgetto;
rowProdotto["DataSottoscrizione"] = itemPosizione.dtSottoscrizione.ToShortDateString();
rowProdotto["CodiceContratto"] = itemPosizione.codContratto;
rowProdotto["Descrizione"] = itemPosizione.prodotto.nomeProdotto;
rowProdotto["ControvaloreProposto"] = itemPosizione.ctvPro;
rowProdotto["VaR"] = itemPosizione.prodotto.varProDec;
rowProdotto["FontBold"] = false;
rowProdotto["ReplaceIfZero"] = false;
rowProdotto["CanLastRow"] = true;
rowProdotto["IsTotal"] = false;
rowProdotto["IsSubTotal"] = false;
ds.Tables["nonRappresentabiliAsset"].Rows.Add(rowProdotto);
}
}
#endregion
#region Esposizione valutaria - Prodotti non rappresentabili
ds.Tables.Add(new DataTable("nonRappresentabiliEsposizione"));
ds.Tables["nonRappresentabiliEsposizione"].ExtendedProperties.Add("IndiceTabella", 3);
ds.Tables["nonRappresentabiliEsposizione"].Columns.Add(new DataColumn("CodiceAreaBisogno", typeof(string)));
ds.Tables["nonRappresentabiliEsposizione"].Columns.Add(new DataColumn("DescrizioneAreaBisogno", typeof(string)));
ds.Tables["nonRappresentabiliEsposizione"].Columns.Add(new DataColumn("OrdinamentoAreaBisogno", typeof(int)));
ds.Tables["nonRappresentabiliEsposizione"].Columns.Add(new DataColumn("DescrizioneProgetto", typeof(string)));
ds.Tables["nonRappresentabiliEsposizione"].Columns.Add(new DataColumn("DataSottoscrizione", typeof(string)));
ds.Tables["nonRappresentabiliEsposizione"].Columns.Add(new DataColumn("CodiceContratto", typeof(string)));
ds.Tables["nonRappresentabiliEsposizione"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
ds.Tables["nonRappresentabiliEsposizione"].Columns.Add(new DataColumn("ControvaloreProposto", typeof(decimal)));
ds.Tables["nonRappresentabiliEsposizione"].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables["nonRappresentabiliEsposizione"].Columns.Add(new DataColumn("FontBold", typeof(bool)));
ds.Tables["nonRappresentabiliEsposizione"].Columns.Add(new DataColumn("ReplaceIfZero", typeof(string)));
ds.Tables["nonRappresentabiliEsposizione"].Columns.Add(new DataColumn("CanLastRow", typeof(bool)));
ds.Tables["nonRappresentabiliEsposizione"].Columns.Add(new DataColumn("IsTotal", typeof(bool)));
ds.Tables["nonRappresentabiliEsposizione"].Columns.Add(new DataColumn("IsSubTotal", typeof(bool)));
foreach (var prodotto in dataProdottiNonRappresentabili_Esposizioni)
{
var itemPosizione = dettaglioProdotti.dettaglioProdotti.FirstOrDefault(o => o.chiaveAggregazione.Equals(prodotto.chiaveAggregazione));
var itemPiramideModello = dataPiramideModello.FirstOrDefault(o => o.area.ToLower().Trim().Equals(itemPosizione.area.ToLower().Trim()));
if (itemPosizione.ctvPro != 0)
{
var rowProdotto = ds.Tables["nonRappresentabiliEsposizione"].NewRow();
rowProdotto["CodiceAreaBisogno"] = itemPosizione.area;
rowProdotto["DescrizioneAreaBisogno"] = itemPosizione.descAreaEstesa;
rowProdotto["OrdinamentoAreaBisogno"] = itemPiramideModello.ordinamento;
rowProdotto["DescrizioneProgetto"] = itemPosizione.nomeProgetto;
rowProdotto["DataSottoscrizione"] = itemPosizione.dtSottoscrizione.ToShortDateString();
rowProdotto["CodiceContratto"] = itemPosizione.codContratto;
rowProdotto["Descrizione"] = itemPosizione.prodotto.nomeProdotto;
rowProdotto["ControvaloreProposto"] = itemPosizione.ctvPro;
rowProdotto["VaR"] = itemPosizione.prodotto.varProDec;
rowProdotto["FontBold"] = false;
rowProdotto["ReplaceIfZero"] = false;
rowProdotto["CanLastRow"] = true;
rowProdotto["IsTotal"] = false;
rowProdotto["IsSubTotal"] = false;
ds.Tables["nonRappresentabiliEsposizione"].Rows.Add(rowProdotto);
}
}
#endregion
#region Raggruppamento per area di bisogno - Asset
ds.Tables.Add(new DataTable("prodottoPerAreaAsset"));
ds.Tables["prodottoPerAreaAsset"].Columns.Add(new DataColumn("CodiceAreaBisogno", typeof(string)));
ds.Tables["prodottoPerAreaAsset"].Columns.Add(new DataColumn("DescrizioneAreaBisogno", typeof(string)));
ds.Tables["prodottoPerAreaAsset"].Columns.Add(new DataColumn("OrdinamentoAreaBisogno", typeof(int)));
ds.Tables["prodottoPerAreaAsset"].Columns.Add(new DataColumn("DescrizioneProgetto", typeof(string)));
ds.Tables["prodottoPerAreaAsset"].Columns.Add(new DataColumn("DataSottoscrizione", typeof(string)));
ds.Tables["prodottoPerAreaAsset"].Columns.Add(new DataColumn("CodiceContratto", typeof(string)));
ds.Tables["prodottoPerAreaAsset"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
ds.Tables["prodottoPerAreaAsset"].Columns.Add(new DataColumn("ControvaloreProposto", typeof(decimal)));
ds.Tables["prodottoPerAreaAsset"].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables["prodottoPerAreaAsset"].Columns.Add(new DataColumn("FontBold", typeof(bool)));
ds.Tables["prodottoPerAreaAsset"].Columns.Add(new DataColumn("ReplaceIfZero", typeof(string)));
ds.Tables["prodottoPerAreaAsset"].Columns.Add(new DataColumn("CanLastRow", typeof(bool)));
ds.Tables["prodottoPerAreaAsset"].Columns.Add(new DataColumn("IsTotal", typeof(bool)));
ds.Tables["prodottoPerAreaAsset"].Columns.Add(new DataColumn("IsSubTotal", typeof(bool)));
#region Prodotti raggruppati per area - Asset
var viewAree = new DataView(ds.Tables["nonRappresentabiliAsset"]/*.AsEnumerable().Where(o => o.Field("ControvaloreProposto") != 0).CopyToDataTable()*/) { Sort = "OrdinamentoAreaBisogno" };
var dtAree = viewAree.ToTable(true, "CodiceAreaBisogno", "DescrizioneAreaBisogno", "OrdinamentoAreaBisogno");
var area = string.Empty;
var progetto = string.Empty;
#region Prodotti
foreach (DataRow rowAreaProgetto in dtAree.Rows)
{
area = rowAreaProgetto["CodiceAreaBisogno"].ToString();
if (new AreaBisogno(area).Visibile)
{
//Progetti
var viewProgetti = new DataView(ds.Tables["nonRappresentabiliAsset"].Select("CodiceAreaBisogno='" + area + "'").OrderByDescending(o => o.Field("ControvaloreProposto")).CopyToDataTable());
var dtProgetti = viewProgetti.ToTable(true, "DescrizioneProgetto");
var bIntestazioneArea = true; // la riga di intestazione dell'area va stampata una sola volta.
var bItestazioneProgetto = area == "Inv" || area == "Pre"; // la riga di intestazione del progetto va stampata solo per area Inv e Pre.
DataRow rowProdottiPerArea;
foreach (DataRow itemProgetto in dtProgetti.Rows)
{
progetto = itemProgetto["DescrizioneProgetto"].ToString();
// Subset di prodotti filtrati per Area/Progetto
var dtArea = ds.Tables["nonRappresentabiliAsset"].Select("CodiceAreaBisogno='" + area + "'").OrderByDescending(o => o.Field("ControvaloreProposto")).CopyToDataTable();
var dtAreaProgetto = ds.Tables["nonRappresentabiliAsset"].Select("CodiceAreaBisogno='" + area + "' AND " + string.Format("DescrizioneProgetto ='{0}'", itemProgetto["DescrizioneProgetto"].ToString().Replace("'", "''"))).OrderByDescending(o => o.Field("ControvaloreProposto")).CopyToDataTable();
if (bIntestazioneArea)
{
#region riga con background grigio di intestazione per ogni area
rowProdottiPerArea = ds.Tables["prodottoPerAreaAsset"].NewRow();
rowProdottiPerArea["CodiceAreaBisogno"] = rowAreaProgetto["CodiceAreaBisogno"];
rowProdottiPerArea["CodiceContratto"] = rowAreaProgetto["DescrizioneAreaBisogno"]; //FARE
// Totali per area
rowProdottiPerArea["ControvaloreProposto"] = dtArea.AsEnumerable().Sum(p => p.Field("ControvaloreProposto"));
rowProdottiPerArea["FontBold"] = true;
rowProdottiPerArea["ReplaceIfZero"] = stringReplaceIfZero;
rowProdottiPerArea["CanLastRow"] = false;
rowProdottiPerArea["IsTotal"] = true;
rowProdottiPerArea["IsSubTotal"] = false;
ds.Tables["prodottoPerAreaAsset"].Rows.Add(rowProdottiPerArea);
bIntestazioneArea = false;
#endregion
}
if (bItestazioneProgetto)
{
#region Riga con background grigio di intestazione per ogni Progetto
rowProdottiPerArea = ds.Tables["prodottoPerAreaAsset"].NewRow();
rowProdottiPerArea["CodiceAreaBisogno"] = rowAreaProgetto["CodiceAreaBisogno"];
rowProdottiPerArea["CodiceContratto"] = progetto;
// Totali per area
rowProdottiPerArea["ControvaloreProposto"] = dtArea.AsEnumerable().Sum(p => p.Field("ControvaloreProposto"));
rowProdottiPerArea["FontBold"] = true;
rowProdottiPerArea["ReplaceIfZero"] = stringReplaceIfZero;
rowProdottiPerArea["CanLastRow"] = false;
rowProdottiPerArea["IsTotal"] = false;
rowProdottiPerArea["IsSubTotal"] = true;
ds.Tables["prodottoPerAreaAsset"].Rows.Add(rowProdottiPerArea);
#endregion
}
// I prodotti della dtProdotti vengono mergiati sulla dtProdottiPerArea
ds.Tables["prodottoPerAreaAsset"].Merge(dtAreaProgetto);
}
}
#endregion
#endregion
}
#endregion
#region Raggruppamento per area di bisogno - Esposizioni
ds.Tables.Add(new DataTable("prodottoPerAreaEsposizione"));
ds.Tables["prodottoPerAreaEsposizione"].Columns.Add(new DataColumn("CodiceAreaBisogno", typeof(string)));
ds.Tables["prodottoPerAreaEsposizione"].Columns.Add(new DataColumn("DescrizioneAreaBisogno", typeof(string)));
ds.Tables["prodottoPerAreaEsposizione"].Columns.Add(new DataColumn("OrdinamentoAreaBisogno", typeof(int)));
ds.Tables["prodottoPerAreaEsposizione"].Columns.Add(new DataColumn("DescrizioneProgetto", typeof(string)));
ds.Tables["prodottoPerAreaEsposizione"].Columns.Add(new DataColumn("DataSottoscrizione", typeof(string)));
ds.Tables["prodottoPerAreaEsposizione"].Columns.Add(new DataColumn("CodiceContratto", typeof(string)));
ds.Tables["prodottoPerAreaEsposizione"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
ds.Tables["prodottoPerAreaEsposizione"].Columns.Add(new DataColumn("ControvaloreProposto", typeof(decimal)));
ds.Tables["prodottoPerAreaEsposizione"].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables["prodottoPerAreaEsposizione"].Columns.Add(new DataColumn("FontBold", typeof(bool)));
ds.Tables["prodottoPerAreaEsposizione"].Columns.Add(new DataColumn("ReplaceIfZero", typeof(string)));
ds.Tables["prodottoPerAreaEsposizione"].Columns.Add(new DataColumn("CanLastRow", typeof(bool)));
ds.Tables["prodottoPerAreaEsposizione"].Columns.Add(new DataColumn("IsTotal", typeof(bool)));
ds.Tables["prodottoPerAreaEsposizione"].Columns.Add(new DataColumn("IsSubTotal", typeof(bool)));
#region Prodotti raggruppati per area - Asset
viewAree = new DataView(ds.Tables["nonRappresentabiliEsposizione"]/*.AsEnumerable().Where(o => o.Field("ControvaloreProposto") != 0).CopyToDataTable()*/) { Sort = "OrdinamentoAreaBisogno" };
dtAree = viewAree.ToTable(true, "CodiceAreaBisogno", "DescrizioneAreaBisogno", "OrdinamentoAreaBisogno");
area = string.Empty;
progetto = string.Empty;
#region Prodotti
foreach (DataRow rowAreaProgetto in dtAree.Rows)
{
area = rowAreaProgetto["CodiceAreaBisogno"].ToString();
if (new AreaBisogno(area).Visibile)
{
//Progetti
var viewProgetti = new DataView(ds.Tables["nonRappresentabiliEsposizione"].Select("CodiceAreaBisogno='" + area + "'").OrderByDescending(o => o.Field("ControvaloreProposto")).CopyToDataTable());
var dtProgetti = viewProgetti.ToTable(true, "DescrizioneProgetto");
var bIntestazioneArea = true; // la riga di intestazione dell'area va stampata una sola volta.
var bItestazioneProgetto = area == "Inv" || area == "Pre"; // la riga di intestazione del progetto va stampata solo per area Inv e Pre.
DataRow rowProdottiPerArea;
foreach (DataRow itemProgetto in dtProgetti.Rows)
{
progetto = itemProgetto["DescrizioneProgetto"].ToString();
// Subset di prodotti filtrati per Area/Progetto
var dtArea = ds.Tables["nonRappresentabiliEsposizione"].Select("CodiceAreaBisogno='" + area + "'").OrderByDescending(o => o.Field("ControvaloreProposto")).CopyToDataTable();
var dtAreaProgetto = ds.Tables["nonRappresentabiliEsposizione"].Select("CodiceAreaBisogno='" + area + "' AND "+ string.Format("DescrizioneProgetto ='{0}'", itemProgetto["DescrizioneProgetto"].ToString().Replace("'", "''"))).OrderByDescending(o => o.Field("ControvaloreProposto")).CopyToDataTable();
if (bIntestazioneArea)
{
#region riga con background grigio di intestazione per ogni area
rowProdottiPerArea = ds.Tables["prodottoPerAreaEsposizione"].NewRow();
rowProdottiPerArea["CodiceAreaBisogno"] = rowAreaProgetto["CodiceAreaBisogno"];
rowProdottiPerArea["CodiceContratto"] = rowAreaProgetto["DescrizioneAreaBisogno"]; //FARE
// Totali per area
rowProdottiPerArea["ControvaloreProposto"] = dtArea.AsEnumerable().Sum(p => p.Field("ControvaloreProposto"));
rowProdottiPerArea["FontBold"] = true;
rowProdottiPerArea["ReplaceIfZero"] = stringReplaceIfZero;
rowProdottiPerArea["CanLastRow"] = false;
rowProdottiPerArea["IsTotal"] = true;
rowProdottiPerArea["IsSubTotal"] = false;
ds.Tables["prodottoPerAreaEsposizione"].Rows.Add(rowProdottiPerArea);
bIntestazioneArea = false;
#endregion
}
if (bItestazioneProgetto)
{
#region Riga con background grigio di intestazione per ogni Progetto
rowProdottiPerArea = ds.Tables["prodottoPerAreaEsposizione"].NewRow();
rowProdottiPerArea["CodiceAreaBisogno"] = rowAreaProgetto["CodiceAreaBisogno"];
rowProdottiPerArea["CodiceContratto"] = progetto;
// Totali per area
rowProdottiPerArea["ControvaloreProposto"] = dtArea.AsEnumerable().Sum(p => p.Field("ControvaloreProposto"));
rowProdottiPerArea["FontBold"] = true;
rowProdottiPerArea["ReplaceIfZero"] = stringReplaceIfZero;
rowProdottiPerArea["CanLastRow"] = false;
rowProdottiPerArea["IsTotal"] = false;
rowProdottiPerArea["IsSubTotal"] = true;
ds.Tables["prodottoPerAreaEsposizione"].Rows.Add(rowProdottiPerArea);
#endregion
}
// I prodotti della dtProdotti vengono mergiati sulla dtProdottiPerArea
ds.Tables["prodottoPerAreaEsposizione"].Merge(dtAreaProgetto);
}
}
#endregion
#endregion
}
#endregion
#region Asset - Prodotti non Rappresentabili Footer
ds.Tables.Add(new DataTable("nonRappresentabiliAssetFooter"));
ds.Tables.Add(new DataTable("nonRappresentabiliEsposizioneFooter"));
ds.Tables["nonRappresentabiliAssetFooter"].Columns.Add(new DataColumn("Totale", typeof(string)));
ds.Tables["nonRappresentabiliAssetFooter"].Columns.Add(new DataColumn("Controvalore", typeof(decimal)));
ds.Tables["nonRappresentabiliAssetFooter"].Columns.Add(new DataColumn("Var", typeof(string)));
ds.Tables["nonRappresentabiliAssetFooter"].Rows.Add( "Totale prodotti non rappresentabili",
ds.Tables["prodottoPerAreaAsset"].Select("IsTotal<>'true' AND IsSubTotal<>'true'").AsEnumerable().Sum(x => x.Field("ControvaloreProposto")),
"");
#endregion
#region Valutaria - Prodotti non Rappresentabili Footer
ds.Tables["nonRappresentabiliEsposizioneFooter"].Columns.Add(new DataColumn("Totale", typeof(string)));
ds.Tables["nonRappresentabiliEsposizioneFooter"].Columns.Add(new DataColumn("Controvalore", typeof(decimal)));
ds.Tables["nonRappresentabiliEsposizioneFooter"].Columns.Add(new DataColumn("Var", typeof(string)));
ds.Tables["nonRappresentabiliEsposizioneFooter"].Rows.Add("Totale prodotti non rappresentabili",
ds.Tables["prodottoPerAreaEsposizione"].Select("IsTotal<>'true' AND IsSubTotal<>'true'").AsEnumerable().Sum(x => x.Field("ControvaloreProposto")),
"");
#endregion
return ds;
}
public virtual string getTesto1()
{
string testo = string.Empty;
bool isAdeguata = datiSeiUnico.flagAdeguatezzaPro();
string adeguataStr = isAdeguata ? "della presente proposta" : "delle operazioni da lei richieste al suo private banker";
testo += "Nella tabella sottostante sono riportati i prodotti che, sulla base " + adeguataStr +", ";
testo += "concorrono alla determinazione del suo patrimonio, ma che non è stato possibile rappresentare in termini di ";
testo += "asset allocation. ";
return testo;
}
public virtual string getTesto2()
{
string testo = string.Empty;
bool isAdeguata = datiSeiUnico.flagAdeguatezzaPro();
string adeguataStr = isAdeguata ? "sulla base della presente proposta" : "delle operazioni da lei richieste al suo private banker";
testo += "Nella tabella sottostante sono riportati i prodotti che, sulla base " + adeguataStr + ", ";
testo += "concorrono alla determinazione del suo patrimonio, ma che non è stato possibile rappresentare in termini di ";
testo += "esposizione valutaria. ";
return testo;
}
public virtual bool showAsset()
{
return datiSeiUnico.isVincolo("v65000_1") ? false : GetOption().Valore;
}
public virtual bool showValutaria()
{
return datiSeiUnico.isVincolo("v65000_2") ? false : GetOption().Valore;
}
}
}