using Consulenza.ReportCommon;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Business.CUSTOM_PDF.ConsulenzaUnica;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
namespace Consulenza.ReportWriter.Manager.Section.Unica
{
public class S56 : Entity.Section
{
///
///S56.PropostaDettaglioOperazioni idSezione = 99
///
public S56(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S56", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
}
}
protected override sealed void Draw()
{
var dati = GetDataSet();
bool isAdeguata = datiSeiUnico.flagAdeguatezzaPro();
AddElement(new PagePDF(PagePDF.PagePDFType.Generic));
var intestazione = new SectionHeadingPDF(
(isAdeguata ? "Proposta" : "Operazioni richieste") + ": dettaglio operazioni",
EnvironmentFacade.RendererFacade.XLeftLimit,
EnvironmentFacade.RendererFacade.YUpperLimit,
EnvironmentFacade.ReportEnvironment.FontFamily);
AddElement(intestazione.ToElement());
if (getTesto1().Length > 0)
{
AddElement(new SpacePDF(20));
AddElement(new FormattedTextAreaPDF(getTesto1(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
AddElement(new SpacePDF(15));
}
#region Tabella delle Sintesi
if (dati.Tables["sintesiOperazioni"].Rows.Count > 0)
{
var sintesiOperazioni = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["sintesiOperazioni"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = true,
WidthSeparationLines = 0.5F,
RowHeight = 25,
HeaderHeight = 30
};
#region Label
AddElement(new FormattedTextAreaPDF("Sintesi delle operazioni proposte", EnvironmentFacade.RendererFacade.XLeftLimit) { BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontSize = 8, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, BackGroundMarginLeft = 5 });
#endregion
AddElement(new SpacePDF(4));
#region Tabella
sintesiOperazioni.Columns.Add(new ColumnPDF("nuoveSottoscrizioni", 130, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Decimale, "nuoveSottoscrizioni", "(A) Nuove sottoscrizioni (€)") { HeaderFontSize = 7 });
sintesiOperazioni.Columns.Add(new ColumnPDF("aggiuntivi", 130, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Decimale, "aggiuntivi", "(B) Investimenti aggiuntivi (€)") { HeaderFontSize = 7 });
sintesiOperazioni.Columns.Add(new ColumnPDF("disinvestimenti", 130, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Decimale, "disinvestimenti", "(C) Disinvestimenti (€)") { HeaderFontSize = 7 });
sintesiOperazioni.Columns.Add(new ColumnPDF("saldo", 130, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Decimale, "saldo", "(A+B-C) Saldo operazioni (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
for (int i = 0; i < dati.Tables["sintesiOperazioni"].Rows.Count; i++)
{
sintesiOperazioni.Cells[0, i].HorizontalAlignment =
sintesiOperazioni.Cells[1, i].HorizontalAlignment =
sintesiOperazioni.Cells[2, i].HorizontalAlignment =
sintesiOperazioni.Cells[3, i].HorizontalAlignment = HorizontalAlignmentType.Centrato;
}
#endregion
AddElement(sintesiOperazioni);
}
#endregion
#region Tabella delle Operazioni
if (dati.Tables["operazioni"].Rows.Count > 0)
{
AddElement(new SpacePDF(25));
#region Label
AddElement(new FormattedTextAreaPDF("Nuove sottoscrizioni, Investimenti aggiuntivi, Disinvestimenti", EnvironmentFacade.RendererFacade.XLeftLimit) { BackGroundColor = ColorPDF.Bianco, FontColor = ColorPDF.Nero, FontSize = 8, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, BackGroundMarginLeft = 5 });
#endregion
var tabellaOperazioni = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["operazioni"], dati.Tables["operazionifooter"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = true,
WidthSeparationLines = 0.5F,
RowHeight = 25,
HeaderHeight = 30
};
// Modifica per Saving Map
tabellaOperazioni.Columns.Add(new ColumnPDF("SavingMap", 13, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Immagine, "SavingMap", string.Empty) { DeltaYContent = 10, ScaleColumnTypeImage = 0.50F });
// Fine Modifica
tabellaOperazioni.Columns.Add(new ColumnPDF("codContratto", 75, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "codContratto", "Codice
Contratto") { HeaderFontSize = 7 });
tabellaOperazioni.Columns.Add(new ColumnPDF("Prodotto", 142, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Prodotto", "Prodotto") { HeaderFontSize = 7 });
tabellaOperazioni.Columns.Add(new ColumnPDF("codInterno", 35, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "codInterno", "Codice
Interno") { HeaderFontSize = 7, PaddingRight = 4 });
tabellaOperazioni.Columns.Add(new ColumnPDF("Controvaloreattuale", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvaloreattuale", "Controvalore
attuale (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
tabellaOperazioni.Columns.Add(new ColumnPDF("ApportiDisinvest", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ApportiDisinvest", "Apporti/
Disinvest. (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
tabellaOperazioni.Columns.Add(new ColumnPDF("Controvaloreproposto", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvaloreproposto", "Controvalore
" + (isAdeguata ? "proposto (€)" : "prospettico (€)")) { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
tabellaOperazioni.Columns.Add(new ColumnPDF("VaR", 45, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "VaR", "Rischio
Mercato
(VaR %)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
tabellaOperazioni.FooterColumns.Add(new ColumnPDF("Prodotto", 265, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo));
tabellaOperazioni.FooterColumns.Add(new ColumnPDF("Controvaloreattuale", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
tabellaOperazioni.FooterColumns.Add(new ColumnPDF("ApportiDisinvest", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
tabellaOperazioni.FooterColumns.Add(new ColumnPDF("Controvaloreproposto", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
tabellaOperazioni.FooterColumns.Add(new ColumnPDF("VaR", 45, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
for (int i = 0; i < dati.Tables["operazioni"].Rows.Count; i++)
{
if (dati.Tables["operazioni"].Rows[i][0].ToString() == "$")
{
tabellaOperazioni.Cells[1, i].FontBold =
tabellaOperazioni.Cells[2, i].FontBold =
tabellaOperazioni.Cells[4, i].FontBold =
tabellaOperazioni.Cells[5, i].FontBold =
tabellaOperazioni.Cells[6, i].FontBold = true;
tabellaOperazioni.Cells[1, i].ColSpan = 2;
}
else
{
tabellaOperazioni.Cells[1, i].FontBold =
tabellaOperazioni.Cells[2, i].FontBold =
tabellaOperazioni.Cells[4, i].FontBold =
tabellaOperazioni.Cells[5, i].FontBold =
tabellaOperazioni.Cells[6, i].FontBold = false;
tabellaOperazioni.Cells[1, i].ColSpan = 0;
}
}
for (int i = 0; i < dati.Tables["operazioni"].Rows.Count; i++)
{
tabellaOperazioni.Cells[4, i].HorizontalAlignment =
tabellaOperazioni.Cells[5, i].HorizontalAlignment =
tabellaOperazioni.Cells[6, i].HorizontalAlignment =
tabellaOperazioni.Cells[7, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
}
AddElement(tabellaOperazioni);
}
#endregion
#region Tabella Pac Terzi
if (dati.Tables["operazioniPACTerzi"].Rows.Count > 0)
{
AddElement(new SpacePDF(25));
#region Label
AddElement(new FormattedTextAreaPDF("(A) Nuove sottoscrizioni - Piani di accumulo capitale", EnvironmentFacade.RendererFacade.XLeftLimit) { BackGroundColor = ColorPDF.Bianco, FontColor = ColorPDF.Nero, FontSize = 8, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, BackGroundMarginLeft = 5 });
#endregion
var operazioniPACTerzi = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["operazioniPACTerzi"], dati.Tables["operazioniPACTerziFooter"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = true,
WidthSeparationLines = 0.5F,
RowHeight = 25,
HeaderHeight = 30
};
operazioniPACTerzi.Columns.Add(new ColumnPDF("nomeProdotto", 160, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "nomeProdotto", "Prodotto") { HeaderFontSize = 7 });
operazioniPACTerzi.Columns.Add(new ColumnPDF("codiceInterno", 50, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "codiceInterno", "Codice
Interno") { HeaderFontSize = 7 });
operazioniPACTerzi.Columns.Add(new ColumnPDF("primoVersamento", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "primoVersamento", "Primo
versamento (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPACTerzi.Columns.Add(new ColumnPDF("rata", 50, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "rata", "Rata (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPACTerzi.Columns.Add(new ColumnPDF("frequenza", 65, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "frequenza", "Frequenza/
Durata") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPACTerzi.Columns.Add(new ColumnPDF("valoreNominale", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "valoreNominale", "Valore
nominale (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPACTerzi.Columns.Add(new ColumnPDF("var", 45, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "var", "Rischio
Mercato
(VaR %)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPACTerzi.FooterColumns.Add(new ColumnPDF("Prodotto", 210, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo));
operazioniPACTerzi.FooterColumns.Add(new ColumnPDF("primoVersamento", 80, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
operazioniPACTerzi.FooterColumns.Add(new ColumnPDF("rata", 50, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
operazioniPACTerzi.FooterColumns.Add(new ColumnPDF("frequenza", 65, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
operazioniPACTerzi.FooterColumns.Add(new ColumnPDF("valoreNominale", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
operazioniPACTerzi.FooterColumns.Add(new ColumnPDF("var", 45, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
//Formatto la riga di aggregazione
for (int i = 0; i < dati.Tables["operazioniPACTerzi"].Rows.Count; i++)
{
if (dati.Tables["operazioniPACTerzi"].Rows[i][0].ToString() == "$")
{
operazioniPACTerzi.Cells[0, i].FontBold = true;
operazioniPACTerzi.Cells[0, i].ColSpan = 6;
}
else
{
operazioniPACTerzi.Cells[0, i].FontBold = false;
operazioniPACTerzi.Cells[0, i].ColSpan = 0;
operazioniPACTerzi.Cells[2, i].HorizontalAlignment =
operazioniPACTerzi.Cells[3, i].HorizontalAlignment =
operazioniPACTerzi.Cells[5, i].HorizontalAlignment =
operazioniPACTerzi.Cells[6, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
}
}
AddElement(operazioniPACTerzi);
}
#endregion
#region Tabella Fonditalia
if (dati.Tables["operazioniPACFonditalia"].Rows.Count > 0)
{
AddElement(new SpacePDF(25));
#region Label
AddElement(new FormattedTextAreaPDF("(A) Nuove sottoscrizioni - Piani di accumulo capitale", EnvironmentFacade.RendererFacade.XLeftLimit) { BackGroundColor = ColorPDF.Bianco, FontColor = ColorPDF.Nero, FontSize = 8, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, BackGroundMarginLeft = 5 });
#endregion
var operazioniPACFonditalia = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["operazioniPACFonditalia"], dati.Tables["operazioniPACFonditaliaFooter"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = true,
WidthSeparationLines = 0.5F,
RowHeight = 25,
HeaderHeight = 30
};
operazioniPACFonditalia.Columns.Add(new ColumnPDF("nomeProdotto", 170, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "nomeProdotto", "Prodotto") { HeaderFontSize = 7 });
operazioniPACFonditalia.Columns.Add(new ColumnPDF("codiceInterno", 40, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "codiceInterno", "Codice
Interno") { HeaderFontSize = 7 });
operazioniPACFonditalia.Columns.Add(new ColumnPDF("primoVersamento", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "primoVersamento", "Primo
versamento (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPACFonditalia.Columns.Add(new ColumnPDF("rata", 50, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "rata", "Rata (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPACFonditalia.Columns.Add(new ColumnPDF("frequenza", 65, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "frequenza", "Frequenza") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPACFonditalia.Columns.Add(new ColumnPDF("valoreNominale", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "valoreNominale", "Valore
nominale (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPACFonditalia.Columns.Add(new ColumnPDF("var", 45, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "var", "Rischio
Mercato
(VaR %)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPACFonditalia.FooterColumns.Add(new ColumnPDF("Prodotto", 210, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo));
operazioniPACFonditalia.FooterColumns.Add(new ColumnPDF("primoVersamento", 80, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
operazioniPACFonditalia.FooterColumns.Add(new ColumnPDF("rata", 50, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
operazioniPACFonditalia.FooterColumns.Add(new ColumnPDF("frequenza", 65, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
operazioniPACFonditalia.FooterColumns.Add(new ColumnPDF("valoreNominale", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
operazioniPACFonditalia.FooterColumns.Add(new ColumnPDF("var", 45, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
//Formatto la riga di aggregazione
for (int i = 0; i < dati.Tables["operazioniPACFonditalia"].Rows.Count; i++)
{
if (dati.Tables["operazioniPACFonditalia"].Rows[i][0].ToString() == "$")
{
operazioniPACFonditalia.Cells[0, i].FontBold =
operazioniPACFonditalia.Cells[2, i].FontBold =
operazioniPACFonditalia.Cells[3, i].FontBold =
operazioniPACFonditalia.Cells[4, i].FontBold =
operazioniPACFonditalia.Cells[5, i].FontBold = true;
}
else
{
operazioniPACFonditalia.Cells[2, i].FontBold =
operazioniPACFonditalia.Cells[3, i].FontBold =
operazioniPACFonditalia.Cells[4, i].FontBold =
operazioniPACFonditalia.Cells[5, i].FontBold =
operazioniPACFonditalia.Cells[0, i].FontBold = false;
}
operazioniPACFonditalia.Cells[2, i].HorizontalAlignment =
operazioniPACFonditalia.Cells[3, i].HorizontalAlignment =
operazioniPACFonditalia.Cells[5, i].HorizontalAlignment =
operazioniPACFonditalia.Cells[6, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
}
AddElement(operazioniPACFonditalia);
}
#endregion
#region Tabella Conversioni Programmate NS
if (dati.Tables["operazioniCPNS"].Rows.Count > 0)
{
AddElement(new SpacePDF(25));
#region Label
AddElement(new FormattedTextAreaPDF("(A) Nuove sottoscrizioni - Conversioni programmate", EnvironmentFacade.RendererFacade.XLeftLimit) { BackGroundColor = ColorPDF.Bianco, FontColor = ColorPDF.Nero, FontSize = 8, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, BackGroundMarginLeft = 5 });
#endregion
var operazioniCPNS = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["operazioniCPNS"], dati.Tables["operazioniCPNSFooter"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = true,
WidthSeparationLines = 0.5F,
RowHeight = 25,
HeaderHeight = 30
};
operazioniCPNS.Columns.Add(new ColumnPDF("Prodotto", 160, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Prodotto", "Nome prodotto") { HeaderFontSize = 7 });
operazioniCPNS.Columns.Add(new ColumnPDF("CodiceInterno", 30, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "CodiceInterno", "Codice
Interno") { HeaderFontSize = 7 });
operazioniCPNS.Columns.Add(new ColumnPDF("ControvaloreSottoscrizione", 75, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvaloreSottoscrizione", "Controvalore
sottoscrizione (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniCPNS.Columns.Add(new ColumnPDF("Durata", 45, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Rata", "Rata (€)
Durata") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniCPNS.Columns.Add(new ColumnPDF("Conversione", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Conversione", "Conversione (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniCPNS.Columns.Add(new ColumnPDF("ControvalorePropost", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvalorePropost", "Controvalore
proposto (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniCPNS.Columns.Add(new ColumnPDF("Var", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Var", "Rischio Mercato
(VaR %)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniCPNS.FooterColumns.Add(new ColumnPDF("NomeProdotto", 190, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo));
operazioniCPNS.FooterColumns.Add(new ColumnPDF("CtvSottoscrizione", 75, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
operazioniCPNS.FooterColumns.Add(new ColumnPDF("Durata", 45, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
operazioniCPNS.FooterColumns.Add(new ColumnPDF("Conversione", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
operazioniCPNS.FooterColumns.Add(new ColumnPDF("ControvalorePropost", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
operazioniCPNS.FooterColumns.Add(new ColumnPDF("Var", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
//Formatto la riga di aggregazione
for (int i = 0; i < dati.Tables["operazioniCPNS"].Rows.Count; i++)
{
if (dati.Tables["operazioniCPNS"].Rows[i][0].ToString() == "$")
{
operazioniCPNS.Cells[0, i].FontBold =
operazioniCPNS.Cells[2, i].FontBold =
operazioniCPNS.Cells[3, i].FontBold =
operazioniCPNS.Cells[4, i].FontBold =
operazioniCPNS.Cells[5, i].FontBold = true;
}
else
{
operazioniCPNS.Cells[2, i].FontBold =
operazioniCPNS.Cells[3, i].FontBold =
operazioniCPNS.Cells[4, i].FontBold =
operazioniCPNS.Cells[5, i].FontBold =
operazioniCPNS.Cells[0, i].FontBold = false;
}
operazioniCPNS.Cells[2, i].HorizontalAlignment =
operazioniCPNS.Cells[3, i].HorizontalAlignment =
operazioniCPNS.Cells[4, i].HorizontalAlignment =
operazioniCPNS.Cells[5, i].HorizontalAlignment =
operazioniCPNS.Cells[6, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
}
AddElement(operazioniCPNS);
}
#endregion
#region Tabella Conversioni Programmate PV
if (dati.Tables["operazioniCPCV"].Rows.Count > 0)
{
AddElement(new SpacePDF(25));
#region Label
AddElement(new FormattedTextAreaPDF("(B) Investimenti aggiuntivi / (C) Disinvestimenti - Conversioni programmate", EnvironmentFacade.RendererFacade.XLeftLimit) { BackGroundColor = ColorPDF.Bianco, FontColor = ColorPDF.Nero, FontSize = 8, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, BackGroundMarginLeft = 5 });
#endregion
var operazioniCPCV = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["operazioniCPCV"], dati.Tables["operazioniCPCVFooter"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = true,
WidthSeparationLines = 0.5F,
RowHeight = 25,
HeaderHeight = 30
};
operazioniCPCV.Columns.Add(new ColumnPDF("Prodotto", 160, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Prodotto", "Nome prodotto") { HeaderFontSize = 7 });
operazioniCPCV.Columns.Add(new ColumnPDF("CodiceInterno", 35, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "CodiceInterno", "Codice
Interno") { HeaderFontSize = 7 });
operazioniCPCV.Columns.Add(new ColumnPDF("ControvaloreAttuale", 65, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvaloreAttuale", "Controvalore
attuale (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniCPCV.Columns.Add(new ColumnPDF("Rata", 50, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Rata", "Rata(€)
Frequenza/
Durata") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniCPCV.Columns.Add(new ColumnPDF("Conversione", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Conversione", "Conversione (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniCPCV.Columns.Add(new ColumnPDF("ControvaloreProposto", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvaloreProposto", "Controvalore
proposto (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniCPCV.Columns.Add(new ColumnPDF("Var", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Var", "Rischio Mercato
(VaR %)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniCPCV.FooterColumns.Add(new ColumnPDF("NomeProdotto", 195, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo));
operazioniCPCV.FooterColumns.Add(new ColumnPDF("ControvaloreAttuale", 65, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
operazioniCPCV.FooterColumns.Add(new ColumnPDF("Durata", 50, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
operazioniCPCV.FooterColumns.Add(new ColumnPDF("Conversione", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
operazioniCPCV.FooterColumns.Add(new ColumnPDF("ControvaloreProposto", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
operazioniCPCV.FooterColumns.Add(new ColumnPDF("Var", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
//Formatto la riga di aggregazione
for (int i = 0; i < dati.Tables["operazioniCPCV"].Rows.Count; i++)
{
if (dati.Tables["operazioniCPCV"].Rows[i][0].ToString() == "$")
{
operazioniCPCV.Cells[0, i].FontBold =
operazioniCPCV.Cells[2, i].FontBold =
operazioniCPCV.Cells[3, i].FontBold =
operazioniCPCV.Cells[4, i].FontBold =
operazioniCPCV.Cells[5, i].FontBold = true;
}
else
{
operazioniCPCV.Cells[2, i].FontBold =
operazioniCPCV.Cells[3, i].FontBold =
operazioniCPCV.Cells[4, i].FontBold =
operazioniCPCV.Cells[5, i].FontBold =
operazioniCPCV.Cells[0, i].FontBold = false;
}
operazioniCPCV.Cells[2, i].HorizontalAlignment =
operazioniCPCV.Cells[3, i].HorizontalAlignment =
operazioniCPCV.Cells[4, i].HorizontalAlignment =
operazioniCPCV.Cells[5, i].HorizontalAlignment =
operazioniCPCV.Cells[6, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
}
AddElement(operazioniCPCV);
}
#endregion
#region Tabella delle CP OLD
//if (dati.Tables["operazioniLabelCP"].Rows.Count > 0)
//{
// Boolean isPS = false;
// if (dati.Tables["tipoOperazioni"].Rows.Count > 0)//è una PS
// {
// isPS = true;
// }
// AddElement(new SpacePDF(25));
// #region Label
// AddElement(new FormattedTextAreaPDF(isPS ? "Operazioni Servizio Step Up" : "Nuova sottoscrizione e Servizio Step Up", EnvironmentFacade.RendererFacade.XLeftLimit) { BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontSize = 8, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, BackGroundMarginLeft = 5 });
// AddElement(new SpacePDF(15));
// AddElement(new FormattedTextAreaPDF("Tipologia Step Up: ", EnvironmentFacade.RendererFacade.XLeftLimit, 90) { FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontBold = true, AutoIncrementYWritable = false, FontSize = 8 });
// AddElement(new FormattedTextAreaPDF(dati.Tables["operazioniLabelCP"].Rows[0]["Tipologia"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit + 90, 50) { AutoIncrementYWritable = false, FontSize = 7 });
// AddElement(new FormattedTextAreaPDF("Importo Step Up (€): ", EnvironmentFacade.RendererFacade.XLeftLimit + 150, 120) { FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontBold = true, AutoIncrementYWritable = false, FontSize = 8 });
// AddElement(new FormattedTextAreaPDF(Helper.FormatCurrency(dati.Tables["operazioniLabelCP"].Rows[0]["Importo"].ToString()), EnvironmentFacade.RendererFacade.XLeftLimit + 250, 70) { AutoIncrementYWritable = false, FontSize = 7 });
// AddElement(new FormattedTextAreaPDF("Durata: ", EnvironmentFacade.RendererFacade.XLeftLimit + 340, 40) { FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontBold = true, AutoIncrementYWritable = false, FontSize = 8 });
// AddElement(new FormattedTextAreaPDF(dati.Tables["operazioniLabelCP"].Rows[0]["Durata"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit + 380, 40) { AutoIncrementYWritable = false, FontSize = 7 });
// #endregion
// AddElement(new SpacePDF(25));
// #region tabella
// var tabellaCP = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["operazioniCP"], dati.Tables["operazioniCPfooter"])
// {
// Style = Style.ConsulenzaUnica,
// AlternateRow = false,
// ShowSeparationLines = true,
// WidthSeparationLines = 0.5F,
// RowHeight = 25
// };
// tabellaCP.Columns.Add(new ColumnPDF("Prodotto", 126, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Prodotto", "Prodotto") { HeaderFontSize = 7 });
// tabellaCP.Columns.Add(new ColumnPDF("StatoCP", 29, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Immagine, "StatoCP", string.Empty) { DeltaYContent = 10, ScaleColumnTypeImage = 0.50F });
// tabellaCP.Columns.Add(new ColumnPDF("ControvaloreSottoscrizione", 85, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvaloreSottoscrizione", (isPS ? "Controvalore
attuale (€)" : "Controvalore
sottoscrizione (€)")) { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaCP.Columns.Add(new ColumnPDF("ConversioneProgrammata", 85, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ConversioneProgrammata", "Servizio
Step Up (€)") { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaCP.Columns.Add(new ColumnPDF("Rata", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Rata", "Rata (€)") { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaCP.Columns.Add(new ColumnPDF("ControvaloreProposto", 85, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvaloreProposto", "Controvalore
" + (isAdeguata ? "proposto (€)" : "prospettico (€)")) { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaCP.Columns.Add(new ColumnPDF("VaR", 40, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "VaR", "VaR (%)") { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaCP.FooterColumns.Add(new ColumnPDF("Prodotto", 155, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo));
// tabellaCP.FooterColumns.Add(new ColumnPDF("ControvaloreSottoscrizione", 85, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
// tabellaCP.FooterColumns.Add(new ColumnPDF("ConversioneProgrammata", 85, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
// tabellaCP.FooterColumns.Add(new ColumnPDF("Rata", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
// tabellaCP.FooterColumns.Add(new ColumnPDF("ControvaloreProposto", 85, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
// tabellaCP.FooterColumns.Add(new ColumnPDF("VaR", 40, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
// tabellaCP.Notes.Add(
// new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella,
// "Servizio Step Up in uscita.",
// new[] { "" },
// string.Empty,
// TableNotePDF.TableNoteAsteriskPositionType.PieDiTabella,
// new ImagePDF(EnvironmentFacade.RendererFacade.XLeftLimit, 0.60F, "cpInUscita.png"))
// { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left });
// tabellaCP.Notes.Add(
// new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella,
// "Servizio Step Up in entrata.",
// new[] { "" },
// string.Empty,
// TableNotePDF.TableNoteAsteriskPositionType.PieDiTabella,
// new ImagePDF(EnvironmentFacade.RendererFacade.XLeftLimit, 0.60F, "cpInEntrata.png"))
// { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left });
// #endregion
// for (int i = 0; i < dati.Tables["operazioniCP"].Rows.Count; i++)
// {
// tabellaCP.Cells[2, i].HorizontalAlignment =
// tabellaCP.Cells[3, i].HorizontalAlignment =
// tabellaCP.Cells[4, i].HorizontalAlignment =
// tabellaCP.Cells[5, i].HorizontalAlignment =
// tabellaCP.Cells[6, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
// }
// AddElement(tabellaCP);
// AddElement(new SpacePDF(20));
//}
#endregion
#region Tabella delle PPI NS
if (dati.Tables["operazioniPPINS"].Rows.Count > 0)
{
AddElement(new SpacePDF(25));
#region Label
AddElement(new FormattedTextAreaPDF("(A) Nuove sottoscrizioni - Programma periodico di investimento", EnvironmentFacade.RendererFacade.XLeftLimit) { BackGroundColor = ColorPDF.Bianco, FontColor = ColorPDF.Nero, FontSize = 8, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, BackGroundMarginLeft = 5 });
#endregion
var operazioniPPINS = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["operazioniPPINS"], dati.Tables["operazioniPPINSFooter"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = true,
WidthSeparationLines = 0.5F,
RowHeight = 25,
HeaderHeight = 30
};
operazioniPPINS.Columns.Add(new ColumnPDF("NomeProdotto", 160, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "NomeProdotto", "Nome prodotto") { HeaderFontSize = 7 });
operazioniPPINS.Columns.Add(new ColumnPDF("CodiceInterno", 50, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "CodiceInterno", "Codice
Interno") { HeaderFontSize = 7, HeaderPaddingLeft = 9, PaddingLeft = 9 });
operazioniPPINS.Columns.Add(new ColumnPDF("CtvSottoscrizione", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "CtvSottoscrizione", "Controvalore
sottoscrizione (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPPINS.Columns.Add(new ColumnPDF("Frequenza", 50, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Frequenza", "Frequenza/
Durata") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPPINS.Columns.Add(new ColumnPDF("Conversione", 65, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Conversione", "Conversione (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPPINS.Columns.Add(new ColumnPDF("CtvProposto", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "CtvProposto", "Controvalore
proposto (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPPINS.Columns.Add(new ColumnPDF("Var", 45, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Var", "Rischio Mercato
(VaR %)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPPINS.FooterColumns.Add(new ColumnPDF("NomeProdotto", 210, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo));
operazioniPPINS.FooterColumns.Add(new ColumnPDF("CtvSottoscrizione", 80, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
operazioniPPINS.FooterColumns.Add(new ColumnPDF("Frequenza", 50, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
operazioniPPINS.FooterColumns.Add(new ColumnPDF("Conversione", 65, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
operazioniPPINS.FooterColumns.Add(new ColumnPDF("CtvProposto", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
operazioniPPINS.FooterColumns.Add(new ColumnPDF("Var", 45, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
//Formatto la riga di aggregazione
for (int i = 0; i < dati.Tables["operazioniPPINS"].Rows.Count; i++)
{
if (dati.Tables["operazioniPPINS"].Rows[i][0].ToString() == "$")
{
operazioniPPINS.Cells[0, i].FontBold =
operazioniPPINS.Cells[2, i].FontBold =
operazioniPPINS.Cells[3, i].FontBold =
operazioniPPINS.Cells[4, i].FontBold =
operazioniPPINS.Cells[5, i].FontBold = true;
}
else
{
operazioniPPINS.Cells[2, i].FontBold =
operazioniPPINS.Cells[3, i].FontBold =
operazioniPPINS.Cells[4, i].FontBold =
operazioniPPINS.Cells[5, i].FontBold =
operazioniPPINS.Cells[0, i].FontBold = false;
}
operazioniPPINS.Cells[2, i].HorizontalAlignment =
operazioniPPINS.Cells[4, i].HorizontalAlignment =
operazioniPPINS.Cells[5, i].HorizontalAlignment =
operazioniPPINS.Cells[6, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
}
AddElement(operazioniPPINS);
}
#endregion
#region Tabella delle PPI PV
AddElement(new SpacePDF(25));
if (dati.Tables["operazioniPPIPV"].Rows.Count > 0)
{
#region Label
AddElement(new FormattedTextAreaPDF("(B) Investimenti aggiuntivi / (C) Disinvestimenti - Programma periodico di investimento", EnvironmentFacade.RendererFacade.XLeftLimit) { BackGroundColor = ColorPDF.Bianco, FontColor = ColorPDF.Nero, FontSize = 8, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, BackGroundMarginLeft = 5 });
#endregion
var tabellaKS = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["operazioniPPIPV"], dati.Tables["operazioniPPIPVFooter"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = true,
WidthSeparationLines = 0.5F,
RowHeight = 25,
HeaderHeight = 30
};
tabellaKS.Columns.Add(new ColumnPDF("NomeProdotto", 160, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "NomeProdotto", "Nome prodotto") { HeaderFontSize = 7 });
tabellaKS.Columns.Add(new ColumnPDF("CodiceInterno", 50, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "CodiceInterno", "Codice
Interno") { HeaderFontSize = 7, HeaderPaddingLeft = 9, PaddingLeft = 9 });
tabellaKS.Columns.Add(new ColumnPDF("CtvSottoscrizione", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "CtvSottoscrizione", "Controvalore
sottoscrizione (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
tabellaKS.Columns.Add(new ColumnPDF("Frequenza", 50, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Frequenza", "Frequenza/
Durata") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
tabellaKS.Columns.Add(new ColumnPDF("Conversione", 65, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Conversione", "Conversione (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
tabellaKS.Columns.Add(new ColumnPDF("CtvProposto", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "CtvProposto", "Controvalore
proposto (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
tabellaKS.Columns.Add(new ColumnPDF("Var", 45, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Var", "Rischio Mercato
(VaR %)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
tabellaKS.FooterColumns.Add(new ColumnPDF("NomeProdotto", 210, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo));
tabellaKS.FooterColumns.Add(new ColumnPDF("CtvSottoscrizione", 80, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
tabellaKS.FooterColumns.Add(new ColumnPDF("Frequenza", 50, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
tabellaKS.FooterColumns.Add(new ColumnPDF("Conversione", 65, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
tabellaKS.FooterColumns.Add(new ColumnPDF("CtvProposto", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
tabellaKS.FooterColumns.Add(new ColumnPDF("Var", 45, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
//Formatto la riga di aggregazione
for (int i = 0; i < dati.Tables["operazioniPPINS"].Rows.Count; i++)
{
if (dati.Tables["operazioniPPINS"].Rows[i][0].ToString() == "$")
{
tabellaKS.Cells[0, i].FontBold =
tabellaKS.Cells[2, i].FontBold =
tabellaKS.Cells[3, i].FontBold =
tabellaKS.Cells[4, i].FontBold =
tabellaKS.Cells[5, i].FontBold = true;
}
else
{
tabellaKS.Cells[2, i].FontBold =
tabellaKS.Cells[3, i].FontBold =
tabellaKS.Cells[4, i].FontBold =
tabellaKS.Cells[5, i].FontBold =
tabellaKS.Cells[0, i].FontBold = false;
}
tabellaKS.Cells[2, i].HorizontalAlignment =
tabellaKS.Cells[4, i].HorizontalAlignment =
tabellaKS.Cells[5, i].HorizontalAlignment =
tabellaKS.Cells[6, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
}
AddElement(tabellaKS);
}
//if (dati.Tables["operazioniLabelKS"].Rows.Count > 0)
//{
// AddElement(new SpacePDF(25));
// #region Label
// AddElement(new FormattedTextAreaPDF("Nuova sottoscrizione di Old Mutual Wealth Italy - In Prima Persona con programma periodico di investimento", EnvironmentFacade.RendererFacade.XLeftLimit) { BackGroundMarginLeft = 5, BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontSize = 8, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
// AddElement(new SpacePDF(15));
// AddElement(new FormattedTextAreaPDF("Frequenza switch: ", EnvironmentFacade.RendererFacade.XLeftLimit, 90) { FontSize = 8, FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontBold = true, AutoIncrementYWritable = false });
// AddElement(new FormattedTextAreaPDF(dati.Tables["operazioniLabelKS"].Rows[0]["Frequenza"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit + 90, 50) { FontSize = 7, AutoIncrementYWritable = false });
// AddElement(new FormattedTextAreaPDF("Durata programma: ", EnvironmentFacade.RendererFacade.XLeftLimit + 180, 90) { FontSize = 8, FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontBold = true, AutoIncrementYWritable = false });
// AddElement(new FormattedTextAreaPDF(dati.Tables["operazioniLabelKS"].Rows[0]["Durata"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit + 275, 50) { FontSize = 7, AutoIncrementYWritable = false });
// AddElement(new FormattedTextAreaPDF("Importo programma: ", EnvironmentFacade.RendererFacade.XLeftLimit + 350, 100) { FontSize = 8, FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontBold = true, AutoIncrementYWritable = false });
// AddElement(new FormattedTextAreaPDF(Helper.FormatCurrency(dati.Tables["operazioniLabelKS"].Rows[0]["Importo"].ToString()), EnvironmentFacade.RendererFacade.XLeftLimit + 450) { FontSize = 7, AutoIncrementYWritable = true });
// AddElement(new SpacePDF(7));
// AddElement(new FormattedTextAreaPDF("Investimento iniziale: ", EnvironmentFacade.RendererFacade.XLeftLimit) { FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontBold = true, AutoIncrementYWritable = false, FontSize = 8 });
// AddElement(new FormattedTextAreaPDF(Helper.FormatCurrency(dati.Tables["operazioniLabelKS"].Rows[0]["Investimentoiniziale"].ToString()), EnvironmentFacade.RendererFacade.XLeftLimit + 105) { FontSize = 7, AutoIncrementYWritable = true });
// #endregion
// AddElement(new SpacePDF(15));
// #region tabella
// var tabellaKS = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["operazioniKS"], dati.Tables["operazioniKSfooter"])
// {
// Style = Style.ConsulenzaUnica,
// AlternateRow = false,
// ShowSeparationLines = true,
// WidthSeparationLines = 0.5F,
// RowHeight = 25
// };
// // Modifica per Saving Map
// tabellaKS.Columns.Add(new ColumnPDF("SavingMap", 13, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Immagine, "SavingMap", string.Empty) { DeltaYContent = 10, ScaleColumnTypeImage = 0.50F });
// // Fine Modifica
// tabellaKS.Columns.Add(new ColumnPDF("Prodotto", 167, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "ProdottoDestinazione", "Prodotto di destinazione") { HeaderFontSize = 7 });
// tabellaKS.Columns.Add(new ColumnPDF("Controvaloreattuale", 95, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvaloreattuale", "Controvalore
attuale (€)") { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaKS.Columns.Add(new ColumnPDF("Controvaloreproposto", 95, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvaloreproposto", "Controvalore
" + (isAdeguata ? "proposto (€)" : "prospettico (€)")) { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaKS.Columns.Add(new ColumnPDF("Rischiocredito", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Rischiocredito", "Rischio
Credito") { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaKS.Columns.Add(new ColumnPDF("VaR", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "RischioVaR", "VaR (%)") { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaKS.FooterColumns.Add(new ColumnPDF("Prodotto", 180, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo));
// tabellaKS.FooterColumns.Add(new ColumnPDF("Controvaloreattuale", 95, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
// tabellaKS.FooterColumns.Add(new ColumnPDF("Controvaloreproposto", 95, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
// tabellaKS.FooterColumns.Add(new ColumnPDF("Rischiocredito", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
// tabellaKS.FooterColumns.Add(new ColumnPDF("VaR", 80, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
// #endregion
// for (int i = 0; i < dati.Tables["operazioniKS"].Rows.Count; i++)
// {
// tabellaKS.Cells[2, i].HorizontalAlignment =
// tabellaKS.Cells[3, i].HorizontalAlignment =
// tabellaKS.Cells[4, i].HorizontalAlignment =
// tabellaKS.Cells[5, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
// }
// AddElement(tabellaKS);
// AddElement(new SpacePDF(20));
//}
#endregion
#region Tabella delle RS
if (dati.Tables["operazioniFVI"].Rows.Count > 0)
{
AddElement(new SpacePDF(25));
#region Label
AddElement(new FormattedTextAreaPDF("(A) Nuove sottoscrizioni - Premio periodico", EnvironmentFacade.RendererFacade.XLeftLimit) { BackGroundColor = ColorPDF.Bianco, FontColor = ColorPDF.Nero, FontSize = 8, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, BackGroundMarginLeft = 5 });
#endregion
var operazioniFVI = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["operazioniFVI"], dati.Tables["operazioniFVIFooter"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = true,
WidthSeparationLines = 0.5F,
RowHeight = 25,
HeaderHeight = 30
};
operazioniFVI.Columns.Add(new ColumnPDF("NomeProdotto", 160, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "NomeProdotto", "Nome prodotto") { HeaderFontSize = 7 });
operazioniFVI.Columns.Add(new ColumnPDF("CodiceInterno", 55, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "CodiceInterno", "Codice
Interno") { HeaderFontSize = 7, PaddingLeft = 10, HeaderPaddingLeft = 10 });
operazioniFVI.Columns.Add(new ColumnPDF("PremioUnicoAggiuntivo", 75, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "PremioUnicoAggiuntivo", "Premio unico
aggiuntivo (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniFVI.Columns.Add(new ColumnPDF("Frequenza", 50, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Frequenza", "Rata (€)/
Frequenza") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniFVI.Columns.Add(new ColumnPDF("NumeroAnnualita", 65, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "NumeroAnnualita", "Numero
annualità") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniFVI.Columns.Add(new ColumnPDF("PianoVersamenti", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "PianoVersamenti", "Piano dei
versamenti (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniFVI.Columns.Add(new ColumnPDF("Var", 45, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Var", "Rischio Mercato
(VaR %)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniFVI.FooterColumns.Add(new ColumnPDF("NomeProdotto", 215, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo));
operazioniFVI.FooterColumns.Add(new ColumnPDF("PremioUnicoAggiuntivo", 80, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
operazioniFVI.FooterColumns.Add(new ColumnPDF("Frequenza", 50, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
operazioniFVI.FooterColumns.Add(new ColumnPDF("NumeroAnnualita", 65, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
operazioniFVI.FooterColumns.Add(new ColumnPDF("PianoVersamenti", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
operazioniFVI.FooterColumns.Add(new ColumnPDF("Var", 45, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
//Formatto la riga di aggregazione
for (int i = 0; i < dati.Tables["operazioniFVI"].Rows.Count; i++)
{
if (dati.Tables["operazioniFVI"].Rows[i][0].ToString() == "$")
{
operazioniFVI.Cells[0, i].FontBold =
operazioniFVI.Cells[2, i].FontBold =
operazioniFVI.Cells[3, i].FontBold =
operazioniFVI.Cells[4, i].FontBold =
operazioniFVI.Cells[5, i].FontBold = true;
}
else
{
operazioniFVI.Cells[2, i].FontBold =
operazioniFVI.Cells[3, i].FontBold =
operazioniFVI.Cells[4, i].FontBold =
operazioniFVI.Cells[5, i].FontBold =
operazioniFVI.Cells[0, i].FontBold = false;
}
operazioniFVI.Cells[2, i].HorizontalAlignment =
operazioniFVI.Cells[3, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
operazioniFVI.Cells[4, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
operazioniFVI.Cells[5, i].HorizontalAlignment =
operazioniFVI.Cells[6, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
}
AddElement(operazioniFVI);
}
#endregion
#region Tabella delle RM OLD
//if (dati.Tables["operazioniLabelRM"].Rows.Count > 0)
//{
// AddElement(new SpacePDF(25));
// #region Label
// AddElement(new FormattedTextAreaPDF("Nuova sottoscrizione a premio periodico", EnvironmentFacade.RendererFacade.XLeftLimit) { BackGroundMarginLeft = 5, BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontSize = 8, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
// AddElement(new SpacePDF(15));
// AddElement(new FormattedTextAreaPDF("Tipo rateazione: ", EnvironmentFacade.RendererFacade.XLeftLimit, 80) { FontSize = 8, FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontBold = true, AutoIncrementYWritable = false });
// AddElement(new FormattedTextAreaPDF(dati.Tables["operazioniLabelRM"].Rows[0]["TipoRata"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit + 80) { FontSize = 7, AutoIncrementYWritable = false });
// AddElement(new FormattedTextAreaPDF("Rata programmata (€): ", EnvironmentFacade.RendererFacade.XLeftLimit + 180, 105) { FontSize = 8, FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontBold = true, AutoIncrementYWritable = false });
// AddElement(new FormattedTextAreaPDF(Helper.FormatCurrency(dati.Tables["operazioniLabelRM"].Rows[0]["Rata"].ToString()), EnvironmentFacade.RendererFacade.XLeftLimit + 290, 50) { FontSize = 7, AutoIncrementYWritable = false });
// AddElement(new FormattedTextAreaPDF("Numero annualità: ", EnvironmentFacade.RendererFacade.XLeftLimit + 380, 100) { FontSize = 8, FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontBold = true, AutoIncrementYWritable = false });
// AddElement(new FormattedTextAreaPDF(dati.Tables["operazioniLabelRM"].Rows[0]["Numero"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit + 470) { FontSize = 7, AutoIncrementYWritable = true });
// AddElement(new SpacePDF(7));
// AddElement(new FormattedTextAreaPDF("Premio unico aggiuntivo (€): ", EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 8, FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontBold = true, AutoIncrementYWritable = false });
// AddElement(new FormattedTextAreaPDF(Helper.FormatCurrency(dati.Tables["operazioniLabelRM"].Rows[0]["Premio"].ToString()), EnvironmentFacade.RendererFacade.XLeftLimit + 135) { FontSize = 7, AutoIncrementYWritable = true });
// #endregion
// AddElement(new SpacePDF(15));
// #region tabella
// var tabellaRM = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["operazioniRM"], dati.Tables["operazioniRMfooter"])
// {
// Style = Style.ConsulenzaUnica,
// AlternateRow = false,
// ShowSeparationLines = true,
// WidthSeparationLines = 0.5F,
// RowHeight = 25
// };
// // Modifica per Saving Map
// tabellaRM.Columns.Add(new ColumnPDF("SavingMap", 13, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Immagine, "SavingMap", string.Empty) { DeltaYContent = 10, ScaleColumnTypeImage = 0.50F });
// // Fine Modifica
// tabellaRM.Columns.Add(new ColumnPDF("Prodotto", 127, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Prodotto", "Prodotto") { HeaderFontSize = 7 });
// tabellaRM.Columns.Add(new ColumnPDF("Controvaloreattuale", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Rata", "Rata programm.
(€)") { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaRM.Columns.Add(new ColumnPDF("Controvaloreproposto", 90, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Premioaggiuntivo", "Premio unico
aggiuntivo (€)") { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaRM.Columns.Add(new ColumnPDF("Premiversati", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Premiversati", "Premi versati
sottoscr. (€)") { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaRM.Columns.Add(new ColumnPDF("Rischiocredito", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Rischiocredito", "Rischio
Credito") { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaRM.Columns.Add(new ColumnPDF("VaR", 60, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "RischioVaR", "VaR (%)") { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaRM.FooterColumns.Add(new ColumnPDF("Prodotto", 140, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo));
// tabellaRM.FooterColumns.Add(new ColumnPDF("Controvaloreattuale", 80, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
// tabellaRM.FooterColumns.Add(new ColumnPDF("Controvaloreproposto", 90, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
// tabellaRM.FooterColumns.Add(new ColumnPDF("Premiversati", 80, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
// tabellaRM.FooterColumns.Add(new ColumnPDF("Rischiocredito", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
// tabellaRM.FooterColumns.Add(new ColumnPDF("VaR", 60, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
// for (int i = 0; i < dati.Tables["operazioniRM"].Rows.Count; i++)
// {
// tabellaRM.Cells[2, i].HorizontalAlignment =
// tabellaRM.Cells[3, i].HorizontalAlignment =
// tabellaRM.Cells[4, i].HorizontalAlignment =
// tabellaRM.Cells[5, i].HorizontalAlignment =
// tabellaRM.Cells[6, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
// }
// #endregion
// AddElement(tabellaRM);
//}
#endregion
#region Fondo Pensione
if (dati.Tables["operazioniFondoPensione"].Rows.Count > 0)
{
AddElement(new SpacePDF(25));
#region Label
//AddElement(new FormattedTextAreaPDF(Helper.ReplaceVariables("Adesione al Fondo Pensione $/Banca/$", base.EnvironmentFacade.ReportEnvironment), EnvironmentFacade.RendererFacade.XLeftLimit) { BackGroundMarginLeft = 5, BackGroundColor = ColorPDF.Standard_Grigio_SfondoColonnaTabella, FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontSize = 8, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
//AddElement(new SpacePDF(15));
//AddElement(new FormattedTextAreaPDF("Adesione con trasferimento da altra forma pensionistica: ", EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 8, FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontBold = true, AutoIncrementYWritable = false });
//AddElement(new FormattedTextAreaPDF(dati.Tables["operazioniLabelFondoPensione"].Rows[0]["Adesionetrasferimento"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit + 260) { FontSize = 7, AutoIncrementYWritable = true });
//AddElement(new SpacePDF(10));
//AddElement(new FormattedTextAreaPDF("Contributi programmati per la prestazione principale", EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 8, FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontBold = true, AutoIncrementYWritable = true });
//AddElement(new SpacePDF(7));
//AddElement(new FormattedTextAreaPDF("Contributo dell'Aderente: ", EnvironmentFacade.RendererFacade.XLeftLimit) { FontColor = ColorPDF.Nero, FontSize = 7, FontBold = true, AutoIncrementYWritable = false });
//AddElement(new FormattedTextAreaPDF(dati.Tables["operazioniLabelFondoPensione"].Rows[0]["ContributoAderente"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit + 110) { FontSize = 7, AutoIncrementYWritable = true });
//AddElement(new SpacePDF(7));
//AddElement(new FormattedTextAreaPDF("Contributo del Datore di lavoro: ", EnvironmentFacade.RendererFacade.XLeftLimit) { FontColor = ColorPDF.Nero, FontSize = 7, FontBold = true, AutoIncrementYWritable = false });
//AddElement(new FormattedTextAreaPDF(dati.Tables["operazioniLabelFondoPensione"].Rows[0]["ContributoDatorelavoro"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit + 135) { FontSize = 7, AutoIncrementYWritable = true });
//AddElement(new SpacePDF(7));
//AddElement(new FormattedTextAreaPDF("Conferimento del TFR: ", EnvironmentFacade.RendererFacade.XLeftLimit) { FontColor = ColorPDF.Nero, FontSize = 7, FontBold = true, AutoIncrementYWritable = false });
//AddElement(new FormattedTextAreaPDF(dati.Tables["operazioniLabelFondoPensione"].Rows[0]["ConferimentoTFR"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit + 100) { FontSize = 7, AutoIncrementYWritable = true });
//AddElement(new SpacePDF(10));
//AddElement(new FormattedTextAreaPDF("Contributi e premi versati all'adesione (€)", EnvironmentFacade.RendererFacade.XLeftLimit) { FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontSize = 8, FontBold = true, AutoIncrementYWritable = true });
//AddElement(new SpacePDF(7));
//AddElement(new FormattedTextAreaPDF("Contributo dell'Aderente: ", EnvironmentFacade.RendererFacade.XLeftLimit) { FontColor = ColorPDF.Nero, FontSize = 7, FontBold = true, AutoIncrementYWritable = false });
//AddElement(new FormattedTextAreaPDF(Helper.FormatCurrency(dati.Tables["operazioniLabelFondoPensione"].Rows[0]["AdesioneAderente"].ToString()), EnvironmentFacade.RendererFacade.XLeftLimit + 110) { FontSize = 7, AutoIncrementYWritable = false });
////AddElement(new FormattedTextAreaPDF("Premio di primo anno per le prestazioni assicurative accessorie: ", EnvironmentFacade.RendererFacade.XLeftLimit+230) { FontColor = ColorPDF.Nero, FontSize = 7, FontBold = true, AutoIncrementYWritable = false });
//AddElement(new FormattedTextAreaPDF("Contributo aggiuntivo dell’Aderente: ", EnvironmentFacade.RendererFacade.XLeftLimit + 230) { FontColor = ColorPDF.Nero, FontSize = 7, FontBold = true, AutoIncrementYWritable = false });
//AddElement(new FormattedTextAreaPDF(dati.Tables["operazioniLabelFondoPensione"].Rows[0]["PremioPrimoAnno"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit + 385) { FontSize = 7, AutoIncrementYWritable = true });
//AddElement(new SpacePDF(15));
//AddElement(new FormattedTextAreaPDF("Destinazione dei versamenti al Fondo Pensione", EnvironmentFacade.RendererFacade.XLeftLimit) { FontColor = ColorPDF.ConsulenzaUnica_Rosso, FontSize = 8, FontBold = true, AutoIncrementYWritable = true });
//AddElement(new SpacePDF(10));
AddElement(new FormattedTextAreaPDF("(A) Nuove sottoscrizioni - Fondo Pensione Fideuram", EnvironmentFacade.RendererFacade.XLeftLimit) { BackGroundColor = ColorPDF.Bianco, FontColor = ColorPDF.Nero, FontSize = 8, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, BackGroundMarginLeft = 5 });
#endregion
#region tabella
var tabellaFondoPensione = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["operazioniFondoPensione"], dati.Tables["operazioniFondoPensioneFooter"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = true,
WidthSeparationLines = 0.5F,
RowHeight = 25,
RowsPadding = 3,
HeaderHeight = 30,
};
// Modifica per Saving Map
tabellaFondoPensione.Columns.Add(new ColumnPDF("SavingMap", 13, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Immagine, "SavingMap", string.Empty) { DeltaYContent = 10, ScaleColumnTypeImage = 0.50F });
// Fine Modifica
tabellaFondoPensione.Columns.Add(new ColumnPDF("Prodotto", 149, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Prodotto", "Prodotto") { HeaderFontSize = 7 });
tabellaFondoPensione.Columns.Add(new ColumnPDF("ContributiversatiAdesione", 75, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ContributiversatiAdesione", "Contributi versati
all'adesione (€)") { HeaderFontSize = 7, PaddingRight = 5 });
tabellaFondoPensione.Columns.Add(new ColumnPDF("ContrAderenteDatorePerc", 60, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ContrAderenteDatorePerc", "Contributo Aderente/
Datore (%)") { HeaderFontSize = 7, PaddingRight = 4 });
tabellaFondoPensione.Columns.Add(new ColumnPDF("ContrAderenteDatore", 60, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ContrAderenteDatore", "Contributo Aderente/
Datore (€)") { HeaderFontSize = 7, PaddingRight = 4 });
tabellaFondoPensione.Columns.Add(new ColumnPDF("TFR", 40, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "TFR", "TFR (%)") { HeaderFontSize = 7, PaddingRight = 4 });
tabellaFondoPensione.Columns.Add(new ColumnPDF("Altraformapensione", 68, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Altraformapensione", "Trasf. da altra
forma pens. (%)") { HeaderFontSize = 7, PaddingRight = 4 });
tabellaFondoPensione.Columns.Add(new ColumnPDF("Var", 45, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Var", "Rischio
Mercato
VaR (%)") { HeaderFontSize = 7, PaddingRight = 4 });
tabellaFondoPensione.FooterColumns.Add(new ColumnPDF("Prodotto", 162, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo));
tabellaFondoPensione.FooterColumns.Add(new ColumnPDF("ContributiversatiAdesione", 75, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
tabellaFondoPensione.FooterColumns.Add(new ColumnPDF("ContrAderenteDatorePerc", 60, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
tabellaFondoPensione.FooterColumns.Add(new ColumnPDF("ContrAderenteDatore", 60, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 });
tabellaFondoPensione.FooterColumns.Add(new ColumnPDF("TFR", 40, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
tabellaFondoPensione.FooterColumns.Add(new ColumnPDF("Altraformapensione", 68, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 4 });
tabellaFondoPensione.FooterColumns.Add(new ColumnPDF("Var", 45, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale));
for (int i = 0; i < dati.Tables["operazioniFondoPensione"].Rows.Count; i++)
{
if (dati.Tables["operazioniFondoPensione"].Rows[i][0].ToString() == "$")
{
tabellaFondoPensione.Cells[1, i].FontBold =
tabellaFondoPensione.Cells[2, i].FontBold =
tabellaFondoPensione.Cells[3, i].FontBold =
tabellaFondoPensione.Cells[4, i].FontBold =
tabellaFondoPensione.Cells[5, i].FontBold = true;
tabellaFondoPensione.Cells[1, i].ColSpan = 2;
}
else
{
tabellaFondoPensione.Cells[1, i].FontBold =
tabellaFondoPensione.Cells[2, i].FontBold =
tabellaFondoPensione.Cells[3, i].FontBold =
tabellaFondoPensione.Cells[4, i].FontBold =
tabellaFondoPensione.Cells[5, i].FontBold = false;
tabellaFondoPensione.Cells[1, i].ColSpan = 0;
}
tabellaFondoPensione.Cells[2, i].HorizontalAlignment =
tabellaFondoPensione.Cells[3, i].HorizontalAlignment =
tabellaFondoPensione.Cells[4, i].HorizontalAlignment =
tabellaFondoPensione.Cells[5, i].HorizontalAlignment =
tabellaFondoPensione.Cells[6, i].HorizontalAlignment =
tabellaFondoPensione.Cells[7, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
}
#endregion
AddElement(tabellaFondoPensione);
}
#endregion
}
protected sealed override DataTable GetDataTable()
{
return null;
}
protected sealed override DataSet GetDataSet()
{
#region datatable
var ds = new DataSet();
ds.Tables.Add(new DataTable("sintesiOperazioniLabel"));
ds.Tables.Add(new DataTable("sintesiOperazioni"));
//ds.Tables.Add(new DataTable("sintesiOperazionifooter"));
ds.Tables.Add(new DataTable("tipoOperazioni"));
ds.Tables.Add(new DataTable("operazioni"));
ds.Tables.Add(new DataTable("DToperazioni"));
ds.Tables.Add(new DataTable("operazionifooter"));
ds.Tables.Add(new DataTable("operazioniLabelPACTerzi"));
ds.Tables.Add(new DataTable("operazioniPACTerzi"));
ds.Tables.Add(new DataTable("operazioniPACTerziFooter"));
ds.Tables.Add(new DataTable("operazioniLabelPACFonditalia"));
ds.Tables.Add(new DataTable("operazioniPACFonditalia"));
ds.Tables.Add(new DataTable("operazioniPACFonditaliaFooter"));
ds.Tables.Add(new DataTable("operazioniLabelCPNS"));
ds.Tables.Add(new DataTable("operazioniCPNS"));
ds.Tables.Add(new DataTable("operazioniCPNSFooter"));
ds.Tables.Add(new DataTable("operazioniLabelCPCV"));
ds.Tables.Add(new DataTable("operazioniCPCV"));
ds.Tables.Add(new DataTable("operazioniCPCVFooter"));
ds.Tables.Add(new DataTable("operazioniLabelCP"));
ds.Tables.Add(new DataTable("operazioniCP"));
ds.Tables.Add(new DataTable("operazioniCPfooter"));
ds.Tables.Add(new DataTable("operazioniLabelPPINS"));
ds.Tables.Add(new DataTable("operazioniPPINS"));
ds.Tables.Add(new DataTable("operazioniPPINSFooter"));
ds.Tables.Add(new DataTable("operazioniLabelPPIPV"));//ex KE
ds.Tables.Add(new DataTable("operazioniPPIPV"));
ds.Tables.Add(new DataTable("operazioniPPIPVFooter"));
ds.Tables.Add(new DataTable("operazioniLabelFVI"));
ds.Tables.Add(new DataTable("operazioniFVI"));
ds.Tables.Add(new DataTable("operazioniFVIFooter"));
ds.Tables.Add(new DataTable("operazioniLabelFondoPensione"));
ds.Tables.Add(new DataTable("operazioniFondoPensione"));
ds.Tables.Add(new DataTable("operazioniFondoPensionefooter"));
#endregion
#region dati e condizioni
var posizioni = datiSeiUnico.propostaUnit().dettaglioProdotti.dettaglioProdotti;
var dettaglioOperazioni = datiSeiUnico.propostaUnit().dettaglioOperazioni.elencoDettagliOperazioni.ToList();
string[] codInterno = { };
string[] codTipoOperazione = { };
decimal ctvSottoprodotto;
#endregion
var listaopnormali = posizioni.ToList();
var listaoperazioninormali = dettaglioOperazioni.ToList();
var listaLiquiditaKEKSPV = new posizioneOperazione[0].ToList();
#region sintesiOperazioni
ds.Tables["sintesiOperazioni"].Columns.Add(new DataColumn("nuoveSottoscrizioni", typeof(decimal)));
ds.Tables["sintesiOperazioni"].Columns.Add(new DataColumn("aggiuntivi", typeof(decimal)));
ds.Tables["sintesiOperazioni"].Columns.Add(new DataColumn("disinvestimenti", typeof(decimal)));
ds.Tables["sintesiOperazioni"].Columns.Add(new DataColumn("saldo", typeof(decimal)));
decimal totaleNuoveSottoscrizioni = 0;
decimal totaleAggiuntivi = 0;
decimal totaleDisinvestimenti = 0;
foreach (var item in from p in posizioni
join d in dettaglioOperazioni on new { p.chiaveAggregazione, p.posizionePro } equals new { d.chiaveAggregazione, d.posizionePro }
select new { posizione = p, dettaglioOperazione = d })
{
var operazioni = item.dettaglioOperazione.listaOperzioni.FirstOrDefault();// && !(codTipoOperazione.Contains(item.posizione.tipoOperazione) && tipoContratto.Contains(l.stDettaglioContratto.tipoContratto)));
if (operazioni != null)
{
if (operazioni.codTipoOperazione.Equals("NS"))
{
totaleNuoveSottoscrizioni = totaleNuoveSottoscrizioni + item.posizione.ctvPro;
}
else if (operazioni.investi > 0)
{
totaleAggiuntivi = totaleAggiuntivi + item.posizione.investi;
}
else
{
totaleDisinvestimenti = totaleDisinvestimenti + item.posizione.disinvesti * (-1);
}
}
}
ds.Tables["sintesiOperazioni"].Rows.Add(
totaleNuoveSottoscrizioni,
totaleAggiuntivi,
totaleDisinvestimenti,
totaleNuoveSottoscrizioni + totaleAggiuntivi + totaleDisinvestimenti);
#endregion
#region PAC Terzi
ds.Tables["operazioniPACTerzi"].Columns.Add(new DataColumn("id", typeof(string)));
ds.Tables["operazioniPACTerzi"].Columns.Add(new DataColumn("nomeProdotto", typeof(string)));
ds.Tables["operazioniPACTerzi"].Columns.Add(new DataColumn("codiceInterno", typeof(string)));
ds.Tables["operazioniPACTerzi"].Columns.Add(new DataColumn("primoVersamento", typeof(decimal)));
ds.Tables["operazioniPACTerzi"].Columns.Add(new DataColumn("rata", typeof(decimal)));
ds.Tables["operazioniPACTerzi"].Columns.Add(new DataColumn("frequenza", typeof(string)));
ds.Tables["operazioniPACTerzi"].Columns.Add(new DataColumn("valoreNominale", typeof(decimal)));
ds.Tables["operazioniPACTerzi"].Columns.Add(new DataColumn("var", typeof(decimal)));
ds.Tables["operazioniPACTerziFooter"].Columns.Add(new DataColumn("Prodotto", typeof(string)));
ds.Tables["operazioniPACTerziFooter"].Columns.Add(new DataColumn("primoVersamento", typeof(decimal)));
ds.Tables["operazioniPACTerziFooter"].Columns.Add(new DataColumn("rata", typeof(string)));
ds.Tables["operazioniPACTerziFooter"].Columns.Add(new DataColumn("frequenza", typeof(string)));
ds.Tables["operazioniPACTerziFooter"].Columns.Add(new DataColumn("valoreNominale", typeof(string)));
ds.Tables["operazioniPACTerziFooter"].Columns.Add(new DataColumn("var", typeof(string)));
codTipoOperazione = new string[] { "NS" };
codInterno = new string[] { "01"};
string [] tipoProdotto = new string[] { "FI" };
string [] contestoWizard = new string[] { "PAC" };
var mapPosizioneOperazioni = new Dictionary>();
foreach (var item in from p in posizioni
join d in dettaglioOperazioni on new { p.chiaveAggregazione, p.posizionePro } equals new { d.chiaveAggregazione, d.posizionePro }
where !codInterno.Contains(p.prodotto.codInterno) && tipoProdotto.Contains(p.prodotto.tipoProdotto)
orderby p.ctvPro descending
select new { posizione = p, dettaglioOperazione = d })
{
var operazioni = from l in item.dettaglioOperazione.listaOperzioni
where codTipoOperazione.Contains(l.codTipoOperazione) && contestoWizard.Contains(l.stDettaglioContratto.contestoWizard)
select l;
if (operazioni.Count() != 1)
continue;
listaopnormali.Remove(item.posizione);
var operazione = operazioni.LastOrDefault();
string key = item.posizione.prodotto.nomeContratto + " - " + item.posizione.codContratto;
if (!mapPosizioneOperazioni.ContainsKey(key))
{
mapPosizioneOperazioni[key] = new List();
}
posizioneOperazione obj = new posizioneOperazione();
obj.posizione = item.posizione;
obj.operazione = operazione;
mapPosizioneOperazioni[key].Add(obj);
}
foreach (var descContratto in mapPosizioneOperazioni.Keys)
{
ds.Tables["operazioniPACTerzi"].Rows.Add(
"$",descContratto, "", null, null, "",null, null
);
foreach (var posOper in mapPosizioneOperazioni[descContratto])
{
ds.Tables["operazioniPACTerzi"].Rows.Add(
"",
posOper.posizione.prodotto.nomeProdotto,
posOper.posizione.prodotto.codSottoprodottoFE,
posOper.operazione.primoVersamento,
posOper.operazione.importoRata,
decodeFrequenza(posOper.operazione.frequenza) + "
" + posOper.operazione.durata + " " + posOper.operazione.tipoDurata,
posOper.operazione.valoreNominalePiano,
posOper.operazione.rischioMercato
);
}
}
ds.Tables["operazioniPACTerziFooter"].Rows.Add(
"Totale",
ds.Tables["operazioniPACTerzi"].AsEnumerable().Where(x => x.Field("ID") != "$").Sum(x => x.Field("primoVersamento")),
"-",
"-",
"-",
"-"
);
#endregion
#region PAC Fonditalia
ds.Tables["operazioniPACFonditalia"].Columns.Add(new DataColumn("id", typeof(string)));
ds.Tables["operazioniPACFonditalia"].Columns.Add(new DataColumn("nomeProdotto", typeof(string)));
ds.Tables["operazioniPACFonditalia"].Columns.Add(new DataColumn("codiceInterno", typeof(string)));
ds.Tables["operazioniPACFonditalia"].Columns.Add(new DataColumn("primoVersamento", typeof(decimal)));
ds.Tables["operazioniPACFonditalia"].Columns.Add(new DataColumn("rata", typeof(decimal)));
ds.Tables["operazioniPACFonditalia"].Columns.Add(new DataColumn("frequenza", typeof(string)));
ds.Tables["operazioniPACFonditalia"].Columns.Add(new DataColumn("valoreNominale", typeof(decimal)));
ds.Tables["operazioniPACFonditalia"].Columns.Add(new DataColumn("var", typeof(decimal)));
ds.Tables["operazioniPACFonditaliaFooter"].Columns.Add(new DataColumn("Prodotto", typeof(string)));
ds.Tables["operazioniPACFonditaliaFooter"].Columns.Add(new DataColumn("primoVersamento", typeof(decimal)));
ds.Tables["operazioniPACFonditaliaFooter"].Columns.Add(new DataColumn("rata", typeof(string)));
ds.Tables["operazioniPACFonditaliaFooter"].Columns.Add(new DataColumn("frequenza", typeof(string)));
ds.Tables["operazioniPACFonditaliaFooter"].Columns.Add(new DataColumn("valoreNominale", typeof(string)));
ds.Tables["operazioniPACFonditaliaFooter"].Columns.Add(new DataColumn("var", typeof(string)));
codTipoOperazione = new string[] { "NS" };
codInterno = new string[] { "01" };
tipoProdotto = new string[] { "FI" };
contestoWizard = new string[] { "PAC" };
mapPosizioneOperazioni = new Dictionary>();
foreach (var item in from p in posizioni
join d in dettaglioOperazioni on new { p.chiaveAggregazione, p.posizionePro } equals new { d.chiaveAggregazione, d.posizionePro }
where codInterno.Contains(p.prodotto.codInterno) && tipoProdotto.Contains(p.prodotto.tipoProdotto)
orderby p.ctvPro descending
select new { posizione = p, dettaglioOperazione = d })
{
var operazioni = from l in item.dettaglioOperazione.listaOperzioni
where codTipoOperazione.Contains(l.codTipoOperazione) && contestoWizard.Contains(l.stDettaglioContratto.contestoWizard)
select l;
if (operazioni.Count() != 1)
continue;
listaopnormali.Remove(item.posizione);
var operazione = operazioni.LastOrDefault();
string key = item.posizione.prodotto.nomeContratto + " - " + item.posizione.codContratto;
if (!mapPosizioneOperazioni.ContainsKey(key))
{
mapPosizioneOperazioni[key] = new List();
}
posizioneOperazione obj = new posizioneOperazione();
obj.posizione = item.posizione;
obj.operazione = operazione;
mapPosizioneOperazioni[key].Add(obj);
}
foreach (var descContratto in mapPosizioneOperazioni.Keys)
{
ds.Tables["operazioniPACFonditalia"].Rows.Add(
"$", descContratto, "",
mapPosizioneOperazioni[descContratto].Sum(x => x.operazione.primoVersamento),
mapPosizioneOperazioni[descContratto].Sum(x => x.operazione.rataProgrammata),
"-",
mapPosizioneOperazioni[descContratto].Sum(x => x.operazione.valoreNominalePiano),
null
);
foreach (var posOper in mapPosizioneOperazioni[descContratto])
{
ds.Tables["operazioniPACFonditalia"].Rows.Add(
"",
posOper.posizione.prodotto.nomeProdotto,
posOper.posizione.prodotto.codSottoprodottoFE,
posOper.operazione.primoVersamento,
posOper.operazione.importoRata,
decodeFrequenza(posOper.operazione.stDettaglioContratto.frequenza),
posOper.operazione.valoreNominalePiano,
posOper.operazione.rischioMercato
);
}
}
ds.Tables["operazioniPACFonditaliaFooter"].Rows.Add(
"Totale",
ds.Tables["operazioniPACFonditalia"].AsEnumerable().Where(x => x.Field("ID") != "$").Sum(x => x.Field("primoVersamento")),
"-",
"-",
"-",
"-"
);
#endregion
#region Conversioni Programmate NS
ds.Tables["operazioniCPNS"].Columns.Add(new DataColumn("id", typeof(string)));
ds.Tables["operazioniCPNS"].Columns.Add(new DataColumn("Prodotto", typeof(string)));
ds.Tables["operazioniCPNS"].Columns.Add(new DataColumn("CodiceInterno", typeof(string)));
ds.Tables["operazioniCPNS"].Columns.Add(new DataColumn("ControvaloreSottoscrizione", typeof(decimal)));
ds.Tables["operazioniCPNS"].Columns.Add(new DataColumn("Rata", typeof(string)));
ds.Tables["operazioniCPNS"].Columns.Add(new DataColumn("Durata", typeof(string)));
ds.Tables["operazioniCPNS"].Columns.Add(new DataColumn("Conversione", typeof(decimal)));
ds.Tables["operazioniCPNS"].Columns.Add(new DataColumn("ControvalorePropost", typeof(decimal)));
ds.Tables["operazioniCPNS"].Columns.Add(new DataColumn("Var", typeof(string)));
ds.Tables["operazioniCPNSFooter"].Columns.Add(new DataColumn("Prodotto", typeof(string)));
ds.Tables["operazioniCPNSFooter"].Columns.Add(new DataColumn("ControvaloreAttuale", typeof(decimal)));
ds.Tables["operazioniCPNSFooter"].Columns.Add(new DataColumn("Rata", typeof(string)));
ds.Tables["operazioniCPNSFooter"].Columns.Add(new DataColumn("Conversione", typeof(string)));
ds.Tables["operazioniCPNSFooter"].Columns.Add(new DataColumn("CtvProposto", typeof(decimal)));
ds.Tables["operazioniCPNSFooter"].Columns.Add(new DataColumn("Var", typeof(string)));
codTipoOperazione = new string[] { "NS" };
codInterno = new string[] { "XY", "FO" };
mapPosizioneOperazioni = new Dictionary>();
foreach (var item in from p in posizioni
join d in dettaglioOperazioni on new { p.chiaveAggregazione, p.posizionePro } equals new { d.chiaveAggregazione, d.posizionePro }
where codInterno.Contains(p.prodotto.codInterno)
orderby p.ctvPro descending
select new { posizione = p, dettaglioOperazione = d })
{
var operazioni = from l in item.dettaglioOperazione.listaOperzioni
where codTipoOperazione.Contains(l.codTipoOperazione) && (l.importoConversioneProgrammata != 0)
select l;
var operazione = operazioni.LastOrDefault();
if (operazione == null)
{
continue;
}
listaopnormali.Remove(item.posizione);
string key = item.posizione.prodotto.nomeContratto + " - " + item.posizione.codContratto;
if (!mapPosizioneOperazioni.ContainsKey(key))
{
mapPosizioneOperazioni[key] = new List();
}
posizioneOperazione obj = new posizioneOperazione();
obj.posizione = item.posizione;
obj.operazione = operazione;
mapPosizioneOperazioni[key].Add(obj);
}
foreach (var descContratto in mapPosizioneOperazioni.Keys)
{
ds.Tables["operazioniCPNS"].Rows.Add(
"$", descContratto, "",
mapPosizioneOperazioni[descContratto].Sum(x => x.operazione.ctvSottoscrizione),
"-",
"-",
mapPosizioneOperazioni[descContratto].Sum(x => x.posizione.ctvPro),
null
);
foreach (var posOper in mapPosizioneOperazioni[descContratto])
{
ds.Tables["operazioniCPNS"].Rows.Add(
"",
posOper.posizione.prodotto.nomeProdotto,
posOper.posizione.prodotto.codSottoprodottoFE,
posOper.operazione.ctvSottoscrizione,
posOper.operazione.importoRata,
posOper.operazione.durata + " Mesi",
posOper.operazione.importoConversioneProgrammata,
posOper.posizione.ctvPro,
posOper.operazione.rischioMercato
);
}
}
if (ds.Tables["operazioniCPNS"].Rows.Count > 0)
{
ds.Tables["operazioniCPNSFooter"].Rows.Add(
"Totale operazioni",
ds.Tables["operazioniCPNS"].AsEnumerable().Where(x => x.Field("id") != "$").Sum(x => x.Field("ControvaloreSottoscrizione")),
"-",
"-",
ds.Tables["operazioniCPNS"].AsEnumerable().Where(x => x.Field("id") != "$").Sum(x => x.Field("ControvalorePropost")),
"-"
);
}
#endregion
#region Conversioni Programmate CV
ds.Tables["operazioniCPCV"].Columns.Add(new DataColumn("id", typeof(string)));
ds.Tables["operazioniCPCV"].Columns.Add(new DataColumn("Prodotto", typeof(string)));
ds.Tables["operazioniCPCV"].Columns.Add(new DataColumn("CodiceInterno", typeof(string)));
ds.Tables["operazioniCPCV"].Columns.Add(new DataColumn("ControvaloreAttuale", typeof(decimal)));
ds.Tables["operazioniCPCV"].Columns.Add(new DataColumn("Rata", typeof(string)));
ds.Tables["operazioniCPCV"].Columns.Add(new DataColumn("Durata", typeof(string)));
ds.Tables["operazioniCPCV"].Columns.Add(new DataColumn("Conversione", typeof(decimal)));
ds.Tables["operazioniCPCV"].Columns.Add(new DataColumn("ControvaloreProposto", typeof(decimal)));
ds.Tables["operazioniCPCV"].Columns.Add(new DataColumn("Var", typeof(string)));
ds.Tables["operazioniCPCVFooter"].Columns.Add(new DataColumn("Prodotto", typeof(string)));
ds.Tables["operazioniCPCVFooter"].Columns.Add(new DataColumn("ControvaloreAttuale", typeof(decimal)));
ds.Tables["operazioniCPCVFooter"].Columns.Add(new DataColumn("Rata", typeof(string)));
ds.Tables["operazioniCPCVFooter"].Columns.Add(new DataColumn("Conversione", typeof(string)));
ds.Tables["operazioniCPCVFooter"].Columns.Add(new DataColumn("CtvProposto", typeof(decimal)));
ds.Tables["operazioniCPCVFooter"].Columns.Add(new DataColumn("Var", typeof(string)));
codTipoOperazione = new string[] { "CP" };
codInterno = new string[] { "XY", "FO" };
mapPosizioneOperazioni = new Dictionary>();
foreach (var item in from p in posizioni
join d in dettaglioOperazioni on new { p.chiaveAggregazione, p.posizionePro } equals new { d.chiaveAggregazione, d.posizionePro }
where codInterno.Contains(p.prodotto.codInterno)
orderby p.ctvPro descending
select new { posizione = p, dettaglioOperazione = d })
{
var operazioni = from l in item.dettaglioOperazione.listaOperzioni
where codTipoOperazione.Contains(l.codTipoOperazione)
select l;
var operazione = operazioni.LastOrDefault();
if (operazione == null)
{
continue;
}
listaopnormali.Remove(item.posizione);
string key = item.posizione.prodotto.nomeContratto + " - " + item.posizione.codContratto;
if (!mapPosizioneOperazioni.ContainsKey(key))
{
mapPosizioneOperazioni[key] = new List();
}
posizioneOperazione obj = new posizioneOperazione();
obj.posizione = item.posizione;
obj.operazione = operazione;
mapPosizioneOperazioni[key].Add(obj);
}
foreach (var descContratto in mapPosizioneOperazioni.Keys)
{
ds.Tables["operazioniCPCV"].Rows.Add(
"$", descContratto, "",
mapPosizioneOperazioni[descContratto].Sum(x => x.posizione.ctvAttuale),
"-",
"-",
mapPosizioneOperazioni[descContratto].Sum(x => x.posizione.ctvPro),
null
);
foreach (var posOper in mapPosizioneOperazioni[descContratto])
{
ds.Tables["operazioniCPCV"].Rows.Add(
"",
posOper.posizione.prodotto.nomeProdotto,
posOper.posizione.prodotto.codSottoprodottoFE,
posOper.posizione.ctvAttuale,
posOper.operazione.importoRata,
posOper.operazione.durata + " Mesi",
posOper.operazione.investiSpecified ? posOper.operazione.investi : posOper.operazione.disinvesti * (-1),
posOper.posizione.ctvPro,
posOper.operazione.rischioMercato
);
}
if (ds.Tables["operazioniCPCV"].Rows.Count > 0)
{
ds.Tables["operazioniCPCVFooter"].Rows.Add(
"Totale operazioni",
ds.Tables["operazioniCPCV"].AsEnumerable().Where(x => x.Field("id") != "$").Sum(x => x.Field("ControvaloreAttuale")),
"-",
"-",
ds.Tables["operazioniCPCV"].AsEnumerable().Where(x => x.Field("id") != "$").Sum(x => x.Field("ControvaloreProposto")),
"-"
);
}
}
//è necessario aggiungere alla mappa dei contratti anche quelli dei fondi con attivazione della conversione programmata
codTipoOperazione = new string[] { "CV" };
tipoProdotto = new string[] { "FI" };
mapPosizioneOperazioni = new Dictionary>();
foreach (var item in from p in posizioni
join d in dettaglioOperazioni on new { p.chiaveAggregazione, p.posizionePro } equals new { d.chiaveAggregazione, d.posizionePro }
where tipoProdotto.Contains(p.prodotto.tipoProdotto)
orderby p.ctvPro descending
select new { posizione = p, dettaglioOperazione = d })
{
var operazioni = from l in item.dettaglioOperazione.listaOperzioni
where codTipoOperazione.Contains(l.codTipoOperazione) && (l.frequenza != null)
select l;
var operazione = operazioni.LastOrDefault();
if (operazione == null)
{
continue;
}
listaopnormali.Remove(item.posizione);
string key = item.posizione.codContratto + " - " + item.posizione.prodotto.nomeContratto;
if (!mapPosizioneOperazioni.ContainsKey(key))
{
mapPosizioneOperazioni[key] = new List();
}
posizioneOperazione obj = new posizioneOperazione();
obj.posizione = item.posizione;
obj.operazione = operazione;
mapPosizioneOperazioni[key].Add(obj);
}
foreach (var descContratto in mapPosizioneOperazioni.Keys)
{
ds.Tables["operazioniCPCV"].Rows.Add(
"$", descContratto, "",
mapPosizioneOperazioni[descContratto].Sum(x => x.posizione.ctvAttuale),
"-",
"-",
mapPosizioneOperazioni[descContratto].Sum(x => x.posizione.ctvPro),
null
);
foreach (var posOper in mapPosizioneOperazioni[descContratto])
{
ds.Tables["operazioniCPCV"].Rows.Add(
"",
posOper.posizione.prodotto.nomeProdotto,
posOper.posizione.prodotto.codSottoprodotto,
posOper.posizione.ctvAttuale,
posOper.operazione.importoRata,
decodeFrequenza(posOper.operazione.frequenza),
posOper.operazione.investiSpecified ? posOper.operazione.investi : posOper.operazione.disinvesti*(-1),
posOper.posizione.ctvPro,
posOper.operazione.rischioMercato
);
}
}
#endregion
#region CP OLD
//ds.Tables["tipoOperazioni"].Columns.Add(new DataColumn("Tipologia", typeof(string)));
//ds.Tables["operazioniLabelCP"].Columns.Add(new DataColumn("Tipologia", typeof(string)));
//ds.Tables["operazioniLabelCP"].Columns.Add(new DataColumn("Importo", typeof(decimal)));
//ds.Tables["operazioniLabelCP"].Columns.Add(new DataColumn("Durata", typeof(string)));
//ds.Tables["operazioniCP"].Columns.Add(new DataColumn("Prodotto", typeof(string)));
//ds.Tables["operazioniCP"].Columns.Add(new DataColumn("codiceInterno", typeof(string)));
////ds.Tables["operazioniCP"].Columns.Add(new DataColumn("StatoCP", typeof(string)));
//ds.Tables["operazioniCP"].Columns.Add(new DataColumn("ControvaloreSottoscrizione", typeof(decimal)));
//ds.Tables["operazioniCP"].Columns.Add(new DataColumn("Rata", typeof(decimal)));
//ds.Tables["operazioniCP"].Columns.Add(new DataColumn("ConversioneProgrammata", typeof(decimal)));
//ds.Tables["operazioniCP"].Columns.Add(new DataColumn("ControvaloreProposto", typeof(decimal)));
//ds.Tables["operazioniCP"].Columns.Add(new DataColumn("VaR", typeof(string)));
//ds.Tables["operazioniCPfooter"].Columns.Add(new DataColumn("Prodotto", typeof(string)));
//ds.Tables["operazioniCPfooter"].Columns.Add(new DataColumn("ControvaloreSottoscrizione", typeof(decimal)));
//ds.Tables["operazioniCPfooter"].Columns.Add(new DataColumn("ConversioneProgrammata", typeof(decimal)));
//ds.Tables["operazioniCPfooter"].Columns.Add(new DataColumn("Rata", typeof(decimal)));
//ds.Tables["operazioniCPfooter"].Columns.Add(new DataColumn("ControvaloreProposto", typeof(decimal)));
//ds.Tables["operazioniCPfooter"].Columns.Add(new DataColumn("VaR", typeof(string)));
//codTipoOperazione = new string[] { "CP" };
//codInterno = new string[] { "XY", "FO" };
//foreach (var item in from p in posizioni
// join d in dettaglioOperazioni on new { p.chiaveAggregazione, p.posizionePro } equals new { d.chiaveAggregazione, d.posizionePro }
// where codInterno.Contains(p.prodotto.codInterno)
// orderby p.ctvPro descending
// select new { posizione = p, dettaglioOperazione = d })
//{
// var operazioni = from l in item.dettaglioOperazione.listaOperzioni
// where codTipoOperazione.Contains(l.codTipoOperazione) || (l.importoConversioneProgrammata != 0)
// select l;
// var operazione = operazioni.LastOrDefault();
// if (operazione == null)
// {
// continue;
// }
// Boolean isPS = false;
// var importoConversioneProgrammata = operazione.importoConversioneProgrammata;
// if (codTipoOperazione.Contains(operazione.codTipoOperazione))
// {
// ds.Tables["tipoOperazioni"].Rows.Add("PS");
// isPS = true;
// }
// if (item.posizione.isCPUscita)
// {//prendo solo la posizione in uscita CP
// string tipologiaCP = "totale";
// decimal importo = 0;
// if (codTipoOperazione.Contains(operazione.codTipoOperazione))//CP
// {
// if (operazione.ctv > 0)
// {
// tipologiaCP = "parziale";
// }
// importo = operazione.disinvesti;
// importoConversioneProgrammata = (-1) * importo;
// }
// else //è NS
// {
// if (operazione.investi != 0)
// {
// tipologiaCP = "parziale";
// }
// importo = (-1) * operazione.importoConversioneProgrammata;
// }
// ds.Tables["operazioniLabelCP"].Rows.Add(
// tipologiaCP,
// importo,
// operazione.durata + " Mesi"
// );
// }
// else
// {
// if (isPS)
// { //per PS l'importo sta su investi
// importoConversioneProgrammata = operazione.investi;
// }
// }
// var controvaloreattuale = item.posizione.ctvAttuale;
// var ctvSottoscrizione = operazione.ctvSottoscrizione;
// string statoCP = "";
// if (item.posizione.isCPEntrata)
// {
// statoCP = "cpInEntrata.png";
// }
// else if (item.posizione.isCPUscita)
// {
// statoCP = "cpInUscita.png";
// }
// ds.Tables["operazioniCP"].Rows.Add(
// item.posizione.prodotto.nomeProdotto,
// statoCP,
// isPS ? controvaloreattuale : ctvSottoscrizione,
// importoConversioneProgrammata,
// operazione.importoRata,
// item.posizione.ctvPro,
// item.posizione.prodotto.varProDec);
// // listaoperazioninormali.Remove(item.dettaglioOperazione);
//}
//ds.Tables["operazioniCPfooter"].Rows.Add(
// "Totale",
// ds.Tables["operazioniCP"].AsEnumerable().Sum(x => x.Field("ControvaloreSottoscrizione")),
// ds.Tables["operazioniCP"].AsEnumerable().Sum(x => x.Field("ConversioneProgrammata")),
// ds.Tables["operazioniCP"].AsEnumerable().Sum(x => x.Field("Rata")),
// ds.Tables["operazioniCP"].AsEnumerable().Sum(x => x.Field("ControvaloreProposto")),
// ""
// );
#endregion
string[] tipoContratto = { };
#region PPI NS
ds.Tables["operazioniLabelPPINS"].Columns.Add(new DataColumn("NomeProdotto", typeof(string)));
ds.Tables["operazioniLabelPPINS"].Columns.Add(new DataColumn("CodiceInterno", typeof(string)));
ds.Tables["operazioniLabelPPINS"].Columns.Add(new DataColumn("CtvSottoscrizione", typeof(decimal)));
ds.Tables["operazioniLabelPPINS"].Columns.Add(new DataColumn("Frequenza", typeof(string)));
ds.Tables["operazioniLabelPPINS"].Columns.Add(new DataColumn("Durata", typeof(string)));
ds.Tables["operazioniLabelPPINS"].Columns.Add(new DataColumn("Conversione", typeof(decimal)));
ds.Tables["operazioniLabelPPINS"].Columns.Add(new DataColumn("CtvProposto", typeof(decimal)));
ds.Tables["operazioniLabelPPINS"].Columns.Add(new DataColumn("Var", typeof(string)));
ds.Tables["operazioniPPINS"].Columns.Add(new DataColumn("id", typeof(string)));
ds.Tables["operazioniPPINS"].Columns.Add(new DataColumn("NomeProdotto", typeof(string)));
ds.Tables["operazioniPPINS"].Columns.Add(new DataColumn("CodiceInterno", typeof(string)));
ds.Tables["operazioniPPINS"].Columns.Add(new DataColumn("CtvSottoscrizione", typeof(decimal)));
ds.Tables["operazioniPPINS"].Columns.Add(new DataColumn("Frequenza", typeof(string)));
ds.Tables["operazioniPPINS"].Columns.Add(new DataColumn("Durata", typeof(string)));
ds.Tables["operazioniPPINS"].Columns.Add(new DataColumn("Conversione", typeof(decimal)));
ds.Tables["operazioniPPINS"].Columns.Add(new DataColumn("CtvProposto", typeof(decimal)));
ds.Tables["operazioniPPINS"].Columns.Add(new DataColumn("Var", typeof(string)));
ds.Tables["operazioniPPINSFooter"].Columns.Add(new DataColumn("NomeProdotto", typeof(string)));
ds.Tables["operazioniPPINSFooter"].Columns.Add(new DataColumn("CtvSottoscrizione", typeof(decimal)));
ds.Tables["operazioniPPINSFooter"].Columns.Add(new DataColumn("Frequenza", typeof(string)));
ds.Tables["operazioniPPINSFooter"].Columns.Add(new DataColumn("Conversione", typeof(decimal)));
ds.Tables["operazioniPPINSFooter"].Columns.Add(new DataColumn("CtvProposto", typeof(decimal)));
ds.Tables["operazioniPPINSFooter"].Columns.Add(new DataColumn("Var", typeof(string)));
codInterno = new string[] { "KE", "KS" };
codTipoOperazione = new string[] { "NS"};
tipoContratto = new string[] { "PPI" };
ctvSottoprodotto = 0;
mapPosizioneOperazioni = new Dictionary>();
foreach (var item in from p in posizioni
join d in dettaglioOperazioni on new { p.chiaveAggregazione, p.posizionePro } equals new { d.chiaveAggregazione, d.posizionePro }
where codInterno.Contains(p.prodotto.codInterno)
orderby p.ctvPro descending
select new { posizione = p, dettaglioOperazione = d })
{
var operazioni = from l in item.dettaglioOperazione.listaOperzioni
where codTipoOperazione.Contains(l.codTipoOperazione) && l.stDettaglioContratto!=null && l.stDettaglioContratto.stDettaglioLinea[0]!=null && l.stDettaglioContratto.stDettaglioLinea[0].durataPPI != null
select l;
if (operazioni.Count() != 1)
continue;
var operazione = operazioni.LastOrDefault();
string key = item.posizione.prodotto.nomeContratto + " - " + item.posizione.codContratto;
if (!mapPosizioneOperazioni.ContainsKey(key))
{
mapPosizioneOperazioni[key] = new List();
}
posizioneOperazione obj = new posizioneOperazione();
obj.posizione = item.posizione;
obj.operazione = operazione;
mapPosizioneOperazioni[key].Add(obj);
listaopnormali.Remove(item.posizione);
}
foreach (var descContratto in mapPosizioneOperazioni.Keys)
{
string codProd = mapPosizioneOperazioni[descContratto][0].posizione.prodotto.codInterno;
posizioneOperazione obj = new posizioneOperazione();
DataServices.fideuram.data.service.rsSTPosizione pos = new DataServices.fideuram.data.service.rsSTPosizione();
DataServices.fideuram.data.service.rsSTProdotto prod = new DataServices.fideuram.data.service.rsSTProdotto();
prod.nomeProdotto = codProd == "KE" ? "In Pers - Linea liquidità" : "In PPers - Linea liquidità";
prod.codSottoprodotto = "LIQUI";
prod.codSottoprodottoFE = "-";
pos.prodotto = new DataServices.fideuram.data.service.rsSTProdotto();
pos.prodotto = prod;
DataServices.fideuram.data.service.stDettaglioOperazioneBean oper = new DataServices.fideuram.data.service.stDettaglioOperazioneBean();
oper.ctvSottoscrizione = mapPosizioneOperazioni[descContratto].Sum(x => x.posizione.ctvPro);
pos.ctvPro = 0;
oper.stDettaglioContratto = new DataServices.fideuram.data.service.stDettaglioContrattoBean();
var listaLinea = new DataServices.fideuram.data.service.stDettaglioLineaBean[0].ToList();
DataServices.fideuram.data.service.stDettaglioLineaBean linea = new DataServices.fideuram.data.service.stDettaglioLineaBean();
linea.frequenzaPPI = mapPosizioneOperazioni[descContratto][0].operazione.stDettaglioContratto.stDettaglioLinea[0].frequenzaPPI;
linea.durataPPI = mapPosizioneOperazioni[descContratto][0].operazione.stDettaglioContratto.stDettaglioLinea[0].durataPPI;
listaLinea.Add(linea);
oper.stDettaglioContratto.stDettaglioLinea = listaLinea.ToArray();
obj.posizione = pos;
obj.operazione = oper;
mapPosizioneOperazioni[descContratto].Add(obj);
listaLiquiditaKEKSPV.Add(obj);
}
foreach (var descContratto in mapPosizioneOperazioni.Keys)
{
ctvSottoprodotto = mapPosizioneOperazioni[descContratto].AsEnumerable().Where(x => x.posizione.prodotto.codSottoprodotto == "LIQUI").Sum(x => x.operazione.ctvSottoscrizione);
ds.Tables["operazioniPPINS"].Rows.Add(
"$", descContratto, "-",
ctvSottoprodotto,
"-",
"-",
mapPosizioneOperazioni[descContratto].Sum(x => x.posizione.ctvPro) - ctvSottoprodotto,
mapPosizioneOperazioni[descContratto].Sum(x => x.posizione.ctvPro),
"-"
);
foreach (var posOper in mapPosizioneOperazioni[descContratto])
{
ds.Tables["operazioniPPINS"].Rows.Add(
"",
posOper.posizione.prodotto.nomeProdotto,
posOper.posizione.prodotto.codSottoprodottoFE,
//da verificare se funziona sulla operazioni che non abbiamo forzato
//posOper.operazione.ctvSottoscrizione,
"LIQUI" == (posOper.posizione.prodotto.codSottoprodotto) ? posOper.operazione.ctvSottoscrizione.ToString(): "0",
"W" == (posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].frequenzaPPI) ? "Settimanale" + "
" + decodeDurataPPI(posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].durataPPI).ToUpper() : "Mensile" + "
" + decodeDurataPPI(posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].durataPPI).ToUpper(),
decodeDurataPPI(posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].durataPPI),
//posOper.posizione.ctvPro - posOper.operazione.ctvSottoscrizione,
"LIQUI"==(posOper.posizione.prodotto.codSottoprodotto) ? (0 - posOper.operazione.ctvSottoscrizione) : posOper.posizione.ctvPro,
posOper.posizione.ctvPro,
posOper.operazione.rischioMercato
) ;
}
}
ds.Tables["operazioniPPINSFooter"].Rows.Add(
"Totale operazioni",
ds.Tables["operazioniPPINS"].AsEnumerable().Where(x => x.Field("ID") != "$").Sum(x => x.Field("CtvSottoscrizione")),
"-",
ds.Tables["operazioniPPINS"].AsEnumerable().Where(x => x.Field("ID") != "$").Sum(x => x.Field("Conversione")),
ds.Tables["operazioniPPINS"].AsEnumerable().Where(x => x.Field("ID") != "$").Sum(x => x.Field("CtvProposto")),
"-"
);
#endregion
#region PPI PV
// var ke = posizioni.Where(p => p.prodotto.codInterno.Equals("KE") && (p.tipoOperazione.Equals("NS") || p.tipoOperazione.Equals("CV"))).ToList();
//operazioniLabelKE
//operazioniKE
//operazioniKEfooter
ds.Tables["operazioniLabelPPIPV"].Columns.Add(new DataColumn("NomeProdotto", typeof(string)));
ds.Tables["operazioniLabelPPIPV"].Columns.Add(new DataColumn("CodiceInterno", typeof(string)));
ds.Tables["operazioniLabelPPIPV"].Columns.Add(new DataColumn("CtvSottoscrizione", typeof(decimal)));
ds.Tables["operazioniLabelPPIPV"].Columns.Add(new DataColumn("Frequenza", typeof(string)));
ds.Tables["operazioniLabelPPIPV"].Columns.Add(new DataColumn("Durata", typeof(string)));
ds.Tables["operazioniLabelPPIPV"].Columns.Add(new DataColumn("Conversione", typeof(decimal)));
ds.Tables["operazioniLabelPPIPV"].Columns.Add(new DataColumn("CtvProposto", typeof(decimal)));
ds.Tables["operazioniLabelPPIPV"].Columns.Add(new DataColumn("Var", typeof(string)));
ds.Tables["operazioniPPIPV"].Columns.Add(new DataColumn("id", typeof(string)));
ds.Tables["operazioniPPIPV"].Columns.Add(new DataColumn("NomeProdotto", typeof(string)));
ds.Tables["operazioniPPIPV"].Columns.Add(new DataColumn("CodiceInterno", typeof(string)));
ds.Tables["operazioniPPIPV"].Columns.Add(new DataColumn("CtvSottoscrizione", typeof(decimal)));
ds.Tables["operazioniPPIPV"].Columns.Add(new DataColumn("Frequenza", typeof(string)));
ds.Tables["operazioniPPIPV"].Columns.Add(new DataColumn("Durata", typeof(string)));
ds.Tables["operazioniPPIPV"].Columns.Add(new DataColumn("Conversione", typeof(decimal)));
ds.Tables["operazioniPPIPV"].Columns.Add(new DataColumn("CtvProposto", typeof(decimal)));
ds.Tables["operazioniPPIPV"].Columns.Add(new DataColumn("Var", typeof(string)));
ds.Tables["operazioniPPIPVFooter"].Columns.Add(new DataColumn("NomeProdotto", typeof(string)));
ds.Tables["operazioniPPIPVFooter"].Columns.Add(new DataColumn("CodiceInterno", typeof(string)));
ds.Tables["operazioniPPIPVFooter"].Columns.Add(new DataColumn("CtvSottoscrizione", typeof(decimal)));
ds.Tables["operazioniPPIPVFooter"].Columns.Add(new DataColumn("Frequenza", typeof(string)));
ds.Tables["operazioniPPIPVFooter"].Columns.Add(new DataColumn("Durata", typeof(string)));
ds.Tables["operazioniPPIPVFooter"].Columns.Add(new DataColumn("Conversione", typeof(decimal)));
ds.Tables["operazioniPPIPVFooter"].Columns.Add(new DataColumn("CtvProposto", typeof(decimal)));
ds.Tables["operazioniPPIPVFooter"].Columns.Add(new DataColumn("Var", typeof(string)));
codInterno = new string[] { "KE", "KS" };
codTipoOperazione = new string[] { "NS" };
tipoContratto = new string[] { "PPI" };
mapPosizioneOperazioni = new Dictionary>();
foreach (var item in from p in posizioni
join d in dettaglioOperazioni on new { p.chiaveAggregazione, p.posizionePro } equals new { d.chiaveAggregazione, d.posizionePro }
where codInterno.Contains(p.prodotto.codInterno)
orderby p.ctvPro descending
select new { posizione = p, dettaglioOperazione = d })
{
var operazioni = from l in item.dettaglioOperazione.listaOperzioni
where !codTipoOperazione.Contains(l.codTipoOperazione) && l.stDettaglioContratto != null && l.stDettaglioContratto.stDettaglioLinea[0] != null && l.stDettaglioContratto.stDettaglioLinea[0].durataPPI != null
select l;
if (operazioni.Count() != 1)
continue;
var operazione = operazioni.LastOrDefault();
string key = item.posizione.prodotto.nomeContratto + " - " + item.posizione.codContratto;
if (!mapPosizioneOperazioni.ContainsKey(key))
{
mapPosizioneOperazioni[key] = new List();
}
posizioneOperazione obj = new posizioneOperazione();
obj.posizione = item.posizione;
obj.operazione = operazione;
mapPosizioneOperazioni[key].Add(obj);
// non è necessario rimuovere le operazioni dalla lista delle operazioni normali perchè da specifiche paragrafo 5.4.2.1 Logiche Programma periodico di investimento
//è necessario forzare due operazioni, una che rappresenti l'apertura del PPI e verrà mostrata in questa tabella, e una conversione fittizia che
//invece è rappresentata nella tabella delle operazioni normali. è infatti necessario gestire l'operazione fittizia sulla liquidità
//listaopnormali.Remove(item.posizione);
}
foreach (var descContratto in mapPosizioneOperazioni.Keys)
{
string codProd = mapPosizioneOperazioni[descContratto][0].posizione.prodotto.codInterno;
posizioneOperazione obj = new posizioneOperazione();
DataServices.fideuram.data.service.rsSTPosizione pos = new DataServices.fideuram.data.service.rsSTPosizione();
DataServices.fideuram.data.service.rsSTProdotto prod = new DataServices.fideuram.data.service.rsSTProdotto();
prod.nomeProdotto = codProd == "KE" ? "In Pers - Linea liquidità" : "In PPers - Linea liquidità";
prod.codSottoprodotto = "LIQUI";
prod.codSottoprodottoFE = "-";
pos.prodotto = new DataServices.fideuram.data.service.rsSTProdotto();
DataServices.fideuram.data.service.stDettaglioOperazioneBean oper = new DataServices.fideuram.data.service.stDettaglioOperazioneBean();
oper.ctvSottoscrizione = mapPosizioneOperazioni[descContratto].Sum(x => x.posizione.ctvPro);
pos.ctvPro = 0;
oper.stDettaglioContratto = new DataServices.fideuram.data.service.stDettaglioContrattoBean();
oper.stDettaglioContratto.stDettaglioLinea = new DataServices.fideuram.data.service.stDettaglioLineaBean[0];
var listaLinea = new DataServices.fideuram.data.service.stDettaglioLineaBean[0].ToList();
DataServices.fideuram.data.service.stDettaglioLineaBean linea = new DataServices.fideuram.data.service.stDettaglioLineaBean();
linea.frequenzaPPI = mapPosizioneOperazioni[descContratto][0].operazione.stDettaglioContratto.stDettaglioLinea[0].frequenzaPPI;
linea.durataPPI = mapPosizioneOperazioni[descContratto][0].operazione.stDettaglioContratto.stDettaglioLinea[0].durataPPI;
listaLinea.Add(linea);
oper.stDettaglioContratto.stDettaglioLinea = listaLinea.ToArray();
obj.posizione = pos;
obj.operazione = oper;
mapPosizioneOperazioni[descContratto].Add(obj);
}
foreach (var descContratto in mapPosizioneOperazioni.Keys)
{
ds.Tables["operazioniPPIPV"].Rows.Add(
"$", descContratto, "-",
mapPosizioneOperazioni[descContratto].Sum(x => x.operazione.ctvSottoscrizione),
"-",
"-",
mapPosizioneOperazioni[descContratto].Sum(x => x.posizione.ctvPro - x.operazione.ctvSottoscrizione),
mapPosizioneOperazioni[descContratto].Sum(x => x.posizione.ctvPro),
"-"
);
foreach (var posOper in mapPosizioneOperazioni[descContratto])
{
ds.Tables["operazioniPPIPV"].Rows.Add(
"-",
posOper.posizione.prodotto.nomeProdotto,
posOper.posizione.prodotto.codSottoprodottoFE,
//da verificare se funziona sulla operazioni che non abbiamo forzato
posOper.operazione.ctvSottoscrizione,
"W" == (posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].frequenzaPPI) ? "Settimanale" + "
" + decodeDurataPPI(posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].durataPPI).ToUpper() : "Mensile" + "
" + decodeDurataPPI(posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].durataPPI).ToUpper(),
decodeDurataPPI(posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].durataPPI),
posOper.posizione.ctvPro - posOper.operazione.ctvSottoscrizione,
posOper.posizione.ctvPro,
posOper.operazione.rischioMercato
);
}
}
#endregion
#region FVI Premio periodico
ds.Tables["operazioniLabelFVI"].Columns.Add(new DataColumn("NomeProdotto", typeof(string)));
ds.Tables["operazioniLabelFVI"].Columns.Add(new DataColumn("CodiceInterno", typeof(string)));
ds.Tables["operazioniLabelFVI"].Columns.Add(new DataColumn("PremioUnicoAggiuntivo", typeof(decimal)));
ds.Tables["operazioniLabelFVI"].Columns.Add(new DataColumn("Frequenza", typeof(string)));
ds.Tables["operazioniLabelFVI"].Columns.Add(new DataColumn("NumeroAnnualita", typeof(string)));
ds.Tables["operazioniLabelFVI"].Columns.Add(new DataColumn("PianoVersamenti", typeof(decimal)));
ds.Tables["operazioniLabelFVI"].Columns.Add(new DataColumn("Var", typeof(string)));
ds.Tables["operazioniFVI"].Columns.Add(new DataColumn("id", typeof(string)));
ds.Tables["operazioniFVI"].Columns.Add(new DataColumn("NomeProdotto", typeof(string)));
ds.Tables["operazioniFVI"].Columns.Add(new DataColumn("CodiceInterno", typeof(string)));
ds.Tables["operazioniFVI"].Columns.Add(new DataColumn("PremioUnicoAggiuntivo", typeof(decimal)));
ds.Tables["operazioniFVI"].Columns.Add(new DataColumn("Frequenza", typeof(string)));
ds.Tables["operazioniFVI"].Columns.Add(new DataColumn("NumeroAnnualita", typeof(string)));
ds.Tables["operazioniFVI"].Columns.Add(new DataColumn("PianoVersamenti", typeof(decimal)));
ds.Tables["operazioniFVI"].Columns.Add(new DataColumn("Var", typeof(string)));
ds.Tables["operazioniFVIfooter"].Columns.Add(new DataColumn("NomeProdotto", typeof(string)));
ds.Tables["operazioniFVIfooter"].Columns.Add(new DataColumn("PremioUnicoAggiuntivo", typeof(decimal)));
ds.Tables["operazioniFVIfooter"].Columns.Add(new DataColumn("Frequenza", typeof(string)));
ds.Tables["operazioniFVIfooter"].Columns.Add(new DataColumn("NumeroAnnualita", typeof(string)));
ds.Tables["operazioniFVIfooter"].Columns.Add(new DataColumn("PianoVersamenti", typeof(decimal)));
ds.Tables["operazioniFVIfooter"].Columns.Add(new DataColumn("Var", typeof(string)));
tipoContratto = new string[] { "PPR" };
mapPosizioneOperazioni = new Dictionary>();
foreach (var item in from p in posizioni
join d in dettaglioOperazioni on new { p.chiaveAggregazione, p.posizionePro } equals new { d.chiaveAggregazione, d.posizionePro }
orderby p.ctvPro descending
select new { posizione = p, dettaglioOperazione = d })
{
var operazioni = from l in item.dettaglioOperazione.listaOperzioni
where tipoContratto.Contains(l.stDettaglioContratto.tipoContratto)
select l;
if (operazioni.Count() != 1)
continue;
var operazione = operazioni.FirstOrDefault();
string key = item.posizione.prodotto.nomeContratto + " - " + item.posizione.codContratto;
if (!mapPosizioneOperazioni.ContainsKey(key))
{
mapPosizioneOperazioni[key] = new List();
}
posizioneOperazione obj = new posizioneOperazione();
obj.posizione = item.posizione;
obj.operazione = operazione;
mapPosizioneOperazioni[key].Add(obj);
listaopnormali.Remove(item.posizione);
}
decimal impAggiuntivo;
foreach (var descContratto in mapPosizioneOperazioni.Keys)
{
impAggiuntivo = mapPosizioneOperazioni[descContratto].Sum(x => x.operazione.stDettaglioContratto.impAggiuntivo);
if(impAggiuntivo>0)
{
ds.Tables["operazioniFVI"].Rows.Add(
"$", descContratto, "",
mapPosizioneOperazioni[descContratto].Sum(x => x.operazione.stDettaglioContratto.impAggiuntivo * x.operazione.percOperazione / 100),
"-",
"-",
mapPosizioneOperazioni[descContratto].Sum(x => (x.operazione.stDettaglioContratto.impAggiuntivo * x.operazione.percOperazione / 100) + x.operazione.rataProgrammata* x.operazione.stDettaglioContratto.stDettaglioLinea[0].frequenzaPpv * x.operazione.stDettaglioContratto.stDettaglioLinea[0].durataPpv),
null
);
}
else{
ds.Tables["operazioniFVI"].Rows.Add(
"$", descContratto, "",
mapPosizioneOperazioni[descContratto].Sum(x => x.operazione.stDettaglioContratto.stDettaglioLinea[0].impAggiuntivo * x.operazione.percOperazione / 100),
"-",
"-",
mapPosizioneOperazioni[descContratto].Sum(x => (x.operazione.stDettaglioContratto.stDettaglioLinea[0].impAggiuntivo * x.operazione.percOperazione / 100) + x.operazione.rataProgrammata * x.operazione.stDettaglioContratto.stDettaglioLinea[0].frequenzaPpv * x.operazione.stDettaglioContratto.stDettaglioLinea[0].durataPpv),
null
);
}
foreach (var posOper in mapPosizioneOperazioni[descContratto])
{
var rata = Helper.FormatCurrency(posOper.operazione.rataProgrammata + "");
impAggiuntivo = posOper.operazione.stDettaglioContratto.impAggiuntivo > 0 ? posOper.operazione.stDettaglioContratto.impAggiuntivo : posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].impAggiuntivo;
ds.Tables["operazioniFVI"].Rows.Add(
"",
posOper.posizione.prodotto.nomeProdotto,
posOper.posizione.prodotto.codSottoprodottoFE,
//posOper.operazione.stDettaglioContratto.impAggiuntivo * posOper.operazione.percOperazione / 100,
impAggiuntivo * posOper.operazione.percOperazione / 100,
rata + "
"+ getFrequenza(posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].frequenzaPpv),
posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].durataPpv,
//(posOper.operazione.stDettaglioContratto.impAggiuntivo * posOper.operazione.percOperazione / 100) + (posOper.operazione.rataProgrammata * posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].frequenzaPpv * posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].durataPpv),
(impAggiuntivo * posOper.operazione.percOperazione / 100) + (posOper.operazione.rataProgrammata * posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].frequenzaPpv * posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].durataPpv),
posOper.operazione.rischioMercato
);
}
if (ds.Tables["operazioniFVI"].Rows.Count > 0)
{
ds.Tables["operazioniFVIFooter"].Rows.Add(
"Totale operazioni",
ds.Tables["operazioniFVI"].AsEnumerable().Where(x => x.Field("id") != "$").Sum(x => x.Field("PremioUnicoAggiuntivo")),
"-",
"-",
ds.Tables["operazioniFVI"].AsEnumerable().Where(x => x.Field("id") != "$").Sum(x => x.Field("PianoVersamenti")),
"-"
);
}
}
#endregion
#region Fondo pensione
ds.Tables["operazioniFondoPensione"].Columns.Add(new DataColumn("SavingMap", typeof(string)));
ds.Tables["operazioniFondoPensione"].Columns.Add(new DataColumn("Prodotto", typeof(string)));
ds.Tables["operazioniFondoPensione"].Columns.Add(new DataColumn("ContributiversatiAdesione", typeof(decimal)));
ds.Tables["operazioniFondoPensione"].Columns.Add(new DataColumn("ContrAderenteDatorePerc", typeof(decimal)));
ds.Tables["operazioniFondoPensione"].Columns.Add(new DataColumn("ContrAderenteDatore", typeof(decimal)));
ds.Tables["operazioniFondoPensione"].Columns.Add(new DataColumn("TFR", typeof(decimal)));
ds.Tables["operazioniFondoPensione"].Columns.Add(new DataColumn("Altraformapensione", typeof(decimal)));
ds.Tables["operazioniFondoPensione"].Columns.Add(new DataColumn("Var", typeof(string)));
ds.Tables["operazioniFondoPensionefooter"].Columns.Add(new DataColumn("Prodotto", typeof(string)));
ds.Tables["operazioniFondoPensionefooter"].Columns.Add(new DataColumn("ContributiversatiAdesione", typeof(decimal)));
ds.Tables["operazioniFondoPensionefooter"].Columns.Add(new DataColumn("ContrAderenteDatorePerc", typeof(decimal)));
ds.Tables["operazioniFondoPensionefooter"].Columns.Add(new DataColumn("ContrAderenteDatore", typeof(decimal)));
ds.Tables["operazioniFondoPensionefooter"].Columns.Add(new DataColumn("TFR", typeof(decimal)));
ds.Tables["operazioniFondoPensionefooter"].Columns.Add(new DataColumn("Altraformapensione", typeof(decimal)));
ds.Tables["operazioniFondoPensionefooter"].Columns.Add(new DataColumn("Var", typeof(string)));
codInterno = new string[] { "90" };
codTipoOperazione = new string[] { "NS" };
mapPosizioneOperazioni = new Dictionary>();
var fondoPensione = new DataServices.fideuram.data.service.stFondoPensioneBean();
foreach (var item in from p in posizioni
join d in dettaglioOperazioni on new { p.chiaveAggregazione, p.posizionePro } equals new { d.chiaveAggregazione, d.posizionePro }
where codInterno.Contains(p.prodotto.codInterno)
orderby p.ctvPro descending
select new { posizione = p, dettaglioOperazione = d })
{
var operazioni = from l in item.dettaglioOperazione.listaOperzioni
where codTipoOperazione.Contains(l.codTipoOperazione)
select l;
if (operazioni.Count() != 1)
continue;
var operazione = operazioni.LastOrDefault();
fondoPensione = operazione.stDettaglioContratto.stFondoPensione;
if (fondoPensione != null)
{
string key = item.posizione.prodotto.nomeContratto + " - " + item.posizione.codContratto;
if (!mapPosizioneOperazioni.ContainsKey(key))
{
mapPosizioneOperazioni[key] = new List();
}
posizioneOperazione obj = new posizioneOperazione();
obj.posizione = item.posizione;
obj.operazione = operazione;
mapPosizioneOperazioni[key].Add(obj);
listaopnormali.Remove(item.posizione);
}
}
foreach (var descContratto in mapPosizioneOperazioni.Keys)
{
ds.Tables["operazioniFondoPensione"].Rows.Add("$", descContratto, null, null, null, null, null, "");
foreach (var posOper in mapPosizioneOperazioni[descContratto])
{
fondoPensione = posOper.operazione.stDettaglioContratto.stFondoPensione;
var percAderenteDatore = posOper.operazione.percAderenteDatore;
var contributoAderenteDatore = (fondoPensione.caImportoAdesione + fondoPensione.caImportoAggiuntivoAdesione) * percAderenteDatore / 100;
var contributoAdesione = (fondoPensione.caImportoAnnuo + fondoPensione.cdImportoAnnuo) * percAderenteDatore / 100;
ds.Tables["operazioniFondoPensione"].Rows.Add(
"",
posOper.posizione.prodotto.nomeProdotto,
contributoAderenteDatore,
percAderenteDatore,
contributoAdesione,
posOper.operazione.percTFR,
posOper.operazione.percAltraFormaPensionistica,
posOper.operazione.rischioMercato
);
}
}
if (ds.Tables["operazioniFondoPensione"].Rows.Count > 0)
{
ds.Tables["operazioniFondoPensioneFooter"].Rows.Add(
"Totale",
ds.Tables["operazioniFondoPensione"].AsEnumerable().Where(x => x.Field("SavingMap") != "$").Sum(x => x.Field("ContributiversatiAdesione")),
ds.Tables["operazioniFondoPensione"].AsEnumerable().Where(x => x.Field("SavingMap") != "$").Sum(x => x.Field("ContrAderenteDatorePerc")),
ds.Tables["operazioniFondoPensione"].AsEnumerable().Where(x => x.Field("SavingMap") != "$").Sum(x => x.Field("ContrAderenteDatore")),
ds.Tables["operazioniFondoPensione"].AsEnumerable().Where(x => x.Field("SavingMap") != "$").Sum(x => x.Field("TFR")),
ds.Tables["operazioniFondoPensione"].AsEnumerable().Where(x => x.Field("SavingMap") != "$").Sum(x => x.Field("Altraformapensione")),
"-"
);
}
#endregion
#region operazioni
ds.Tables["operazioni"].Columns.Add(new DataColumn("SavingMap", typeof(string)));
ds.Tables["operazioni"].Columns.Add(new DataColumn("codContratto", typeof(string)));
ds.Tables["operazioni"].Columns.Add(new DataColumn("Prodotto", typeof(string)));
ds.Tables["operazioni"].Columns.Add(new DataColumn("codInterno", typeof(string)));
ds.Tables["operazioni"].Columns.Add(new DataColumn("Controvaloreattuale", typeof(decimal)));
ds.Tables["operazioni"].Columns.Add(new DataColumn("ApportiDisinvest", typeof(decimal)));
ds.Tables["operazioni"].Columns.Add(new DataColumn("Controvaloreproposto", typeof(decimal)));
ds.Tables["operazioni"].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables["DToperazioni"].Columns.Add(new DataColumn("SavingMap", typeof(string)));
ds.Tables["DToperazioni"].Columns.Add(new DataColumn("codContratto", typeof(string)));
ds.Tables["DToperazioni"].Columns.Add(new DataColumn("Prodotto", typeof(string)));
ds.Tables["DToperazioni"].Columns.Add(new DataColumn("codInterno", typeof(string)));
ds.Tables["DToperazioni"].Columns.Add(new DataColumn("Controvaloreattuale", typeof(decimal)));
ds.Tables["DToperazioni"].Columns.Add(new DataColumn("ApportiDisinvest", typeof(decimal)));
ds.Tables["DToperazioni"].Columns.Add(new DataColumn("Controvaloreproposto", typeof(decimal)));
ds.Tables["DToperazioni"].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables["DToperazioni"].Columns.Add(new DataColumn("ordinamento", typeof(int)));
ds.Tables["operazionifooter"].Columns.Add(new DataColumn("Prodotto", typeof(string)));
ds.Tables["operazionifooter"].Columns.Add(new DataColumn("Controvaloreattuale", typeof(decimal)));
ds.Tables["operazionifooter"].Columns.Add(new DataColumn("ApportiDisinvest", typeof(decimal)));
ds.Tables["operazionifooter"].Columns.Add(new DataColumn("Controvaloreproposto", typeof(decimal)));
ds.Tables["operazionifooter"].Columns.Add(new DataColumn("VaR", typeof(string)));
codInterno = new string[] { "RS", "RM", "KS", "KE", "90" };
codTipoOperazione = new string[] { "NS", "TR" };
tipoContratto = new string[] { "PPR", "PPI" };
var map = new Dictionary();
string stDurataPPI = "";
foreach (var item in from p in listaopnormali
join d in dettaglioOperazioni.ToList() on new { p.chiaveAggregazione, p.posizionePro } equals new { d.chiaveAggregazione, d.posizionePro }// on p.chiaveAggregazione equals d.chiaveAggregazione && d.posizionePro == p.
orderby p.ctvPro descending
select new { posizione = p, dettaglioOperazione = d })
{
var operazioni = item.dettaglioOperazione.listaOperzioni.FirstOrDefault();// && !(codTipoOperazione.Contains(item.posizione.tipoOperazione) && tipoContratto.Contains(l.stDettaglioContratto.tipoContratto)));
if (operazioni != null)
{
stDurataPPI = "";
if (operazioni.stDettaglioContratto.stDettaglioLinea != null)
{
stDurataPPI = operazioni.stDettaglioContratto.stDettaglioLinea[0].durataPPI == null ? "" : operazioni.stDettaglioContratto.stDettaglioLinea[0].durataPPI;
}
// identifico se è stato aperto un Piani periodici Conversione Skandia
if (operazioni.stDettaglioContratto != null && operazioni.stDettaglioContratto.stDettaglioLinea != null && stDurataPPI != "" && operazioni.codTipoOperazione == "RL")
{
if (!map.ContainsKey("Disinvestimenti"))
{
map.Add("Disinvestimenti", new itemObject { ctvAttuale = new decimal(0), ctvProposto = new decimal(0), movimenti = new decimal(0), posizioni = new List(), codOrdinamento = 3});
}
map["Disinvestimenti"].ctvAttuale = map["Disinvestimenti"].ctvAttuale + item.posizione.ctvAttuale;
map["Disinvestimenti"].ctvProposto = map["Disinvestimenti"].ctvProposto + 0;
map["Disinvestimenti"].movimenti = map["Disinvestimenti"].movimenti + (-1) * item.posizione.ctvAttuale; ;
map["Disinvestimenti"].codOrdinamento = 3;
posizioneOperazione obj = new posizioneOperazione();
obj.posizione = item.posizione;
obj.operazione = operazioni;
obj.posizione.disinvesti = (-1) * obj.posizione.ctvAttuale;
obj.posizione.ctvPro = 0;
map["Disinvestimenti"].posizioni.Add(obj);
}
else
{
if (operazioni.codTipoOperazione.Equals("NS"))
{
if (!map.ContainsKey("Nuove sottoscrizioni"))
{
map.Add("Nuove sottoscrizioni", new itemObject { ctvAttuale = new decimal(0), ctvProposto = new decimal(0), movimenti = new decimal(0), posizioni = new List(), codOrdinamento = 1 });
}
map["Nuove sottoscrizioni"].ctvAttuale = map["Nuove sottoscrizioni"].ctvAttuale + item.posizione.ctvAttuale;
map["Nuove sottoscrizioni"].ctvProposto = map["Nuove sottoscrizioni"].ctvProposto + item.posizione.ctvPro;
map["Nuove sottoscrizioni"].movimenti = map["Nuove sottoscrizioni"].movimenti + item.posizione.investi - item.posizione.disinvesti; ;
map["Nuove sottoscrizioni"].codOrdinamento = 1;
posizioneOperazione obj = new posizioneOperazione();
obj.posizione = item.posizione;
obj.operazione = operazioni;
map["Nuove sottoscrizioni"].posizioni.Add(obj);
}
else if (operazioni.investi > 0)
{
if (!map.ContainsKey("Investimenti aggiuntivi"))
{
map.Add("Investimenti aggiuntivi", new itemObject { ctvAttuale = new decimal(0), ctvProposto = new decimal(0), movimenti = new decimal(0), posizioni = new List(), codOrdinamento = 2 });
}
map["Investimenti aggiuntivi"].ctvAttuale = map["Investimenti aggiuntivi"].ctvAttuale + item.posizione.ctvAttuale;
map["Investimenti aggiuntivi"].ctvProposto = map["Investimenti aggiuntivi"].ctvProposto + item.posizione.ctvPro;
map["Investimenti aggiuntivi"].movimenti = map["Investimenti aggiuntivi"].movimenti + item.posizione.investi - item.posizione.disinvesti; ;
map["Investimenti aggiuntivi"].codOrdinamento = 2;
posizioneOperazione obj = new posizioneOperazione();
obj.posizione = item.posizione;
obj.operazione = operazioni;
map["Investimenti aggiuntivi"].posizioni.Add(obj);
}
else
{
if (!map.ContainsKey("Disinvestimenti"))
{
map.Add("Disinvestimenti", new itemObject { ctvAttuale = new decimal(0), ctvProposto = new decimal(0), movimenti = new decimal(0), posizioni = new List(), codOrdinamento = 3 });
}
map["Disinvestimenti"].ctvAttuale = map["Disinvestimenti"].ctvAttuale + item.posizione.ctvAttuale;
map["Disinvestimenti"].ctvProposto = map["Disinvestimenti"].ctvProposto + item.posizione.ctvPro;
map["Disinvestimenti"].movimenti = map["Disinvestimenti"].movimenti + item.posizione.investi - item.posizione.disinvesti; ;
map["Disinvestimenti"].codOrdinamento = 3;
posizioneOperazione obj = new posizioneOperazione();
obj.posizione = item.posizione;
obj.operazione = operazioni;
map["Disinvestimenti"].posizioni.Add(obj);
}
}
}
}
foreach(var liquidita in listaLiquiditaKEKSPV)
{
if (!map.ContainsKey("Investimenti aggiuntivi"))
{
map.Add("Investimenti aggiuntivi", new itemObject { ctvAttuale = new decimal(0), ctvProposto = new decimal(0), movimenti = new decimal(0), posizioni = new List(), codOrdinamento = 2 });
}
map["Investimenti aggiuntivi"].ctvAttuale = map["Investimenti aggiuntivi"].ctvAttuale + liquidita.posizione.ctvAttuale;
map["Investimenti aggiuntivi"].ctvProposto = map["Investimenti aggiuntivi"].ctvProposto + liquidita.posizione.ctvPro;
map["Investimenti aggiuntivi"].movimenti = map["Investimenti aggiuntivi"].movimenti + liquidita.posizione.investi ; ;
map["Investimenti aggiuntivi"].codOrdinamento = 2;
map["Investimenti aggiuntivi"].posizioni.Add(liquidita);
}
string sCategoria = "";
foreach (var key in map.Keys)
{
switch (key.ToLower())
{
case "nuove sottoscrizioni":
sCategoria = "(A) ";
break;
case "investimenti aggiuntivi":
sCategoria = "(B) ";
break;
case "disinvestimenti":
sCategoria = "(C) ";
break;
}
ds.Tables["DToperazioni"].Rows.Add(
"$",
"" + sCategoria + "" + key,
"",
"",
map[key].ctvAttuale,
map[key].movimenti,
map[key].ctvProposto,
"-",
map[key].codOrdinamento
);
foreach (var posOper in map[key].posizioni)
{
var posizione = posOper.posizione;
var operazione = posOper.operazione;
string sSaving = "";
if (posizione.savingMap)
sSaving = "SavingMap.png";
ds.Tables["DToperazioni"].Rows.Add(
sSaving,
posizione.codContratto,
posizione.prodotto.nomeProdotto,
posizione.prodotto.codSottoprodottoFE,
posizione.ctvAttuale,
posizione.investi - posizione.disinvesti,
posizione.ctvPro,
posizione.prodotto.varProDec,
map[key].codOrdinamento);
}
}
foreach (DataRow dr in from contact in ds.Tables["DToperazioni"].AsEnumerable()
orderby contact.Field("ordinamento") ascending
select contact)
{
ds.Tables["operazioni"].Rows.Add(
dr["SavingMap"].ToString(),
dr["codContratto"].ToString(),
dr["Prodotto"].ToString(),
dr["codInterno"].ToString(),
dr["Controvaloreattuale"].ToString(),
dr["ApportiDisinvest"].ToString(),
dr["Controvaloreproposto"].ToString(),
dr["VaR"].ToString());
}
ds.Tables["operazionifooter"].Rows.Add(
"Totale",
ds.Tables["operazioni"].AsEnumerable().Where(x => x.Field("SavingMap") != "$").Sum(x => x.Field("Controvaloreattuale")),
ds.Tables["operazioni"].AsEnumerable().Where(x => x.Field("SavingMap") != "$").Sum(x => x.Field("ApportiDisinvest")),
ds.Tables["operazioni"].AsEnumerable().Where(x => x.Field("SavingMap") != "$").Sum(x => x.Field("Controvaloreproposto")),
//"",
""
);
#endregion
return ds;
}
public virtual string getTesto1()
{
bool isAdeguato = datiSeiUnico.flagAdeguatezzaPro();
string nota = isAdeguato ?
"In questa scheda è riportato il riepilogo delle operazioni effettuate all'interno della presente proposta." :
"In questa scheda è riportato il riepilogo delle operazioni da lei richieste al suo private banker.";
return nota;
}
private string decodeDurataPPI(string durataPPI)
{
string durata = "-";
switch (durataPPI)
{
case "M1":
durata = "1 Mese";
break;
case "M6":
durata = "6 Mesi";
break;
case "M12":
durata = "12 Mesi";
break;
case "M24":
durata = "24 Mesi";
break;
default:
break;
}
return durata;
}
private string decodeFrequenza(string freq)
{
string dec = "-";
if (freq != null) {
switch (freq) {
case "M":
dec = "Mensile";
break;
case "B":
dec = "Bimestrale";
break;
case "T":
dec = "Trimestrale";
break;
case "Q":
dec = "Quadrimestrale";
break;
case "S":
dec = "Semestrale";
break;
case "A":
dec = "Annuale";
break;
default:
break;
}
}
return dec;
}
//private string decodeDurata(string freq, decimal durata)
//{
// string dec = "-";
// if (freq != null)
// {
// switch (freq)
// {
// case "M":
// dec = durata > 1 ? "RATE":"RATA";
// break;
// case "B":
// dec = "Bimestrale";
// break;
// case "T":
// dec = "Trimestrale";
// break;
// case "Q":
// dec = "Quadrimestrale";
// break;
// case "S":
// dec = "Semestrale";
// break;
// case "A":
// dec = "Annuale";
// break;
// default:
// break;
// }
// }
// return dec;
//}
private partial class posizioneOperazione
{
private DataServices.fideuram.data.service.rsSTPosizione posizioneField;
private DataServices.fideuram.data.service.stDettaglioOperazioneBean operazioneField;
public DataServices.fideuram.data.service.rsSTPosizione posizione
{
get
{
return this.posizioneField;
}
set
{
this.posizioneField = value;
}
}
public DataServices.fideuram.data.service.stDettaglioOperazioneBean operazione
{
get
{
return this.operazioneField;
}
set
{
this.operazioneField = value;
}
}
}
private partial class itemObject
{
private decimal ctvAttualeField;
private decimal ctvPropostoField;
private decimal movimentiField;
private int codOrdinamentoField;
private List posizioniField;
public List posizioni
{
get
{
return this.posizioniField;
}
set
{
this.posizioniField = value;
}
}
public decimal ctvAttuale
{
get
{
return this.ctvAttualeField;
}
set
{
this.ctvAttualeField = value;
}
}
public decimal movimenti
{
get
{
return this.movimentiField;
}
set
{
this.movimentiField = value;
}
}
public decimal ctvProposto
{
get
{
return this.ctvPropostoField;
}
set
{
this.ctvPropostoField = value;
}
}
public int codOrdinamento
{
get
{
return this.codOrdinamentoField;
}
set
{
this.codOrdinamentoField = value;
}
}
}
public virtual string getFrequenza(int frequenza)
{
string freq = "";
switch (frequenza)
{
case 1:
freq = "Annuale";
break;
case 2:
freq = "Semestrale";
break;
case 4:
freq = "Trimestrale";
break;
case 12:
freq = "Mensile";
break;
case 52:
freq = "Settimanale";
break;
}
return freq;
}
}
}