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