1056 lines
66 KiB
C#

using System;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using System.Data;
using Consulenza.ReportCommon;
using System.Linq;
using System.Collections.Generic;
using Consulenza.DataServices.fideuram.data.service;
using Consulenza.ReportWriter.Business.CUSTOM_PDF.ConsulenzaUnica;
namespace Consulenza.ReportWriter.Manager.Section.Unica
{
public class S54 : Entity.Section
{
/// <summary>
///S54.PropostaPiramideBisogni idSezione = 97
/// </summary>
public S54(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S54", 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") + ": piramide dei bisogni",
EnvironmentFacade.RendererFacade.XLeftLimit,
EnvironmentFacade.RendererFacade.YUpperLimit,
EnvironmentFacade.ReportEnvironment.FontFamily);
AddElement(intestazione.ToElement());
#region Tabella delle Aree di Bisogno
if (dati.Tables["area"].Rows.Count > 0)
{
#region Testo Introduttivo
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(7));
}
#endregion
var tabellaAree = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["area"], dati.Tables["areafooter"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = false,
RowsPadding = 10,
HeaderHeight = 30,
HeaderMargin = 5F,
FooterYOffset = 5F
};
#region Definizione Colonne
string contro = ctvPianificato() ? "Controvalore<br>pianificato (€)" : "Controvalore<br>modello (€)";
tabellaAree.Columns.Add(new ColumnPDF("Area2", 170, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, "Area", "Area di bisogno") { HeaderFontSize = 7, FontSize = 7, DeltaYContent = 1, ScaleColumnTypeImage = 0.5F });
tabellaAree.Columns.Add(new ColumnPDF("VaR", 40, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Var", "VaR (%)") { HeaderFontSize = 7, FontSize = 7, DeltaYContent = 5, HeaderPaddingRight = 10, PaddingRight = 10 });
tabellaAree.Columns.Add(new ColumnPDF("ControvaloreAttuale", 85, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "ControvaloreAttuale", "Controvalore<BR>attuale (€)") { HeaderFontSize = 7, FontSize = 7, DeltaYContent = 5, HeaderPaddingRight = 10 });
tabellaAree.Columns.Add(new ColumnPDF("ControvalorePianificatoModello", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "ControvalorePianificatoModello", contro) { HeaderFontSize = 7, FontSize = 7, HeaderPaddingRight = 7, DeltaYContent = 5 });
tabellaAree.Columns.Add(new ColumnPDF("OperazioniProposte", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "OperazioniProposte", "Operazioni<br>" + (isAdeguata ? "proposte (€)" : "richieste (€)")) { HeaderFontSize = 7, FontSize = 7, HeaderPaddingRight = 3, DeltaYContent = 5, PaddingRight = 4 });
tabellaAree.Columns.Add(new ColumnPDF("ControvaloreProposto", 75, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "ControvaloreProposto", "Controvalore<br>" + (isAdeguata ? "proposto (€)" : "prospettico (€)")) { HeaderFontSize = 7, FontSize = 7, HeaderPaddingRight = 3, DeltaYContent = 5, PaddingRight = 4 });
#endregion
#region Definizione Footer
tabellaAree.FooterColumns.Add(new ColumnPDF("Area", 170, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo) { FontSize = 7 });
tabellaAree.FooterColumns.Add(new ColumnPDF("VaR", 40, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo) { PaddingRight = 9, FontSize = 7 });
tabellaAree.FooterColumns.Add(new ColumnPDF("ControvaloreAttuale", 85, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale) { FontSize = 7 });
tabellaAree.FooterColumns.Add(new ColumnPDF("ControvalorePianificatoModello", 80, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale) { FontSize = 7 });
tabellaAree.FooterColumns.Add(new ColumnPDF("OperazioniProposte", 70, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale) { PaddingRight = 3, FontSize = 7 });
tabellaAree.FooterColumns.Add(new ColumnPDF("ControvaloreProposto", 75, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale) { FontSize = 7 });
#endregion
#region Formattazione Tabella Area
int i = 0;
foreach (DataRow r in dati.Tables["area"].Rows)
{
// Aggiunge i puntini per le Migliaia
tabellaAree.Cells[2, i].Value = Helper.FormatCurrency(r["ControvaloreAttuale"].ToString());
tabellaAree.Cells[3, i].Value = Helper.FormatCurrency(r["ControvalorePianificatoModello"].ToString());
tabellaAree.Cells[4, i].Value = Helper.FormatCurrency(r["OperazioniProposte"].ToString());
tabellaAree.Cells[5, i].Value = Helper.FormatCurrency(r["ControvaloreProposto"].ToString());
// Allinea i valori numerici a destra
tabellaAree.Cells[1, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaAree.Cells[2, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaAree.Cells[3, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaAree.Cells[4, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaAree.Cells[5, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaAree.Cells[0, i].ValueObjectList.Add(new ImagePDF(0, 1, dati.Tables["area"].Rows[i].ItemArray[0].ToString())
{
DeltaX = 3,
DeltaY = 0,
Scale = 0.66f,
Height = 27,
Width = 145
});
var textArea = new FormattedTextAreaPDF(dati.Tables["area"].Rows[i].ItemArray[1].ToString(), 0)
{
DeltaY = 8f,
FontSize = 8f
};
var labelSize = Helper.GetNumericStringWidth(textArea.Text);
float addition = 0;
switch (textArea.Text)
{
case "Investimento":
case "Previdenza":
addition = 3;
break;
case "Riserva":
addition = 2;
break;
case "Liquidità":
addition = 1;
break;
case "Extra Rendimento":
addition = 6;
break;
}
textArea.DeltaX = 76 + addition - labelSize;
textArea.Text = Helper.FirstCharToUpper(textArea.Text);
tabellaAree.Cells[0, i].ValueObjectList.Add(textArea);
i++;
}
int a = 0;
foreach (DataRow r in dati.Tables["areafooter"].Rows)
{
tabellaAree.FooterCells[0, a].FontBold =
tabellaAree.FooterCells[1, a].FontBold =
tabellaAree.FooterCells[2, a].FontBold =
tabellaAree.FooterCells[3, a].FontBold =
tabellaAree.FooterCells[4, a].FontBold =
tabellaAree.FooterCells[5, a].FontBold = Convert.ToBoolean(r["FontBold"]);
a++;
}
#endregion
#region Nota Tabella Area
AddElement(tabellaAree);
//AddElement(new SpacePDF(2));
AddElement(new LinePDF(EnvironmentFacade.RendererFacade.XLeftLimit, EnvironmentFacade.RendererFacade.XLeftLimit + tabellaAree.Width, 1F, ColorPDF.Standard_Grigio_SfondoColonnaTabella));
//if (getNota1().Length > 0)
//{
// AddElement(new SpacePDF(5));
// AddElement(new FormattedTextAreaPDF(getNota1(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
//}
if (getNota1().Length > 0)
tabellaAree.Notes.Add(
new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella,
getNota1(),
new[] { "VaR" },
string.Empty,
TableNotePDF.TableNoteAsteriskPositionType.PieDiTabella) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, DeltaY = 5 }
);
#endregion
}
#endregion
#region Tabella dei Progetti di Investimento
if (dati.Tables["investimento"].Rows.Count > 0)
{
DataTable dt = dati.Tables["investimento"].AsEnumerable().OrderByDescending(o => o.Field<decimal>("ControvaloreAttuale")).CopyToDataTable();
#region Testo Introduttivo
if (getTesto2().Length > 0)
{
AddElement(new SpacePDF(getNota1().Length > 0 ? 25 : 20));
AddElement(new FormattedTextAreaPDF(getTesto2(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
AddElement(new SpacePDF(7));
}
#endregion
var tabellaProgetti = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dt, dati.Tables["investimentofooter"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = false,
HeaderHeight = 30,
HeaderMargin = 5F,
FooterYOffset = 5F
};
#region Definizione Colonne
tabellaProgetti.Columns.Add(new ColumnPDF("Progetto", 110, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Progetto", "Progetto di investimento") { HeaderFontSize = 7, FontSize = 7 });
tabellaProgetti.Columns.Add(new ColumnPDF("DurataResidua", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "DurataResidua", "Durata<br>residua") { PaddingRight = 3, HeaderFontSize = 7, FontSize = 7, HeaderPaddingLeft = 7, PaddingLeft = 7 });
tabellaProgetti.Columns.Add(new ColumnPDF("VaR", 40, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Var", "VaR (%)") { PaddingRight = 10, HeaderFontSize = 7, FontSize = 7 });
tabellaProgetti.Columns.Add(new ColumnPDF("ControvaloreAttuale", 75, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvaloreAttuale", "Controvalore<BR>attuale (€)") { PaddingRight = 4, FontSize = 7, HeaderFontSize = 7, HeaderPaddingLeft = 7 });
if (ctvPianificato())
tabellaProgetti.Columns.Add(new ColumnPDF("ControvalorePianificatoModello", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvalorePianificatoModello", "Controvalore<BR>pianificato (€)") { PaddingRight = 4, HeaderFontSize = 7, FontSize = 7, HeaderPaddingLeft = 7 });
else
tabellaProgetti.Columns.Add(new ColumnPDF("ControvaloreModello", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvaloreModello", "Controvalore<br>modello (€)") { PaddingRight = 4, HeaderFontSize = 7, FontSize = 7, HeaderPaddingLeft = 7 });
tabellaProgetti.Columns.Add(new ColumnPDF("OperazioniProposte", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "OperazioniProposte", "Operazioni<BR>" + (isAdeguata ? "proposte (€)" : "richieste (€)")) { PaddingRight = 4, HeaderFontSize = 7, FontSize = 7, HeaderPaddingLeft = 7 });
tabellaProgetti.Columns.Add(new ColumnPDF("ControvaloreProposto", 75, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvaloreProposto", "Controvalore<BR>" + (isAdeguata ? "proposto (€)" : "prospettico (€)")) { PaddingRight = 5, FontSize = 7, HeaderFontSize = 7, HeaderPaddingLeft = 7 });
#endregion
#region Definizione Footer
tabellaProgetti.FooterColumns.Add(new ColumnPDF("Progetto", 110, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo) { PaddingRight = 3 });
tabellaProgetti.FooterColumns.Add(new ColumnPDF("DurataResidua", 60, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 3 });
tabellaProgetti.FooterColumns.Add(new ColumnPDF("VaR", 40, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo));
tabellaProgetti.FooterColumns.Add(new ColumnPDF("ControvaloreAttuale", 85, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 3 });
if (ctvPianificato())
tabellaProgetti.FooterColumns.Add(new ColumnPDF("ControvalorePianificatoModello", 80, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 3 });
else
tabellaProgetti.FooterColumns.Add(new ColumnPDF("ControvaloreModello", 80, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 3 });
tabellaProgetti.FooterColumns.Add(new ColumnPDF("OperazioniProposte", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 3 });
tabellaProgetti.FooterColumns.Add(new ColumnPDF("ControvaloreProposto", 75, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 1 });
#endregion
#region Formattazione Tabella Area
int i = 0;
foreach (DataRow r in dt.Rows)
{
// Aggiunge i puntini per le Migliaia
tabellaProgetti.Cells[3, i].Value = Helper.FormatCurrency(r["ControvaloreAttuale"].ToString());
tabellaProgetti.Cells[4, i].Value = ctvPianificato() ? Helper.FormatCurrency(r["ControvalorePianificatoModello"].ToString()) : Helper.FormatCurrency(r["ControvaloreModello"].ToString());
tabellaProgetti.Cells[5, i].Value = Helper.FormatCurrency(r["OperazioniProposte"].ToString());
tabellaProgetti.Cells[6, i].Value = Helper.FormatCurrency(r["ControvaloreProposto"].ToString());
// Allinea i valori numerici a destra
tabellaProgetti.Cells[2, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaProgetti.Cells[3, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaProgetti.Cells[4, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaProgetti.Cells[5, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaProgetti.Cells[6, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
i++;
}
#region Nota Tabella Investimento
if (getNota2().Length > 0)
tabellaProgetti.Notes.Add(
new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella,
getNota2(),
new[] { "VaR" },
string.Empty,
TableNotePDF.TableNoteAsteriskPositionType.PieDiTabella)
{ FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, DeltaY = 5 }
);
AddElement(tabellaProgetti);
#endregion
#endregion
}
#endregion
#region Tabella dei Progetti di previdenza
if (dati.Tables["previdenza"].Rows.Count > 0)
{
if (dati.Tables["investimento"].Rows.Count + // progetto rows
1 + // progetto headerv
1 + // progetto footer
(getNota1().Length > 0 ? 1 : 0) + // nota1
(getNota2().Length > 0 ? 1 : 0) + // nota2
(getNota3().Length > 0 ? 1 : 0) + // nota3
dati.Tables["areafooter"].Rows.Count // progetto footers
> 9
&& dati.Tables["previdenza"].Rows.Count > 0)
{
AddElement(new ImagePDF(435, 0.15F, "changepage.png") { AutoIncrementYWritable = false, Y = EnvironmentFacade.RendererFacade.YLowerLimit - 5 });
AddElement(new FormattedTextAreaPDF("continua alla pagina successiva", 450, 200) { FontSize = 6, AutoIncrementYWritable = false, Y = EnvironmentFacade.RendererFacade.YLowerLimit - 5, AbsolutePosition = true });
AddElement(new PagePDF(PagePDF.PagePDFType.Generic));
AddElement(new SpacePDF(2));
AddElement(new ImagePDF(EnvironmentFacade.RendererFacade.XLeftLimit, 0.15F, "changepage.png") { Y = EnvironmentFacade.RendererFacade.YUpperLimit + 2, AutoIncrementYWritable = false });
AddElement(new FormattedTextAreaPDF("continua dalla pagina precedente", EnvironmentFacade.RendererFacade.XLeftLimit + 15, 200) { Y = EnvironmentFacade.RendererFacade.YUpperLimit + 2, FontSize = 6, AutoIncrementYWritable = true, AbsolutePosition = true });
//AddElement(new SpacePDF(20));
}
else
{
//AddElement(new SpacePDF(15));
}
DataTable dtpre = dati.Tables["previdenza"].AsEnumerable().OrderBy(o => o.Field<string>("Progetto")).ThenByDescending(o => o.Field<decimal>("ControvaloreAttuale")).CopyToDataTable();
#region Testo Introduttivo
if (getTesto3().Length > 0)
{
AddElement(new SpacePDF(getNota2().Length > 0 ? 25 : 20));
AddElement(new FormattedTextAreaPDF(getTesto3(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
AddElement(new SpacePDF(7));
}
#endregion
var tabellaProgetti = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dtpre, dati.Tables["previdenzafooter"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = false,
HeaderHeight = 30,
HeaderMargin = 5F,
FooterYOffset = 5F
};
#region Definizione Tabella Previdenza
tabellaProgetti.Columns.Add(new ColumnPDF("Progetto", 170, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Progetto", "Previdenza") { HeaderFontSize = 7, FontSize = 7 });
tabellaProgetti.Columns.Add(new ColumnPDF("VaR", 40, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "Var", "VaR (%)") { PaddingRight = 10, HeaderFontSize = 7, FontSize = 7 });
tabellaProgetti.Columns.Add(new ColumnPDF("ControvaloreAttuale", 85, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvaloreAttuale", "Controvalore<BR>attuale (€)") { PaddingRight = 5, HeaderPaddingLeft = 7, FontSize = 7, HeaderFontSize = 7 });
if (ctvPianificato())
tabellaProgetti.Columns.Add(new ColumnPDF("ControvalorePianificatoModello", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvalorePianificatoModello", "Controvalore<BR>pianificato (€)") { PaddingRight = 5, FontSize = 7, HeaderPaddingLeft = 7, HeaderFontSize = 7 });
else
tabellaProgetti.Columns.Add(new ColumnPDF("ControvaloreModello", 80, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvaloreModello", "Controvalore<br>modello (€)") { PaddingRight = 5, FontSize = 7, HeaderFontSize = 7, HeaderPaddingLeft = 7 });
tabellaProgetti.Columns.Add(new ColumnPDF("OperazioniProposte", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "OperazioniProposte", "Operazioni<BR>" + (isAdeguata ? "proposte (€)" : "richieste (€)")) { PaddingRight = 5, FontSize = 7, HeaderFontSize = 7, HeaderPaddingLeft = 7 });
tabellaProgetti.Columns.Add(new ColumnPDF("ControvaloreProposto", 75, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "ControvaloreProposto", "Controvalore<BR>" + (isAdeguata ? "proposto (€)" : "prospettico (€)")) { PaddingRight = 5, FontSize = 7, HeaderFontSize = 7, HeaderPaddingLeft = 7 });
#endregion
#region Definizione Footer
tabellaProgetti.FooterColumns.Add(new ColumnPDF("Progetto", 170, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo));
tabellaProgetti.FooterColumns.Add(new ColumnPDF("VaR", 40, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { PaddingRight = 10 });
tabellaProgetti.FooterColumns.Add(new ColumnPDF("ControvaloreAttuale", 85, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 5 });
if (ctvPianificato())
tabellaProgetti.FooterColumns.Add(new ColumnPDF("ControvalorePianificatoModello", 80, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 5 });
else
tabellaProgetti.FooterColumns.Add(new ColumnPDF("ControvaloreModello", 80, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 5 });
tabellaProgetti.FooterColumns.Add(new ColumnPDF("OperazioniProposte", 70, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 5 });
tabellaProgetti.FooterColumns.Add(new ColumnPDF("ControvaloreProposto", 75, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 1 });
#endregion
#region Formattazione Tabella Area
int i = 0;
foreach (DataRow r in dtpre.Rows)
{
//// Aggiunge i puntini per le Migliaia
tabellaProgetti.Cells[2, i].Value = Helper.FormatCurrency(r["ControvaloreAttuale"].ToString());
tabellaProgetti.Cells[3, i].Value = Helper.FormatCurrency(ctvPianificato() ? r["ControvalorePianificatoModello"].ToString() : r["ControvaloreModello"].ToString());
tabellaProgetti.Cells[4, i].Value = Helper.FormatCurrency(r["OperazioniProposte"].ToString());
tabellaProgetti.Cells[5, i].Value = Helper.FormatCurrency(r["ControvaloreProposto"].ToString());
// Allinea i valori numerici a destra
tabellaProgetti.Cells[1, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaProgetti.Cells[2, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaProgetti.Cells[3, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaProgetti.Cells[4, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaProgetti.Cells[5, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
i++;
}
#endregion
#region Nota Tabella Previdenza
if (getNota3().Length > 0)
tabellaProgetti.Notes.Add(
new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella,
getNota3(),
new[] { "VaR" },
string.Empty,
TableNotePDF.TableNoteAsteriskPositionType.PieDiTabella)
{ FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, DeltaY = 5 }
);
AddElement(tabellaProgetti);
#endregion
}
#endregion
}
/// <summary>
/// Recupera i dati necessari alla Section restituendo un DataTable.
/// </summary>
/// <returns></returns>
protected sealed override DataTable GetDataTable()
{
return null;
}
protected override DataSet GetDataSet()
{
#region Definizione Dataset
var ds = new DataSet();
ds.Tables.Add(new DataTable("area"));
ds.Tables.Add(new DataTable("areafooter"));
ds.Tables.Add(new DataTable("investimento"));
ds.Tables.Add(new DataTable("investimentofooter"));
ds.Tables.Add(new DataTable("previdenza"));
ds.Tables.Add(new DataTable("previdenzafooter"));
ds.Tables["area"].Columns.Add(new DataColumn("Area", typeof(string)));
ds.Tables["area"].Columns.Add(new DataColumn("Description", typeof(string)));
ds.Tables["area"].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables["area"].Columns.Add(new DataColumn("ControvaloreAttuale", typeof(decimal)));
ds.Tables["area"].Columns.Add(new DataColumn("ControvalorePianificatoModello", typeof(decimal)));
ds.Tables["area"].Columns.Add(new DataColumn("OperazioniProposte", typeof(decimal)));
ds.Tables["area"].Columns.Add(new DataColumn("ControvaloreProposto", typeof(decimal)));
ds.Tables["areafooter"].Columns.Add(new DataColumn("Area", typeof(string)));
ds.Tables["areafooter"].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables["areafooter"].Columns.Add(new DataColumn("ControvaloreAttuale", typeof(string)));
ds.Tables["areafooter"].Columns.Add(new DataColumn("ControvalorePianificatoModello", typeof(string)));
ds.Tables["areafooter"].Columns.Add(new DataColumn("OperazioniProposte", typeof(string)));
ds.Tables["areafooter"].Columns.Add(new DataColumn("ControvaloreProposto", typeof(string)));
ds.Tables["areafooter"].Columns.Add(new DataColumn("FontBold", typeof(bool)));
ds.Tables["areaFooter"].Columns.Add(new DataColumn("BackgroundGray", typeof(bool)));
ds.Tables["investimento"].Columns.Add(new DataColumn("Progetto", typeof(string)));
ds.Tables["investimento"].Columns.Add(new DataColumn("DurataResidua", typeof(string)));
ds.Tables["investimento"].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables["investimento"].Columns.Add(new DataColumn("ControvaloreAttuale", typeof(decimal)));
if (ctvPianificato())
ds.Tables["investimento"].Columns.Add(new DataColumn("ControvalorePianificatoModello", typeof(decimal)));
else
ds.Tables["investimento"].Columns.Add(new DataColumn("ControvaloreModello", typeof(decimal)));
ds.Tables["investimento"].Columns.Add(new DataColumn("OperazioniProposte", typeof(decimal)));
ds.Tables["investimento"].Columns.Add(new DataColumn("ControvaloreProposto", typeof(decimal)));
ds.Tables["investimentofooter"].Columns.Add(new DataColumn("Progetto", typeof(string)));
ds.Tables["investimentofooter"].Columns.Add(new DataColumn("DurataResidua", typeof(string)));
ds.Tables["investimentofooter"].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables["investimentofooter"].Columns.Add(new DataColumn("ControvaloreAttuale", typeof(string)));
if (ctvPianificato())
ds.Tables["investimentofooter"].Columns.Add(new DataColumn("ControvalorePianificatoModello", typeof(string)));
else
ds.Tables["investimentofooter"].Columns.Add(new DataColumn("ControvaloreModello", typeof(string)));
ds.Tables["investimentofooter"].Columns.Add(new DataColumn("OperazioniProposte", typeof(string)));
ds.Tables["investimentofooter"].Columns.Add(new DataColumn("ControvaloreProposto", typeof(string)));
ds.Tables["investimentofooter"].Columns.Add(new DataColumn("CanLastRow", typeof(bool)));
ds.Tables["previdenza"].Columns.Add(new DataColumn("Progetto", typeof(string)));
ds.Tables["previdenza"].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables["previdenza"].Columns.Add(new DataColumn("ControvaloreAttuale", typeof(decimal)));
if (ctvPianificato())
ds.Tables["previdenza"].Columns.Add(new DataColumn("ControvalorePianificatoModello", typeof(decimal)));
else
ds.Tables["previdenza"].Columns.Add(new DataColumn("ControvaloreModello", typeof(decimal)));
ds.Tables["previdenza"].Columns.Add(new DataColumn("OperazioniProposte", typeof(decimal)));
ds.Tables["previdenza"].Columns.Add(new DataColumn("ControvaloreProposto", typeof(decimal)));
ds.Tables["previdenzafooter"].Columns.Add(new DataColumn("Progetto", typeof(string)));
ds.Tables["previdenzafooter"].Columns.Add(new DataColumn("VaR", typeof(string)));
ds.Tables["previdenzafooter"].Columns.Add(new DataColumn("ControvaloreAttuale", typeof(string)));
if (ctvPianificato())
ds.Tables["previdenzafooter"].Columns.Add(new DataColumn("ControvalorePianificatoModello", typeof(string)));
else
ds.Tables["previdenzafooter"].Columns.Add(new DataColumn("ControvaloreModello", typeof(string)));
ds.Tables["previdenzafooter"].Columns.Add(new DataColumn("OperazioniProposte", typeof(string)));
ds.Tables["previdenzafooter"].Columns.Add(new DataColumn("ControvaloreProposto", typeof(string)));
ds.Tables["previdenzafooter"].Columns.Add(new DataColumn("CanLastRow", typeof(bool)));
#endregion
#region DatiSeiUnico
var piramideModello = datiSeiUnico.piramideModelloUnit().piramideModello.areaModello.Where(o => o.visible == true).OrderBy(o => o.ordinamento);
var pianificazioneVerticaleAttuale = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale;
var pianificazioneVerticalePianificato = datiSeiUnico.propostaUnit().stPianificazioneVerticale;
var stDettaglioProposta = datiSeiUnico.propostaUnit().stDettaglioProposta;
#endregion
#region OLD CODE Aree + Footer
//#region Aree + Footer
//foreach (var item in piramideModello)
//{
// var valori = pianificazioneVerticalePianificato.stAreePianificazione.FirstOrDefault(oo => oo.area.Equals(item.area));
// ds.Tables["area"].Rows.Add(
// string.Format("{0}.png", new AreaBisogno(item.area).NomePerImmagine),
// item.descrizioneArea,
// valori.coperturaAreaPro == 0 ? "n.c." : valori.varAreaPro.ToString(),
// valori.ctvArea,
// ctvPianificato() ? valori.ctvPianificato : (from o in piramideModello where o.area == item.area select o).LastOrDefault().percentualeArea / 100 * stDettaglioProposta.risorseFinanziarieBF,
// valori.ctvAreaPro - valori.ctvArea,
// valori.ctvAreaPro
// );
//}
//var PIANIFICATO_SUBTOTALE = ctvPianificato() ?
// pianificazioneVerticalePianificato.ctvPianificato
// - (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvPianificato).LastOrDefault()
// - (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Cc" select o.ctvPianificato).LastOrDefault() :
// pianificazioneVerticaleAttuale.risorseFinanziarieBF;
//var PIANIFICATO_OC = ctvPianificato() ?
// pianificazioneVerticalePianificato.partiteViaggianti :
// pianificazioneVerticaleAttuale.partiteViaggianti;
//var PIANIFICATO_CCN = ctvPianificato() ?
// (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Cc" select o.ctvPianificato).LastOrDefault() :
// pianificazioneVerticaleAttuale.contoCorrenteNegativo;
//// AC
////var a = pianificazioneVerticalePianificato.stAreePianificazione.Where(a => a.area == "Self" && a.progetti.FirstOrDefault().posizioniPortafoglio.FirstOrDefault().prodottoFinanziario.codInterno == "XY").LastOrDefault().ctvPianificato;
//decimal PIANIFICATO_GPELIGO;
//if (ctvPianificato())
//{
// var e = pianificazioneVerticalePianificato.stAreePianificazione.Where(a => a.area == "Self" && a.progetti.FirstOrDefault().posizioniPortafoglio.FirstOrDefault().prodottoFinanziario.codInterno == "XY").LastOrDefault();
// if (e != null)
// {
// PIANIFICATO_GPELIGO = e.ctvPianificato;
// }
// else
// PIANIFICATO_GPELIGO = 0;
//}
//else
// PIANIFICATO_GPELIGO = datiSeiUnico.ATTUTALE_GPELIGO;
//decimal PIANIFICATO_FOGLIO;
//if (ctvPianificato())
//{
// var e = pianificazioneVerticalePianificato.stAreePianificazione.Where(a => a.area == "Self" && a.progetti.FirstOrDefault().posizioniPortafoglio.FirstOrDefault().prodottoFinanziario.codInterno == "FO").LastOrDefault();
// if (e != null)
// {
// PIANIFICATO_FOGLIO = e.ctvPianificato;
// }
// else
// PIANIFICATO_FOGLIO = 0;
//}
//else
// PIANIFICATO_FOGLIO = datiSeiUnico.ATTUTALE_TUOFOGLIO;
////var PIANIFICATO_GPELIGO = ctvPianificato() ?
//// (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvPianificato).LastOrDefault() :
//// datiSeiUnico.ATTUTALE_GPELIGO;
//// var PIANIFICATO_FOGLIO = ctvPianificato() ?
//////(from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvPianificato).LastOrDefault()
////:
//// datiSeiUnico.ATTUTALE_TUOFOGLIO;
////--AC
//var PIANIFICATO_TOTALE = ctvPianificato() ?
// pianificazioneVerticalePianificato.ctvPianificato :
// pianificazioneVerticaleAttuale.patrimonioTotaleRFA;
//if ((datiSeiUnico.ATTUTALE_OC != 0 || PIANIFICATO_OC != 0 || datiSeiUnico.PROPOSTO_CCN != 0) ||
// (datiSeiUnico.ATTUTALE_CCN != 0 || PIANIFICATO_CCN != 0 || datiSeiUnico.PROPOSTO_CCN != 0) ||
// (datiSeiUnico.ATTUTALE_GPELIGO != 0 || PIANIFICATO_GPELIGO != 0 || datiSeiUnico.PROPOSTO_GPELIGO != 0) ||
// (datiSeiUnico.ATTUTALE_TUOFOGLIO != 0 || PIANIFICATO_FOGLIO != 0 || datiSeiUnico.PROPOSTO_TUOFOGLIO != 0)
// )
//{
// DataRow dr = ds.Tables["areafooter"].NewRow();
// dr["Area"] = string.Format("Totale risorse allocate");
// dr["VaR"] = stDettaglioProposta.rischioMercatoDec;
// dr["ControvaloreAttuale"] = datiSeiUnico.ATTUTALE_SUBTOTALE;
// dr["ControvalorePianificatoModello"] = PIANIFICATO_SUBTOTALE;
// dr["OperazioniProposte"] = datiSeiUnico.PROPOSTO_SUBTOTALE - datiSeiUnico.ATTUTALE_SUBTOTALE;
// dr["ControvaloreProposto"] = datiSeiUnico.PROPOSTO_SUBTOTALE;
// dr["FontBold"] = true;
// dr["BackgroundGray"] = true;
// ds.Tables["areafooter"].Rows.Add(dr);
// if (datiSeiUnico.ATTUTALE_OC != 0 || PIANIFICATO_OC != 0 || datiSeiUnico.PROPOSTO_OC != 0)
// {
// dr = ds.Tables["areafooter"].NewRow();
// dr["Area"] = string.Format("Operazioni in corso");
// dr["VaR"] = "-";
// dr["ControvaloreAttuale"] = datiSeiUnico.ATTUTALE_OC;
// dr["ControvalorePianificatoModello"] = "-";
// dr["OperazioniProposte"] = datiSeiUnico.PROPOSTO_OC - datiSeiUnico.ATTUTALE_OC;
// dr["ControvaloreProposto"] = datiSeiUnico.PROPOSTO_OC;
// dr["FontBold"] = false;
// dr["BackgroundGray"] = false;
// ds.Tables["areafooter"].Rows.Add(dr);
// }
// if (datiSeiUnico.ATTUTALE_CCN != 0 || PIANIFICATO_CCN != 0 || datiSeiUnico.PROPOSTO_CCN != 0)
// {
// dr = ds.Tables["areafooter"].NewRow();
// dr["Area"] = string.Format("Conto corrente");
// dr["VaR"] = "n.c.";
// dr["ControvaloreAttuale"] = datiSeiUnico.ATTUTALE_CCN;
// dr["ControvalorePianificatoModello"] = "-";
// dr["OperazioniProposte"] = (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Cc" select o.ctvAreaPro).LastOrDefault() != null ?
// (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Cc" select o.ctvAreaPro).LastOrDefault() - datiSeiUnico.ATTUTALE_CCN : 0;//datiSeiUnico.PROPOSTO_CCN - datiSeiUnico.ATTUTALE_CCN;
// dr["ControvaloreProposto"] = (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Cc" select o.ctvAreaPro).LastOrDefault();//datiSeiUnico.PROPOSTO_CCN;
// dr["FontBold"] = false;
// dr["BackgroundGray"] = false;
// ds.Tables["areafooter"].Rows.Add(dr);
// }
// // AC
// if (datiSeiUnico.ATTUTALE_GPELIGO != 0 || PIANIFICATO_GPELIGO != 0 || datiSeiUnico.PROPOSTO_GPELIGO != 0)
// {
// dr = ds.Tables["areafooter"].NewRow();
// dr["Area"] = string.Format("Liquidità negativa GP Eligo");
// dr["VaR"] = "n.c.";
// dr["ControvaloreAttuale"] = datiSeiUnico.ATTUTALE_GPELIGO;
// dr["ControvalorePianificatoModello"] = "-";
// dr["OperazioniProposte"] = (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvAreaPro).LastOrDefault() != null ?
// (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvAreaPro).LastOrDefault() - datiSeiUnico.ATTUTALE_CCN : 0;//datiSeiUnico.PROPOSTO_CCN - datiSeiUnico.ATTUTALE_CCN;
// dr["ControvaloreProposto"] = (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvAreaPro).LastOrDefault();//datiSeiUnico.PROPOSTO_GPELIGO;
// dr["FontBold"] = false;
// dr["BackgroundGray"] = false;
// ds.Tables["areafooter"].Rows.Add(dr);
// }
// if (datiSeiUnico.ATTUTALE_TUOFOGLIO != 0 || PIANIFICATO_FOGLIO != 0 || datiSeiUnico.PROPOSTO_TUOFOGLIO != 0)
// {
// dr = ds.Tables["areafooter"].NewRow();
// dr["Area"] = string.Format("Liquidità Il Mio Foglio");
// dr["VaR"] = "n.c.";
// dr["ControvaloreAttuale"] = datiSeiUnico.ATTUTALE_TUOFOGLIO;
// dr["ControvalorePianificatoModello"] = "-";
// dr["OperazioniProposte"] = (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvAreaPro).LastOrDefault() != null ?
// (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvAreaPro).LastOrDefault() - datiSeiUnico.ATTUTALE_CCN : 0;//datiSeiUnico.PROPOSTO_CCN - datiSeiUnico.ATTUTALE_CCN;
// dr["ControvaloreProposto"] = (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvAreaPro).LastOrDefault();//datiSeiUnico.PROPOSTO_GPELIGO;
// dr["FontBold"] = false;
// dr["BackgroundGray"] = false;
// ds.Tables["areafooter"].Rows.Add(dr);
// }
// //--AC
//}
//DataRow drTot = ds.Tables["areafooter"].NewRow();
//drTot["Area"] = string.Format("Patrimonio {0}", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment));
//drTot["VaR"] = stDettaglioProposta.rischioMercatoDec + (getNota1().Length > 0 ? "*" : "");
//drTot["ControvaloreAttuale"] = datiSeiUnico.ATTUTALE_TOTALE;
//drTot["ControvalorePianificatoModello"] = PIANIFICATO_SUBTOTALE;
//drTot["OperazioniProposte"] = datiSeiUnico.PROPOSTO_TOTALE - datiSeiUnico.ATTUTALE_TOTALE;
//drTot["ControvaloreProposto"] = datiSeiUnico.PROPOSTO_TOTALE;
//drTot["FontBold"] = true;
//drTot["BackgroundGray"] = true;
//ds.Tables["areafooter"].Rows.Add(drTot);
//#endregion
#endregion
#region Aree + Footer
foreach (var item in piramideModello)
{
var valori = pianificazioneVerticalePianificato.stAreePianificazione.FirstOrDefault(oo => oo.area.Equals(item.area));
ds.Tables["area"].Rows.Add(
string.Format("{0}.png", new AreaBisogno(item.area).NomePerImmagine),
item.descrizioneArea,
valori.coperturaAreaPro == 0 ? "n.c." : valori.varAreaPro.ToString(),
valori.ctvArea,
ctvPianificato() ? valori.ctvPianificato : (from o in piramideModello where o.area == item.area select o).LastOrDefault().percentualeArea / 100 * stDettaglioProposta.risorseFinanziarieBF,
valori.ctvAreaPro - valori.ctvArea,
valori.ctvAreaPro
);
}
var PIANIFICATO_SUBTOTALE = ctvPianificato() ?
pianificazioneVerticalePianificato.ctvPianificato
- (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvPianificato).LastOrDefault()
- (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Cc" select o.ctvPianificato).LastOrDefault() :
pianificazioneVerticaleAttuale.risorseFinanziarieBF;
var PIANIFICATO_OC = ctvPianificato() ?
pianificazioneVerticalePianificato.partiteViaggianti :
pianificazioneVerticaleAttuale.partiteViaggianti;
var PIANIFICATO_CCN = ctvPianificato() ?
(from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Cc" select o.ctvPianificato).LastOrDefault() :
pianificazioneVerticaleAttuale.contoCorrenteNegativo;
// AC
//var a = pianificazioneVerticalePianificato.stAreePianificazione.Where(a => a.area == "Self" && a.progetti.FirstOrDefault().posizioniPortafoglio.FirstOrDefault().prodottoFinanziario.codInterno == "XY").LastOrDefault().ctvPianificato;
decimal PIANIFICATO_GPELIGO = 0;
decimal PIANIFICATO_FOGLIO = 0;
if (ctvPianificato())
{
//var e = pianificazioneVerticalePianificato.stAreePianificazione.Where(a => a.area == "Self" && a.progetti.FirstOrDefault().posizioniPortafoglio.FirstOrDefault().prodottoFinanziario.codInterno == "XY").LastOrDefault();
var eProgetti = pianificazioneVerticalePianificato.stAreePianificazione.Where(a => a.area == "Self");
if (eProgetti.ToList().FirstOrDefault().progetti.FirstOrDefault().posizioniPortafoglio == null)
{
PIANIFICATO_GPELIGO = 0;
PIANIFICATO_FOGLIO = 0;
}
else
{
var eGPELIGO = pianificazioneVerticalePianificato.stAreePianificazione.Where(a => a.progetti.FirstOrDefault().posizioniPortafoglio.FirstOrDefault().prodottoFinanziario.codInterno == "XY").LastOrDefault();
if (eGPELIGO != null)
PIANIFICATO_GPELIGO = eGPELIGO.ctvPianificato;
else
PIANIFICATO_GPELIGO = 0;
var eFOGLIO = pianificazioneVerticalePianificato.stAreePianificazione.Where(a => a.progetti.FirstOrDefault().posizioniPortafoglio.FirstOrDefault().prodottoFinanziario.codInterno == "FO").LastOrDefault();
if (eFOGLIO != null)
PIANIFICATO_FOGLIO = eFOGLIO.ctvPianificato;
else
PIANIFICATO_FOGLIO = 0;
}
}
else
{
PIANIFICATO_GPELIGO = datiSeiUnico.ATTUTALE_GPELIGO;
PIANIFICATO_FOGLIO = datiSeiUnico.ATTUTALE_TUOFOGLIO;
}
//if (ctvPianificato())
//{
// var e = pianificazioneVerticalePianificato.stAreePianificazione.Where(a => a.area == "Self" && a.progetti.FirstOrDefault().posizioniPortafoglio.FirstOrDefault().prodottoFinanziario.codInterno == "FO").LastOrDefault();
// if (e != null)
// {
// PIANIFICATO_FOGLIO = e.ctvPianificato;
// }
// else
// PIANIFICATO_FOGLIO = 0;
//}
//else
// PIANIFICATO_FOGLIO = datiSeiUnico.ATTUTALE_TUOFOGLIO;
//var PIANIFICATO_GPELIGO = ctvPianificato() ?
// (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvPianificato).LastOrDefault() :
// datiSeiUnico.ATTUTALE_GPELIGO;
// var PIANIFICATO_FOGLIO = ctvPianificato() ?
////(from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvPianificato).LastOrDefault()
//:
// datiSeiUnico.ATTUTALE_TUOFOGLIO;
//--AC
var PIANIFICATO_TOTALE = ctvPianificato() ?
pianificazioneVerticalePianificato.ctvPianificato :
pianificazioneVerticaleAttuale.patrimonioTotaleRFA;
if ((datiSeiUnico.ATTUTALE_OC != 0 || PIANIFICATO_OC != 0 || datiSeiUnico.PROPOSTO_CCN != 0) ||
(datiSeiUnico.ATTUTALE_CCN != 0 || PIANIFICATO_CCN != 0 || datiSeiUnico.PROPOSTO_CCN != 0) ||
(datiSeiUnico.ATTUTALE_GPELIGO != 0 || PIANIFICATO_GPELIGO != 0 || datiSeiUnico.PROPOSTO_GPELIGO != 0) ||
(datiSeiUnico.ATTUTALE_TUOFOGLIO != 0 || PIANIFICATO_FOGLIO != 0 || datiSeiUnico.PROPOSTO_TUOFOGLIO != 0)
)
{
DataRow dr = ds.Tables["areafooter"].NewRow();
dr["Area"] = string.Format("Totale risorse allocate");
dr["VaR"] = stDettaglioProposta.rischioMercatoDec;
dr["ControvaloreAttuale"] = datiSeiUnico.ATTUTALE_SUBTOTALE;
dr["ControvalorePianificatoModello"] = PIANIFICATO_SUBTOTALE;
dr["OperazioniProposte"] = datiSeiUnico.PROPOSTO_SUBTOTALE - datiSeiUnico.ATTUTALE_SUBTOTALE;
dr["ControvaloreProposto"] = datiSeiUnico.PROPOSTO_SUBTOTALE;
dr["FontBold"] = true;
dr["BackgroundGray"] = true;
ds.Tables["areafooter"].Rows.Add(dr);
if (datiSeiUnico.ATTUTALE_OC != 0 || PIANIFICATO_OC != 0 || datiSeiUnico.PROPOSTO_OC != 0)
{
dr = ds.Tables["areafooter"].NewRow();
dr["Area"] = string.Format("Operazioni in corso");
dr["VaR"] = "-";
dr["ControvaloreAttuale"] = datiSeiUnico.ATTUTALE_OC;
dr["ControvalorePianificatoModello"] = "-";
dr["OperazioniProposte"] = datiSeiUnico.PROPOSTO_OC - datiSeiUnico.ATTUTALE_OC;
dr["ControvaloreProposto"] = datiSeiUnico.PROPOSTO_OC;
dr["FontBold"] = false;
dr["BackgroundGray"] = false;
ds.Tables["areafooter"].Rows.Add(dr);
}
if (datiSeiUnico.ATTUTALE_CCN != 0 || PIANIFICATO_CCN != 0 || datiSeiUnico.PROPOSTO_CCN != 0)
{
dr = ds.Tables["areafooter"].NewRow();
dr["Area"] = string.Format("Conto corrente");
dr["VaR"] = "n.c.";
dr["ControvaloreAttuale"] = datiSeiUnico.ATTUTALE_CCN;
dr["ControvalorePianificatoModello"] = "-";
dr["OperazioniProposte"] = (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Cc" select o.ctvAreaPro).LastOrDefault() != null ?
(from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Cc" select o.ctvAreaPro).LastOrDefault() - datiSeiUnico.ATTUTALE_CCN : 0;//datiSeiUnico.PROPOSTO_CCN - datiSeiUnico.ATTUTALE_CCN;
dr["ControvaloreProposto"] = (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Cc" select o.ctvAreaPro).LastOrDefault();//datiSeiUnico.PROPOSTO_CCN;
dr["FontBold"] = false;
dr["BackgroundGray"] = false;
ds.Tables["areafooter"].Rows.Add(dr);
}
// AC
if (datiSeiUnico.ATTUTALE_GPELIGO != 0 || PIANIFICATO_GPELIGO != 0 || datiSeiUnico.PROPOSTO_GPELIGO != 0)
{
dr = ds.Tables["areafooter"].NewRow();
dr["Area"] = string.Format("Liquidità negativa GP Eligo");
dr["VaR"] = "n.c.";
dr["ControvaloreAttuale"] = datiSeiUnico.ATTUTALE_GPELIGO;
dr["ControvalorePianificatoModello"] = "-";
dr["OperazioniProposte"] = (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvAreaPro).LastOrDefault() != null ?
(from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvAreaPro).LastOrDefault() - datiSeiUnico.ATTUTALE_CCN : 0;//datiSeiUnico.PROPOSTO_CCN - datiSeiUnico.ATTUTALE_CCN;
dr["ControvaloreProposto"] = (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvAreaPro).LastOrDefault();//datiSeiUnico.PROPOSTO_GPELIGO;
dr["FontBold"] = false;
dr["BackgroundGray"] = false;
ds.Tables["areafooter"].Rows.Add(dr);
}
if (datiSeiUnico.ATTUTALE_TUOFOGLIO != 0 || PIANIFICATO_FOGLIO != 0 || datiSeiUnico.PROPOSTO_TUOFOGLIO != 0)
{
dr = ds.Tables["areafooter"].NewRow();
dr["Area"] = string.Format("Liquidità Il Mio Foglio");
dr["VaR"] = "n.c.";
dr["ControvaloreAttuale"] = datiSeiUnico.ATTUTALE_TUOFOGLIO;
dr["ControvalorePianificatoModello"] = "-";
dr["OperazioniProposte"] = (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvAreaPro).LastOrDefault() != null ?
(from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvAreaPro).LastOrDefault() - datiSeiUnico.ATTUTALE_CCN : 0;//datiSeiUnico.PROPOSTO_CCN - datiSeiUnico.ATTUTALE_CCN;
dr["ControvaloreProposto"] = (from o in pianificazioneVerticalePianificato.stAreePianificazione where o.area == "Self" select o.ctvAreaPro).LastOrDefault();//datiSeiUnico.PROPOSTO_GPELIGO;
dr["FontBold"] = false;
dr["BackgroundGray"] = false;
ds.Tables["areafooter"].Rows.Add(dr);
}
//--AC
}
DataRow drTot = ds.Tables["areafooter"].NewRow();
drTot["Area"] = string.Format("Patrimonio {0}", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment));
drTot["VaR"] = stDettaglioProposta.rischioMercatoDec + (getNota1().Length > 0 ? "*" : "");
drTot["ControvaloreAttuale"] = datiSeiUnico.ATTUTALE_TOTALE;
drTot["ControvalorePianificatoModello"] = PIANIFICATO_SUBTOTALE;
drTot["OperazioniProposte"] = datiSeiUnico.PROPOSTO_TOTALE - datiSeiUnico.ATTUTALE_TOTALE;
drTot["ControvaloreProposto"] = datiSeiUnico.PROPOSTO_TOTALE;
drTot["FontBold"] = true;
drTot["BackgroundGray"] = true;
ds.Tables["areafooter"].Rows.Add(drTot);
#endregion
#region Progetti Investimento
if (mostraInvestimento())
{
var areaInvProposta = (from v in pianificazioneVerticalePianificato.stAreePianificazione.ToList() where v.area == "Inv" select v).LastOrDefault();
var areaInvAttuale = (from v in pianificazioneVerticaleAttuale.aree.ToList() where v.area == "Inv" select v).LastOrDefault();
if (areaInvProposta.ctvAreaPro != 0 || areaInvAttuale.ctvArea != 0)
{
foreach (var item in from p in areaInvProposta.progetti join a in areaInvAttuale.progetti on p.chiaveProgetto equals a.chiaveProgetto select new { attuale = a, proposta = p })
{
// Non devo inserire Progetti se "controvalore attuale" o "controvalore modello"
// o "controvalore pianificato" o "controvalore proposto" = zero
if ((item.proposta.ctvProgetto + item.proposta.ctvPianificato + item.proposta.ctvProgettoPro +
(item.attuale.progettoModello.percentualeProgetto / 100) * pianificazioneVerticaleAttuale.risorseFinanziarieBF) != 0)
{
ds.Tables["investimento"].Rows.Add(
item.proposta.nomeProgetto,
item.attuale.durataResidua == null ? "-" : item.attuale.durataResidua.ToString(),
item.proposta.varProgettoProDec,
item.proposta.ctvProgetto,
ctvPianificato() ? item.proposta.ctvPianificato :
(item.attuale.progettoModello.percentualeProgetto / 100) * pianificazioneVerticaleAttuale.risorseFinanziarieBF,
item.proposta.ctvProgettoPro - item.proposta.ctvProgetto,
item.proposta.ctvProgettoPro
);
}
}
}
// tmp
//ds.Tables["investimento"].Rows.Add("test", "test", "test", 0m, 0m, 0m, 0m);
//ds.Tables["investimento"].Rows.Add("test", "test", "test", 0m, 0m, 0m, 0m);
//ds.Tables["investimento"].Rows.Add("test", "test", "test", 0m, 0m, 0m, 0m);
if (ds.Tables["investimento"].Rows.Count > 0)
{
ds.Tables["investimentofooter"].Rows.Add(
"Totale Investimento",
"",
areaInvProposta.varAreaPro,
Helper.FormatCurrency(areaInvAttuale.ctvArea.ToString()),
ctvPianificato() ? Helper.FormatCurrency(areaInvAttuale.ctvPianificatoArea.ToString()) :
Helper.FormatCurrency((areaInvAttuale.percArea / 100 * pianificazioneVerticaleAttuale.risorseFinanziarieBF).ToString()),
Helper.FormatCurrency((areaInvProposta.ctvAreaPro - areaInvAttuale.ctvArea).ToString()),
Helper.FormatCurrency(areaInvProposta.ctvAreaPro.ToString()),
false
);
}
}
#endregion
#region Progetti Previdenza
if (mostraPrevidenza())
{
var areaPreProposta = (from v in pianificazioneVerticalePianificato.stAreePianificazione.ToList() where v.area == "Pre" select v).FirstOrDefault();
var areaPreAttuale = (from v in pianificazioneVerticaleAttuale.aree.ToList() where v.area == "Pre" select v).FirstOrDefault();
if (areaPreProposta.ctvAreaPro != 0 || areaPreAttuale.ctvArea != 0)
{
foreach (var item in from p in areaPreProposta.progetti join a in areaPreAttuale.progetti on p.chiaveProgetto equals a.chiaveProgetto select new { attuale = a, proposta = p })
{
if ((item.proposta.ctvProgetto + item.proposta.ctvPianificato + item.proposta.ctvProgettoPro +
(item.attuale.progettoModello.percentualeProgetto / 100) * pianificazioneVerticaleAttuale.risorseFinanziarieBF) != 0)
{
ds.Tables["previdenza"].Rows.Add(
item.proposta.nomeProgetto,
item.proposta.varProgettoProDec,
item.proposta.ctvProgetto,
ctvPianificato() ? item.proposta.ctvPianificato :
(item.attuale.progettoModello.percentualeProgetto / 100) * pianificazioneVerticaleAttuale.risorseFinanziarieBF,
item.proposta.ctvProgettoPro - item.proposta.ctvProgetto,
item.proposta.ctvProgettoPro
);
}
}
if (ds.Tables["previdenza"].Rows.Count > 0)
{
ds.Tables["previdenzafooter"].Rows.Add(
"Totale Previdenza",
areaPreProposta.varAreaPro,
Helper.FormatCurrency(areaPreAttuale.ctvArea.ToString()),
ctvPianificato() ? Helper.FormatCurrency(areaPreAttuale.ctvPianificatoArea.ToString()) :
Helper.FormatCurrency((areaPreAttuale.percArea / 100 * pianificazioneVerticaleAttuale.risorseFinanziarieBF).ToString()),
Helper.FormatCurrency((areaPreProposta.ctvAreaPro - areaPreAttuale.ctvArea).ToString()),
Helper.FormatCurrency(areaPreProposta.ctvAreaPro.ToString()),
false
);
}
}
}
#endregion
return ds;
}
public virtual bool mostraInvestimento()
{
return GetOption<Opzione4_1>().Valore;
}
public virtual bool mostraPrevidenza()
{
return GetOption<Opzione4_2>().Valore;
}
public virtual bool ctvPianificato()
{
return GetOption<Opzione3>().Valore;
}
public virtual string getTesto1()
{
string nota = string.Empty;
bool Adeguata = datiSeiUnico.flagAdeguatezzaPro();
if (!Adeguata)
{
nota += "Nella tabella sottostante sono riportate, per ogni area di bisogno, l'allocazione corrente, pianificata e prospettica delle risorse finanziarie, che lei detiene presso $/Banca/$, destinate ai singoli progetti di investimento. Inoltre viene mostrato il controvalore delle operazioni da lei richieste al suo private banker.";
}
else if (ctvPianificato()) nota += "Nella tabella sottostante sono riportate, per ogni area di bisogno, l'allocazione corrente, pianificata e proposta delle risorse finanziarie che lei detiene presso $/Banca/$. Inoltre viene mostrato il controvalore delle operazioni proposte su ogni area di bisogno.";
else nota += "Nella tabella sottostante sono riportate, per ogni area di bisogno, l'allocazione corrente, ottimale e proposta delle risorse finanziarie che lei detiene presso $/Banca/$. Inoltre viene mostrato il controvalore delle operazioni proposte su ogni area di bisogno.";
return nota.Replace("$/Banca/$", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment));
}
public virtual string getNota1()
{
decimal gradoCopertura = datiSeiUnico.propostaUnit().stDettaglioProposta.copertura;
string nota = "";
if (gradoCopertura < 100 && Convert.ToDouble(gradoCopertura) != 0)
{
nota += "(*) Grado di copertura prodotti in termini di Rischio Mercato (VaR): {0}.";
}
return string.Format(nota, Helper.FormatDecimal(gradoCopertura.ToString(), 2));
}
public virtual string getTesto2()
{
bool _isControvalore = !GetOption<Opzione3>().Valore;
bool Adeguata = datiSeiUnico.flagAdeguatezzaPro();
string nota = "";
if (!Adeguata)
{
nota += "Nella tabella sottostante sono riportate l'allocazione corrente, pianificata e prospettica delle risorse finanziarie, che lei detiene presso $/Banca/$, destinate ai singoli progetti di investimento. Inoltre viene mostrato il controvalore delle operazioni da lei richieste al suo private banker.";
}
else if (ctvPianificato()) nota += "Nella tabella sottostante sono riportate l'allocazione corrente, pianificata e proposta delle risorse finanziarie, che lei detiene presso $/Banca/$, destinate ai singoli progetti di investimento. Inoltre viene mostrato il controvalore delle operazioni proposte su ogni progetto di investimento.";
else nota += "Nella tabella sottostante sono riportate l'allocazione corrente, ottimale e proposta delle risorse finanziarie, che lei detiene presso $/Banca/$, destinate ai singoli progetti di investimento. Inoltre viene mostrato il controvalore delle operazioni proposte su ogni progetto di investimento.";
return datiSeiUnico.FormatBanca(nota);// nota.Replace("$/Banca/$", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment));
}
public virtual string getNota2()
{
decimal gradoCopertura = datiSeiUnico.propostaUnit().stPianificazioneVerticale.stAreePianificazione.Where(o => o.area == "Inv").FirstOrDefault().coperturaAreaPro;
string nota = "";
if (gradoCopertura < 100 && Convert.ToDouble(gradoCopertura) != 0)
nota += "Grado di copertura prodotti in termini di Rischio Mercato (VaR): {0}.";
return string.Format(nota, Helper.FormatDecimal(gradoCopertura.ToString(), 2));
}
public virtual string getTesto3()
{
// bool _isControvalore = !GetOption<Opzione3>().Valore;
string nota = "";
bool Adeguata = datiSeiUnico.flagAdeguatezzaPro();
if (!Adeguata)
{
nota += "Nella tabella sottostante sono riportate l'allocazione corrente, pianificata e prospettica delle risorse finanziarie, che lei detiene presso $/Banca/$, destinate alle aree \"Previdenza Essenziale\" e \"Previdenza Secondaria\". Inoltre viene mostrato il controvalore delle operazioni da lei richieste al suo private banker.";
}
else if (ctvPianificato()) nota += "Nella tabella sottostante sono riportate l'allocazione corrente, pianificata e proposta delle risorse finanziarie, che lei detiene presso $/Banca/$, destinate alle aree \"Previdenza Essenziale\" e \"Previdenza Secondaria\". Inoltre viene mostrato il controvalore delle operazioni proposte su ognuna delle due aree.";
else nota += "Nella tabella sottostante sono riportate l'allocazione corrente, ottimale e proposta delle risorse finanziarie, che lei detiene presso $/Banca/$, destinate alle aree \"Previdenza Essenziale\" e \"Previdenza Secondaria\". Inoltre viene mostrato il controvalore delle operazioni proposte su ognuna delle due aree.";
return nota.Replace("$/Banca/$", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment));
}
public virtual string getNota3()
{
decimal gradoCopertura = datiSeiUnico.propostaUnit().stPianificazioneVerticale.stAreePianificazione.Where(o => o.area == "Pre").FirstOrDefault().coperturaAreaPro;
string nota = "";
if (gradoCopertura < 100 && Convert.ToDouble(gradoCopertura) != 0)
{
nota += "Grado di copertura prodotti in termini di Rischio Mercato (VaR): {0}.";
}
return string.Format(nota, Helper.FormatDecimal(gradoCopertura.ToString(), 2));
}
}
}