2520 lines
160 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using 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
{
/// <summary>
///S56.PropostaDettaglioOperazioni idSezione = 99
/// </summary>
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) <font color=#000000>Nuove sottoscrizioni (€)</font>") { HeaderFontSize = 7 });
sintesiOperazioni.Columns.Add(new ColumnPDF("aggiuntivi", 130, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Decimale, "aggiuntivi", "(B) <font color=#000000>Investimenti aggiuntivi (€)</font>") { HeaderFontSize = 7 });
sintesiOperazioni.Columns.Add(new ColumnPDF("disinvestimenti", 130, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Decimale, "disinvestimenti", "(C) <font color=#000000>Disinvestimenti (€)</font>") { HeaderFontSize = 7 });
sintesiOperazioni.Columns.Add(new ColumnPDF("saldo", 130, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Decimale, "saldo", "(A+B-C) <font color=#000000>Saldo operazioni (€)</font>") { 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<br>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<br>Interno") { HeaderFontSize = 7, PaddingRight = 4 });
tabellaOperazioni.Columns.Add(new ColumnPDF("Controvaloreattuale", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvaloreattuale", "Controvalore<br>attuale (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
tabellaOperazioni.Columns.Add(new ColumnPDF("ApportiDisinvest", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ApportiDisinvest", "Apporti/<br>Disinvest. (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
tabellaOperazioni.Columns.Add(new ColumnPDF("Controvaloreproposto", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvaloreproposto", "Controvalore<br>" + (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<br>Mercato<br>(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("<font color=#FF0000>(A)</font> 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<br>Interno") { HeaderFontSize = 7 });
operazioniPACTerzi.Columns.Add(new ColumnPDF("primoVersamento", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "primoVersamento", "Primo<br>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/<br>Durata") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPACTerzi.Columns.Add(new ColumnPDF("valoreNominale", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "valoreNominale", "Valore<br>nominale (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPACTerzi.Columns.Add(new ColumnPDF("var", 45, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "var", "Rischio<br>Mercato<br>(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("<font color=#FF0000>(A)</font> 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<br>Interno") { HeaderFontSize = 7 });
operazioniPACFonditalia.Columns.Add(new ColumnPDF("primoVersamento", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "primoVersamento", "Primo<br>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<br>nominale (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPACFonditalia.Columns.Add(new ColumnPDF("var", 45, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "var", "Rischio<br>Mercato<br>(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("<font color=#FF0000>(A)</font> 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<br>Interno") { HeaderFontSize = 7 });
operazioniCPNS.Columns.Add(new ColumnPDF("ControvaloreSottoscrizione", 75, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvaloreSottoscrizione", "Controvalore<br>sottoscrizione (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniCPNS.Columns.Add(new ColumnPDF("Durata", 45, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Rata", "Rata (€)<br>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<br>proposto (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniCPNS.Columns.Add(new ColumnPDF("Var", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Var", "Rischio Mercato<br>(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("<font color=#FF0000>(B)</font> Investimenti aggiuntivi / <font color=#FF0000>(C)</font> 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<br>Interno") { HeaderFontSize = 7 });
operazioniCPCV.Columns.Add(new ColumnPDF("ControvaloreAttuale", 65, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvaloreAttuale", "Controvalore<br>attuale (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniCPCV.Columns.Add(new ColumnPDF("Rata", 50, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Rata", "Rata(€)<br>Frequenza/<br>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<br>proposto (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniCPCV.Columns.Add(new ColumnPDF("Var", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Var", "Rischio Mercato<br>(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<br>attuale (€)" : "Controvalore<br>sottoscrizione (€)")) { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaCP.Columns.Add(new ColumnPDF("ConversioneProgrammata", 85, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ConversioneProgrammata", "Servizio<br>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<br>" + (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("<font color=#FF0000>(A)</font> 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<br>Interno") { HeaderFontSize = 7, HeaderPaddingLeft = 9, PaddingLeft = 9 });
operazioniPPINS.Columns.Add(new ColumnPDF("CtvSottoscrizione", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "CtvSottoscrizione", "Controvalore<br>sottoscrizione (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPPINS.Columns.Add(new ColumnPDF("Frequenza", 50, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Frequenza", "Frequenza/<br>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<br>proposto (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniPPINS.Columns.Add(new ColumnPDF("Var", 45, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Var", "Rischio Mercato<br>(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("<font color=#FF0000>(B)</font> Investimenti aggiuntivi / <font color=#FF0000>(C)</font> 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<br>Interno") { HeaderFontSize = 7, HeaderPaddingLeft = 9, PaddingLeft = 9 });
tabellaKS.Columns.Add(new ColumnPDF("CtvSottoscrizione", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "CtvSottoscrizione", "Controvalore<br>sottoscrizione (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
tabellaKS.Columns.Add(new ColumnPDF("Frequenza", 50, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Frequenza", "Frequenza/<br>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<br>proposto (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
tabellaKS.Columns.Add(new ColumnPDF("Var", 45, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Var", "Rischio Mercato<br>(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<br>attuale (€)") { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaKS.Columns.Add(new ColumnPDF("Controvaloreproposto", 95, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvaloreproposto", "Controvalore<br>" + (isAdeguata ? "proposto (€)" : "prospettico (€)")) { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaKS.Columns.Add(new ColumnPDF("Rischiocredito", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Rischiocredito", "Rischio<br>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("<font color=#FF0000>(A)</font> 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<br>Interno") { HeaderFontSize = 7, PaddingLeft = 10, HeaderPaddingLeft = 10 });
operazioniFVI.Columns.Add(new ColumnPDF("PremioUnicoAggiuntivo", 75, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "PremioUnicoAggiuntivo", "Premio unico<br>aggiuntivo (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniFVI.Columns.Add(new ColumnPDF("Frequenza", 50, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Frequenza", "Rata (€)/<br>Frequenza") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniFVI.Columns.Add(new ColumnPDF("NumeroAnnualita", 65, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "NumeroAnnualita", "Numero<br>annualità") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniFVI.Columns.Add(new ColumnPDF("PianoVersamenti", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "PianoVersamenti", "Piano dei<br>versamenti (€)") { HeaderPaddingLeft = 4, HeaderFontSize = 7, PaddingRight = 4 });
operazioniFVI.Columns.Add(new ColumnPDF("Var", 45, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Var", "Rischio Mercato<br>(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.<br>(€)") { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaRM.Columns.Add(new ColumnPDF("Controvaloreproposto", 90, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Premioaggiuntivo", "Premio unico<br>aggiuntivo (€)") { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaRM.Columns.Add(new ColumnPDF("Premiversati", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Premiversati", "Premi versati<br>sottoscr. (€)") { HeaderFontSize = 7, PaddingRight = 4 });
// tabellaRM.Columns.Add(new ColumnPDF("Rischiocredito", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Rischiocredito", "Rischio<br>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 dellAderente: ", 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("<font color=#FF0000>(A)</font> 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<br>all'adesione (€)") { HeaderFontSize = 7, PaddingRight = 5 });
tabellaFondoPensione.Columns.Add(new ColumnPDF("ContrAderenteDatorePerc", 60, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ContrAderenteDatorePerc", "Contributo Aderente/<br>Datore (%)") { HeaderFontSize = 7, PaddingRight = 4 });
tabellaFondoPensione.Columns.Add(new ColumnPDF("ContrAderenteDatore", 60, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ContrAderenteDatore", "Contributo Aderente/<br>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<br>forma pens. (%)") { HeaderFontSize = 7, PaddingRight = 4 });
tabellaFondoPensione.Columns.Add(new ColumnPDF("Var", 45, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Var", "Rischio<br>Mercato<br>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<string, List<posizioneOperazione>>();
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>();
}
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) + "<br>" + 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<string>("ID") != "$").Sum(x => x.Field<decimal>("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<string, List<posizioneOperazione>>();
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>();
}
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<string>("ID") != "$").Sum(x => x.Field<decimal>("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<string, List<posizioneOperazione>>();
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>();
}
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<string>("id") != "$").Sum(x => x.Field<decimal>("ControvaloreSottoscrizione")),
"-",
"-",
ds.Tables["operazioniCPNS"].AsEnumerable().Where(x => x.Field<string>("id") != "$").Sum(x => x.Field<decimal>("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<string, List<posizioneOperazione>>();
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>();
}
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<string>("id") != "$").Sum(x => x.Field<decimal>("ControvaloreAttuale")),
"-",
"-",
ds.Tables["operazioniCPCV"].AsEnumerable().Where(x => x.Field<string>("id") != "$").Sum(x => x.Field<decimal>("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<string, List<posizioneOperazione>>();
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>();
}
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<decimal>("ControvaloreSottoscrizione")),
// ds.Tables["operazioniCP"].AsEnumerable().Sum(x => x.Field<decimal>("ConversioneProgrammata")),
// ds.Tables["operazioniCP"].AsEnumerable().Sum(x => x.Field<decimal>("Rata")),
// ds.Tables["operazioniCP"].AsEnumerable().Sum(x => x.Field<decimal>("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<string, List<posizioneOperazione>>();
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>();
}
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" + "<br>" + decodeDurataPPI(posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].durataPPI).ToUpper() : "Mensile" + "<br>" + 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<string>("ID") != "$").Sum(x => x.Field<decimal>("CtvSottoscrizione")),
"-",
ds.Tables["operazioniPPINS"].AsEnumerable().Where(x => x.Field<string>("ID") != "$").Sum(x => x.Field<decimal>("Conversione")),
ds.Tables["operazioniPPINS"].AsEnumerable().Where(x => x.Field<string>("ID") != "$").Sum(x => x.Field<decimal>("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<string, List<posizioneOperazione>>();
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>();
}
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" + "<br>" + decodeDurataPPI(posOper.operazione.stDettaglioContratto.stDettaglioLinea[0].durataPPI).ToUpper() : "Mensile" + "<br>" + 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<string, List<posizioneOperazione>>();
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>();
}
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 + "<br>"+ 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<string>("id") != "$").Sum(x => x.Field<decimal>("PremioUnicoAggiuntivo")),
"-",
"-",
ds.Tables["operazioniFVI"].AsEnumerable().Where(x => x.Field<string>("id") != "$").Sum(x => x.Field<decimal>("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<string, List<posizioneOperazione>>();
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>();
}
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<string>("SavingMap") != "$").Sum(x => x.Field<decimal>("ContributiversatiAdesione")),
ds.Tables["operazioniFondoPensione"].AsEnumerable().Where(x => x.Field<string>("SavingMap") != "$").Sum(x => x.Field<decimal>("ContrAderenteDatorePerc")),
ds.Tables["operazioniFondoPensione"].AsEnumerable().Where(x => x.Field<string>("SavingMap") != "$").Sum(x => x.Field<decimal>("ContrAderenteDatore")),
ds.Tables["operazioniFondoPensione"].AsEnumerable().Where(x => x.Field<string>("SavingMap") != "$").Sum(x => x.Field<decimal>("TFR")),
ds.Tables["operazioniFondoPensione"].AsEnumerable().Where(x => x.Field<string>("SavingMap") != "$").Sum(x => x.Field<decimal>("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, itemObject>();
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<posizioneOperazione>(), 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<posizioneOperazione>(), 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<posizioneOperazione>(), 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<posizioneOperazione>(), 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<posizioneOperazione>(), 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(
"$",
"<font color=#FF0000>" + sCategoria + "</font>" + 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<int>("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<string>("SavingMap") != "$").Sum(x => x.Field<decimal>("Controvaloreattuale")),
ds.Tables["operazioni"].AsEnumerable().Where(x => x.Field<string>("SavingMap") != "$").Sum(x => x.Field<decimal>("ApportiDisinvest")),
ds.Tables["operazioni"].AsEnumerable().Where(x => x.Field<string>("SavingMap") != "$").Sum(x => x.Field<decimal>("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<posizioneOperazione> posizioniField;
public List<posizioneOperazione> 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;
}
}
}