850 lines
46 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

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

using System;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using System.Data;
using Consulenza.ReportCommon;
using Consulenza.ReportWriter.Business.CHART_PDF;
using System.Collections.Generic;
using Consulenza.ReportWriter.Business.Entity;
using System.Linq;
using Consulenza.DataServices.fideuram.data.service;
namespace Consulenza.ReportWriter.Manager.Section.Unica
{
/// <summary>
/// Scheda 13. Patrimonio Fideuram: protezione del capitale. IdSezione 56
/// </summary>
public class S13 : Entity.Section
{
public S13(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S13", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
}
}
protected override sealed void Draw()
{
var dati = GetDataSet();
bool saltoPagina = false;
#region Piramide dei bisogni con l'Area Tutela
if (piramideBisogni())
{
#region Tabella delle Aree di Bisogno
var areaOrdinata = dati.Tables["area"].AsEnumerable().OrderBy(x => x.Field<decimal>("Ordinamento")).CopyToDataTable();
var tabellaAree = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, areaOrdinata, dati.Tables["areaFooter"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = false,
RowsPadding = 0f,
RowHeight = 45f,
Footer = true,
HeaderHeight = 27,
HeaderMargin = 2,
FooterYOffset = 5F,
SpecifiedRowHeights = new List<float> { 76, 50, 50, 49, 52, 44 }
};
for (int j = 0; j < tabellaAree.SpecifiedRowHeights.Count; j++)
{
tabellaAree.SpecifiedRowHeights[j] *= 0.5f;
}
//tabellaAree.Columns.Add(new ColumnPDF("Area2", 120, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, "Area", "Area di bisogno") { DeltaYContent = 2, ScaleColumnTypeImage = 1f, HeaderFontSize = 7, FontSize = 7 });
//tabellaAree.Columns.Add(new ColumnPDF("Controvalore", 90, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Controvalore", "Controvalore (€)") { DeltaYContent = 5, HeaderFontSize = 7, FontSize = 7 });
//tabellaAree.Columns.Add(new ColumnPDF("ControvaloreProtetto", 90, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "ControvaloreProtetto", "Controvalore<BR>protetto (€)") { DeltaYContent = 5, HeaderFontSize = 7, FontSize = 7, HeaderPaddingLeft = 4 });
//tabellaAree.Columns.Add(new ColumnPDF("ContributoPercentualeProtezioneObject", 220, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, "ContributoPercentualeProtezione", "Contributo alla protezione (%)") { DeltaYContent = 7, PaddingLeft = 10, HeaderPaddingLeft = 10, HeaderFontSize = 7, FontSize = 7 });
tabellaAree.Columns.Add(new ColumnPDF("Area2", 120, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Objectpdf, "Area", "Area di bisogno") { DeltaYContent = 2, ScaleColumnTypeImage = 1f, HeaderFontSize = 7, FontSize = 7 });
tabellaAree.Columns.Add(new ColumnPDF("Controvalore", 90, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "Controvalore", "Controvalore (€)") { DeltaYContent = 5, HeaderFontSize = 7, FontSize = 7 });
tabellaAree.Columns.Add(new ColumnPDF("ControvaloreProtetto", 90, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "ControvaloreProtetto", "Controvalore<BR>protetto (€)") { DeltaYContent = 5, HeaderFontSize = 7, FontSize = 7, HeaderPaddingLeft = 4 });
tabellaAree.Columns.Add(new ColumnPDF("ContributoPercentualeProtezioneObject", 220, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, "ContributoPercentualeProtezione", "Contributo alla protezione (%)") { DeltaYContent = 7, PaddingLeft = 10, HeaderPaddingLeft = 10, HeaderFontSize = 7, FontSize = 7 });
tabellaAree.FooterColumns.Add(new ColumnPDF("Area", 120, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo) { ScaleColumnTypeImage = 0.5F, FontSize = 7 });
tabellaAree.FooterColumns.Add(new ColumnPDF("Controvalore", 90, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { FontSize = 7 });
tabellaAree.FooterColumns.Add(new ColumnPDF("ControvaloreProtetto", 90, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { FontSize = 7 });
tabellaAree.FooterColumns.Add(new ColumnPDF("Spazio", 220, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo) { FontSize = 7 });
#region Nomi Area dell'immagine
for (int a = 0; a < areaOrdinata.Rows.Count; a++)
{
#region Immagine Piramide Modello
//tabellaAree.Cells[0, a].ValueObjectList.Add(new ImagePDF(0, 1, areaOrdinata.Rows[a].ItemArray[0].ToString())
//{
// DeltaX = 3,
// DeltaY = 0,
// Height = tabellaAree.SpecifiedRowHeights[a], //27 was here
// Width = 145
//});
var textArea = new FormattedTextAreaPDF(areaOrdinata.Rows[a].ItemArray[1].ToString(), 0)
{
DeltaY = 6f,
FontSize = 8f
};
var labelSize = Helper.GetNumericStringWidth(textArea.Text);
float addition = 0;
float additionY = 0;
switch (textArea.Text)
{
case "Investimento":
addition = 2.5f;
additionY = 1;
break;
case "Previdenza":
addition = 2.5f;
additionY = 1;
break;
case "Riserva":
addition = 1.5f;
additionY = 1;
break;
case "Liquidità":
addition = 0.5f;
additionY = 1;
break;
case "Extra Rendimento":
addition = 5.5f;
additionY = 7;
break;
case "Tutela":
addition = 6.5f;
break;
}
textArea.DeltaX = 106 + addition - labelSize;
textArea.DeltaY += additionY;
textArea.Text = Helper.FirstCharToUpper(textArea.Text);
tabellaAree.Cells[0, a].ValueObjectList.Add(textArea);
#endregion
}
var yRowContentOffsets = new List<float> { 4, 0, 0, 0, 0, 0 };
int b = 0;
for (b = 0; b < tabellaAree.RowsCount; b++)
{
for (int j = 0; j < tabellaAree.Columns.Count; j++)
{
tabellaAree.Cells[j, b].YContentOffset += yRowContentOffsets[b];
}
}
#endregion
#region Grafico
int i = 0;
var list = new List<double>();
list.Add(Convert.ToDouble(areaOrdinata.AsEnumerable().Max(x => x["ContributoProtezione"])));
var valoreMassimo = (float)Helper.Round(list.Max());
float larghezzaBarra = 0;
float larghezzaSpazioTestoPercentuale = 0;
float larghezzaMinimaSpazioTestoPercentuale = 35;
float deltaXBarra = 0;
foreach (DataRow row in areaOrdinata.Rows)
{
// Re-inserito da ES in data 17.10.2017
if (row.Field<string>("Description").ToLower().Equals("tutela"))
{
tabellaAree.Cells[1, i].HorizontalAlignment = tabellaAree.Cells[2, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaAree.Cells[0, i].ColSpan = 4;
continue;
}
// End
tabellaAree.Cells[1, i].HorizontalAlignment = tabellaAree.Cells[2, i].HorizontalAlignment = HorizontalAlignmentType.Destra;
tabellaAree.Cells[1, i].Value = Helper.FormatCurrency(row["Controvalore"].ToString());
tabellaAree.Cells[2, i].Value = Helper.FormatCurrency(row["ControvaloreProtetto"].ToString());
var colore = ColorPDF.GetBy_AreaBisogno("Tut");
#region barra colonna ContributoProtezione
larghezzaBarra = Helper.GetWidthProportional((float)Convert.ToDecimal(row["ContributoProtezione"]), valoreMassimo, tabellaAree.Columns[3].Width - 12);
larghezzaSpazioTestoPercentuale = tabellaAree.Columns[3].Width - larghezzaBarra;
deltaXBarra = larghezzaBarra + 10;
if (larghezzaSpazioTestoPercentuale < larghezzaMinimaSpazioTestoPercentuale)
{
deltaXBarra = (tabellaAree.Columns[3].Width - larghezzaMinimaSpazioTestoPercentuale - 2);
larghezzaSpazioTestoPercentuale = larghezzaMinimaSpazioTestoPercentuale;
}
tabellaAree.Cells[3, i].ValueObjectList = new List<Business.Entity.ObjectPDF>()
{
new RectanglePDF(12, larghezzaBarra, colore)
{
DeltaY = 5f + yRowContentOffsets[i] + (i == 0 ? 6 : 0)
},
new FormattedTextAreaPDF(Helper.FormatDecimal(row["ContributoProtezione"].ToString(),2), 0, larghezzaSpazioTestoPercentuale)
{
DeltaY = 3.25f + yRowContentOffsets[i] + (i == 0 ? 1 : 0),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left,
DeltaX = deltaXBarra,
FontSize = 7
}
};
#endregion
i++;
}
#endregion
#endregion
if (getNota1(dati).Length > 0)
{
AddElement(new SpacePDF(15));
tabellaAree.Notes.Add(new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, getNota1(dati), new[] { "VaR" }, string.Empty, TableNotePDF.TableNoteAsteriskPositionType.PieDiTabella) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, DeltaY = 5 });
}
else
{
AddElement(new SpacePDF(15));
}
AddElement(new FormattedTextAreaPDF(getTesto1(), EnvironmentFacade.RendererFacade.XLeftLimit, 520) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
AddElement(new SpacePDF(10));
//AddElement(new LinePDF(113.3f, 228, 49.25f, 375, 3, new ColorPDF(0, 100, 45)));
//AddElement(new LinePDF(113.3f, 229.2f, 181.3f, 375, 3, new ColorPDF(0, 100, 45)));
AddElement(new ImagePDF(37, 0.11093333f, "entire_img_tutela2.png") { DeltaY = 31, AutoIncrementYWritable = false });
// 0.1110f good value
// 0.1143f good value
AddElement(tabellaAree);
AddElement(new PagePDF(PagePDF.PagePDFType.Generic));
}
#endregion
#region LINEE_PROTETTE
foreach (DataRow itemLinea in dati.Tables["LineeProtette"].Rows)
{
if (saltoPagina)
AddElement(new PagePDF(PagePDF.PagePDFType.Generic));
saltoPagina = true;
AddElement(new SpacePDF(20));
AddElement(new FormattedTextAreaPDF(LineeProtetteTitolo(itemLinea), EnvironmentFacade.RendererFacade.XLeftLimit) { FontBold = true, FontSize = 10, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left });
AddElement(new SpacePDF(10));
AddElement(new FormattedTextAreaPDF(LineeProtetteTesto1(itemLinea), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
AddElement(new SpacePDF(10));
var coloreComponentePerformance = new ColorPDF(251, 161, 56);
var coloreProtezione = new ColorPDF(94, 213, 94);
#region Tabella
var dtTabella = new DataTable();
dtTabella.Columns.Add(new DataColumn("Oggetto", typeof(string)));
dtTabella.Columns.Add(new DataColumn("Descrizione", typeof(string)));
dtTabella.Columns.Add(new DataColumn("Valore", typeof(string)));
//#4863 dtTabella.Rows.Add("", "Versato netto (€)", Helper.FormatCurrency(itemLinea["VersatoNetto"].ToString()));
dtTabella.Rows.Add("", "Controvalore di riferimento* (€)", Helper.FormatCurrency(itemLinea["Controvalore"].ToString()));
dtTabella.Rows.Add("", "Componente di performance (€)", Helper.FormatCurrency(itemLinea["ComponentePerformance"].ToString()));
dtTabella.Rows.Add("", "Componente di protezione** (€)", Helper.FormatCurrency(itemLinea["ComponenteProtezione"].ToString()));
dtTabella.Rows.Add("", "Controvalore protetto (€)", Helper.FormatCurrency(itemLinea["ControvaloreProtetto"].ToString()));
dtTabella.Rows.Add("", "Data di riferimento", itemLinea["DataRiferimento"].ToString());
var tabella = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dtTabella)
{
Style = Style.ConsulenzaUnica,
Header = false,
Footer = false,
AlternateRow = false,
RowHeight = 25,
ShowSeparationLines = false,
RowsPadding = 5,
AutoIncrementYWritable = false
};
//Colonne
tabella.Columns.Add(new ColumnPDF("oggetto", 25, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Objectpdf, "oggetto", string.Empty) { DeltaYContent = 5, HeaderFontSize = 7 });
tabella.Columns.Add(new ColumnPDF("descrizione", 145, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo, "descrizione", string.Empty) { HeaderFontSize = 7 });
tabella.Columns.Add(new ColumnPDF("valore", 85, HorizontalAlignmentType.Destra, false, true, 7, ColumnType.Testo, "valore", string.Empty) { PaddingLeft = 5, HeaderFontSize = 7 });
//Righe
tabella.Row[1].FontBold = false;
tabella.Row[2].FontBold = false;
tabella.Row[1].ForceStyleFontBold = true;
tabella.Row[2].ForceStyleFontBold = true;
//Celle
tabella.Cells[0, 1].BackgroundColor = ColorPDF.Bianco;
tabella.Cells[0, 2].BackgroundColor = ColorPDF.Bianco;
tabella.Cells[1, 1].BackgroundColor = ColorPDF.Bianco;
tabella.Cells[1, 2].BackgroundColor = ColorPDF.Bianco;
tabella.Cells[0, 1].ValueObject = new CirclePDF(13, 13, coloreComponentePerformance);
tabella.Cells[0, 2].ValueObject = new CirclePDF(13, 13, coloreProtezione);
AddElement(tabella);
#endregion
#region Grafico torta
#region Valorizzazione Serie
var serieTorta = new List<Serie>();
serieTorta.Add(new Serie { Name = "Distribuzione" });
serieTorta[0].Points.Add(new Point
{
LabelAxisX = "ComponentePerformance",
Color = coloreComponentePerformance,
Value = Convert.ToDouble(itemLinea["PercentualePerformance"]),
ShowLabelAxisX = false,
ShowLabelAxisY = false
});
serieTorta[0].Points.Add(new Point
{
LabelAxisX = "ComponenteProtezione",
Color = coloreProtezione,
Value = Convert.ToDouble(itemLinea["PercentualeProtezione"]),
ShowLabelAxisX = false,
ShowLabelAxisY = false
});
#endregion
var torta = new PiePDF(base.EnvironmentFacade.RendererFacade.XLeftLimit + tabella.Width + 30, 1F)
{
Width = 240,
Height = 200,
SeriesCollection = serieTorta,
Style3DEnabled = true,
Style3DXAngle = 45
};
AddElement(torta);
#endregion
if (LineeProtetteNota1().Length > 0 || LineeProtetteNota2().Length > 0)
{
AddElement(new SpacePDF(torta.Width/2+35 /*+65 invece di +35 quando rimettono Versato Netto*/));
AddElement(new FormattedTextAreaPDF(LineeProtetteNota1(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
AddElement(new SpacePDF(5));
AddElement(new FormattedTextAreaPDF(LineeProtetteNota2(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
}
}
#endregion
#region Protetto
string[] nomiFondoProtetto = { "Interfund Crescita Protetta 80", "Fonditalia Crescita Protetta 80" };
foreach (string nomeFondoProtetto in nomiFondoProtetto)
{
TablePDF tabellaProtetto = null;
foreach (DataTable dtProtetto in dati.Tables)
{
if (dtProtetto.TableName.Equals("LineeProtette") ||
dtProtetto.TableName.Equals("area") ||
dtProtetto.TableName.Equals("areaFooter") ||
dtProtetto.Columns.Count == 0 ||
!dtProtetto.Rows[0]["nomeFondoProtetto"].Equals(nomeFondoProtetto))
continue;
if (tabellaProtetto == null)
{
if (saltoPagina)
AddElement(new PagePDF(PagePDF.PagePDFType.Generic));
saltoPagina = true;
AddElement(new SpacePDF(20));
AddElement(new FormattedTextAreaPDF(ProtettoTitolo(dtProtetto.Rows[0]), EnvironmentFacade.RendererFacade.XLeftLimit) { FontBold = true, FontSize = 10, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
AddElement(new SpacePDF(10));
AddElement(new FormattedTextAreaPDF(ProtettoTesto(dtProtetto.Rows[0]), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
AddElement(new SpacePDF(20));
}
tabellaProtetto = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dtProtetto)
{
Style = Style.ConsulenzaUnica,
Header = true,
Footer = false,
AlternateRow = false,
RowHeight = 25,
HideLastSeparationLine = false
};
tabellaProtetto.Columns.Add(new ColumnPDF("NomeProdotto", 240, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "NomeProdotto", dtProtetto.Rows[0]["nomeContratto"] + "<br>Contratto " + dtProtetto.TableName) { HeaderFontSize = 7 });
tabellaProtetto.Columns.Add(new ColumnPDF("QuotaProdotto", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "QuotaProdotto", "Quota (€)") { HeaderFontSize = 7, PaddingRight = 4 });
tabellaProtetto.Columns.Add(new ColumnPDF("NumeroQuoteProdotto", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "NumeroQuoteProdotto", "Numero<br>quote") { HeaderFontSize = 7, PaddingRight = 4 });
tabellaProtetto.Columns.Add(new ColumnPDF("Controvaloreattuale", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Controvaloreattuale", "Controvalore<br>attuale (€)") { HeaderFontSize = 7, PaddingRight = 4 });
tabellaProtetto.Columns.Add(new ColumnPDF("Datariferimento", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Datariferimento", "Data di<br>riferimento") { HeaderFontSize = 7, PaddingRight = 4 });
for (int r = 0; r < dtProtetto.Rows.Count; r++)
{
tabellaProtetto.Cells[1, r].HorizontalAlignment =
tabellaProtetto.Cells[2, r].HorizontalAlignment =
tabellaProtetto.Cells[3, r].HorizontalAlignment =
tabellaProtetto.Cells[4, r].HorizontalAlignment = HorizontalAlignmentType.Destra;
}
AddElement(tabellaProtetto);
AddElement(new SpacePDF(20));
}
if (tabellaProtetto != null)
{
tabellaProtetto.Notes.Add(
new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella,
ProtettoNota(),
new[] { "" },
"",
TableNotePDF.TableNoteAsteriskPositionType.PieDiTabella) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, DeltaY = 10 }
);
}
}
#endregion
}
protected sealed override DataTable GetDataTable()
{
return null;
}
protected sealed override DataSet GetDataSet()
{
#region Estrazione dati + servizi
var dettaglioContratti = datiSeiUnico.patrimonioUnit().patrimonioCasa.dettaglioContratti.elencoContratti != null ?
datiSeiUnico.patrimonioUnit().patrimonioCasa.dettaglioContratti.elencoContratti : new rsDettaglioContratto[0];
var pianificazione = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale;
//var piramideModello = datiSeiUnico.piramideModelloUnit().piramideModello.areaModello.ToList().OrderBy(o => o.ordinamento).ToList().FindAll(o => o.visible == true);
var protezioneCapitale = datiSeiUnico.patrimonioUnit().patrimonioCasa.protezioneCapitale;
var displayInfoAree = datiSeiUnico.displayInfos().areeDisplayInfos.ToList();
#endregion
#region Definizione Dataset + Colonne
var ds = new DataSet();
ds.Tables.Add("area");
ds.Tables.Add("areaFooter");
ds.Tables.Add("LineeProtette");
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("Controvalore", typeof(decimal)));
ds.Tables["area"].Columns.Add(new DataColumn("ControvaloreProtetto", typeof(decimal)));
ds.Tables["area"].Columns.Add(new DataColumn("ContributoProtezione", typeof(decimal)));
ds.Tables["area"].Columns.Add(new DataColumn("Ordinamento", typeof(decimal)));
ds.Tables["areaFooter"].Columns.Add(new DataColumn("Area", typeof(string)));
ds.Tables["areaFooter"].Columns.Add(new DataColumn("Controvalore", typeof(decimal)));
ds.Tables["areaFooter"].Columns.Add(new DataColumn("ControvaloreProtetto", typeof(decimal)));
ds.Tables["areaFooter"].Columns.Add(new DataColumn("Spazio", typeof(string)));
ds.Tables["LineeProtette"].Columns.Add(new DataColumn("Linea", typeof(string)));
ds.Tables["LineeProtette"].Columns.Add(new DataColumn("Contratto", typeof(string)));
ds.Tables["LineeProtette"].Columns.Add(new DataColumn("VersatoNetto", typeof(decimal)));
ds.Tables["LineeProtette"].Columns.Add(new DataColumn("Controvalore", typeof(decimal)));
ds.Tables["LineeProtette"].Columns.Add(new DataColumn("ComponentePerformance", typeof(decimal)));
ds.Tables["LineeProtette"].Columns.Add(new DataColumn("ComponenteProtezione", typeof(decimal)));
ds.Tables["LineeProtette"].Columns.Add(new DataColumn("ControvaloreProtetto", typeof(decimal)));
ds.Tables["LineeProtette"].Columns.Add(new DataColumn("DataRiferimento", typeof(string)));
ds.Tables["LineeProtette"].Columns.Add(new DataColumn("PercentualePerformance", typeof(decimal)));
ds.Tables["LineeProtette"].Columns.Add(new DataColumn("PercentualeProtezione", typeof(decimal)));
ds.Tables["LineeProtette"].Columns.Add(new DataColumn("CodiceInterno", typeof(string)));
#endregion
#region Piramide
foreach (var item in protezioneCapitale.aree)
{
var displayInfoArea = displayInfoAree.FirstOrDefault(o => o.key.Equals(item.area.ToUpper())).value;
ds.Tables["area"].Rows.Add(
string.Format("{0}_tutela.png", new AreaBisogno(item.area).NomePerImmagine.ToLower()), //Area
item.descrizione,
item.ctv,
item.ctvProtetto,
item.pesoProtetto * 100,
displayInfoArea.order
);
}
ds.Tables["area"].Rows.Add(
string.Format("{0}_tutela.png", new AreaBisogno("Tut").NomePerImmagine.ToLower()), //Area
"Tutela",
0,
0,
0,
9999
);
#endregion
#region Piramide Footer
ds.Tables["areaFooter"].Rows.Add(
datiSeiUnico.FormatBanca("Patrimonio $/Banca/$"), //Descrizione
protezioneCapitale.ctv,
protezioneCapitale.ctvProtetto,
""
);
#endregion
#region LINEE PROTETTE
foreach (var item in from o in dettaglioContratti where o.tipoContratto.Equals("LINEE_PROTETTE") select o)
{
DataRow dr = ds.Tables["LineeProtette"].NewRow();
dr["Linea"] = item.nomeLinea;
dr["Contratto"] = item.codiceContratto;
dr["VersatoNetto"] = item.totaleCvn;
dr["Controvalore"] = item.ctvRiferimento;
dr["ComponentePerformance"] = item.ctvPerformance;
dr["ComponenteProtezione"] = item.ctvMonetari;
dr["ControvaloreProtetto"] = item.ctvProtetto;
dr["DataRiferimento"] = Convert.ToDateTime(item.dtRiferimento).ToShortDateString();
dr["PercentualePerformance"] = item.pesoPerformance * 100;
dr["PercentualeProtezione"] = item.pesoMonetari * 100;
dr["CodiceInterno"] = item.codiceInterno;
ds.Tables["LineeProtette"].Rows.Add(dr);
}
#endregion
#region PROTETTO
foreach (var item in from o in dettaglioContratti where o.tipoContratto.Equals("PROTETTO") select o)
{
ds.Tables.Add(item.codiceContratto);
ds.Tables[item.codiceContratto].Columns.Add(new DataColumn("nomeFondoProtetto", typeof(string)));
ds.Tables[item.codiceContratto].Columns.Add(new DataColumn("nomeContratto", typeof(string)));
ds.Tables[item.codiceContratto].Columns.Add(new DataColumn("codiceContratto", typeof(string)));
ds.Tables[item.codiceContratto].Columns.Add(new DataColumn("NomeProdotto", typeof(string)));
ds.Tables[item.codiceContratto].Columns.Add(new DataColumn("QuotaProdotto", typeof(string)));
ds.Tables[item.codiceContratto].Columns.Add(new DataColumn("NumeroQuoteProdotto", typeof(string)));
ds.Tables[item.codiceContratto].Columns.Add(new DataColumn("ControvaloreAttuale", typeof(string)));
ds.Tables[item.codiceContratto].Columns.Add(new DataColumn("DataRiferimento", typeof(string)));
DataRow dr = ds.Tables[item.codiceContratto].NewRow();
dr["nomeFondoProtetto"] = item.nomeFondoProtetto;
dr["nomeContratto"] = item.nomeContratto;
dr["codiceContratto"] = item.codiceContratto;
dr["NomeProdotto"] = item.nomeProdotto;
dr["QuotaProdotto"] = Helper.FormatDecimal(item.quotaProdotto.ToString(), 4);
dr["NumeroQuoteProdotto"] = item.numeroQuoteProdotto.ToString("C4").Replace("€ ", "");
dr["ControvaloreAttuale"] = Helper.FormatCurrency(item.ctvProdotto.ToString());
dr["DataRiferimento"] = Convert.ToDateTime(item.dtRiferimentoProdotto).ToShortDateString();
ds.Tables[item.codiceContratto].Rows.Add(dr);
dr = ds.Tables[item.codiceContratto].NewRow();
dr["nomeFondoProtetto"] = item.nomeFondoProtetto;
dr["nomeContratto"] = item.nomeContratto;
dr["codiceContratto"] = item.codiceContratto;
dr["NomeProdotto"] = "Quota massima";
dr["QuotaProdotto"] = Helper.FormatDecimal(item.quotaMax.ToString(), 4);
dr["NumeroQuoteProdotto"] = "-";
dr["ControvaloreAttuale"] = "-";
dr["DataRiferimento"] = Convert.ToDateTime(item.dtRiferimentoQuotaMax).ToShortDateString();
ds.Tables[item.codiceContratto].Rows.Add(dr);
dr = ds.Tables[item.codiceContratto].NewRow();
dr["nomeFondoProtetto"] = item.nomeFondoProtetto;
dr["nomeContratto"] = item.nomeContratto;
dr["codiceContratto"] = item.codiceContratto;
dr["NomeProdotto"] = "Quota e controvalore protetti*";
dr["QuotaProdotto"] = Helper.FormatDecimal(item.quotaProtetta.ToString(), 4);
dr["NumeroQuoteProdotto"] = item.numeroQuoteProtetta.ToString("C4").Replace("€ ", "");
dr["ControvaloreAttuale"] = Helper.FormatCurrency(item.ctvQuotaProtetta.ToString());
dr["DataRiferimento"] = "-";
ds.Tables[item.codiceContratto].Rows.Add(dr);
}
#endregion
return ds;
}
public virtual bool piramideBisogni() { return GetOption<Opzione4_1>().Valore; }
public virtual bool dettaglioProdotti() { return GetOption<Opzione4_2>().Valore; }
public virtual string LineeProtetteTitolo(DataRow itemLinea)
{
return itemLinea["Linea"].ToString() + " - contratto " + itemLinea["Contratto"].ToString();
}
public virtual string LineeProtetteTesto1(DataRow itemLinea)
{
//#4863 string nota = "Di seguito vengono riportati il versato netto, il controvalore di riferimento* e il controvalore protetto, disponibili al momento della produzione del report, della linea " + itemLinea["Linea"].ToString() + " sottostante alla unit linked Fideuram Vita Insieme (contratto " + itemLinea["Contratto"].ToString() + "). La linea prevede una protezione giornaliera del capitale pari all80% del controvalore massimo raggiunto dalla data di partenza. In caso di movimentazione in entrata o in uscita sulla linea, il controvalore protetto viene incrementato per l80% dellimporto movimentato in entrata, o ridotto per l80% dellimporto movimentato in uscita. Si fornisce inoltre levidenza della ripartizione del controvalore di riferimento*, al momento della produzione del report, tra i fondi da lei selezionati (\"Componente di performance\") e i fondi monetari** dedicati alla tecnica di protezione.";
string nota = "Di seguito vengono riportati il controvalore di riferimento* e il controvalore protetto, disponibili al momento della produzione del report, della linea " + itemLinea["Linea"].ToString() + " sottostante alla unit linked Fideuram Vita Insieme (contratto " + itemLinea["Contratto"].ToString() + "). La linea prevede una protezione giornaliera del capitale pari all80% del controvalore massimo raggiunto dalla data di partenza. In caso di movimentazione in entrata o in uscita sulla linea, il controvalore protetto viene incrementato per l80% dellimporto movimentato in entrata, o ridotto per l80% dellimporto movimentato in uscita. Si fornisce inoltre levidenza della ripartizione del controvalore di riferimento*, al momento della produzione del report, tra i fondi da lei selezionati (\"Componente di performance\") e i fondi monetari** dedicati alla tecnica di protezione.";
return nota;
}
public virtual string LineeProtetteTesto2()
{
string nota = "";
return nota;
}
public virtual string LineeProtetteNota1()
{
string nota = "";
nota += "(*) Il controvalore di riferimento è calcolato giornalmente da Fideuram Vita per la determinazione del controvalore protetto, e contabilizza, in base agli ultimi NAV disponibili, oltre alla valorizzazione per quote delle operazioni già perfezionate, anche eventuali versamenti e riscatti effettuati sulla linea e in via di perfezionamento. In tal senso, il controvalore di riferimento potrebbe divergere dal controvalore attuale della linea.";
return nota;
}
public virtual string LineeProtetteNota2()
{
string nota = "";
nota += "(**) Fondi monetari in Euro dedicati esclusivamente alla tecnica di protezione: la Compagnia, al fine di proteggere il capitale, può effettuare unattività di ribilanciamento tra la componente della linea investita nei fondi da lei selezionati e la componente investita nei fondi monetari. La ripartizione tra le due componenti può variare giornalmente in funzione della tipologia dei fondi da lei selezionati e dellandamento del mercato.";
return nota;
}
public virtual string getTesto1()
{
string testo = "In questa scheda è riportata l'allocazione corrente, sulle aree di bisogno, del patrimonio che lei detiene presso ";
testo += "$/Banca/$, con indicazione del controvalore dei prodotti* che prevedono, a \"Tutela\" del suo patrimonio, la protezione ";
testo += "in corso di contratto di una parte del capitale investito. Il grafico sulla destra rappresenta il contributo della singola ";
testo += "area alla determinazione del controvalore protetto* complessivo.";
return datiSeiUnico.FormatBanca(testo);
}
//public virtual string getNota1()
//{
// string testo = "Le linee protette \"$/Banca/$ Vita Insieme My Blue Protection 80\" e \"$/Banca/$ Vita Insieme My White Protection 80\" ";
// testo += "che lei detiene presso $/Banca/$, prevedono una protezione del capitale pari all80% del controvalore massimo raggiunto dalla ";
// testo += "data di partenza: il \"controvalore protetto\" è stato distribuito sulle aree di bisogno sulla base del peso percentuale ";
// testo += "del controvalore del singolo fondo, rispetto al controvalore complessivo della linea, disponibile al momento della produzione ";
// testo += "del report.";
// return datiSeiUnico.FormatBanca(testo);
//}
public virtual string getNota1(DataSet ds)
{
string text = "";
string text2 = "";
string text3 = "";
string text4 = "";
bool isMultiramoProtetta=false;
int num = 0;
int num2 = 0;
foreach (DataRow itemLinea in ds.Tables["LineeProtette"].Rows)
{
if (num > 0)
{
text = text + " e \"" + this.LineeProtetteTitolo(itemLinea) + "\"";
}
else
{
text = text + "\"" + this.LineeProtetteTitolo(itemLinea) + "\"";
}
num++;
isMultiramoProtetta = itemLinea["CodiceInterno"].ToString() =="RF" ? true:false;
}
string[] array = new string[]
{
"Interfund Crescita Protetta 80",
"Fonditalia Crescita Protetta 80"
};
string[] array2 = array;
for (int i = 0; i < array2.Length; i++)
{
string obj = array2[i];
foreach (DataTable dataTable in ds.Tables)
{
if (!dataTable.TableName.Equals("LineeProtette") && !dataTable.TableName.Equals("area") && !dataTable.TableName.Equals("areaFooter") && dataTable.Columns.Count != 0 && dataTable.Rows[0]["nomeFondoProtetto"].Equals(obj))
{
if (num2 > 0)
{
text2 = text2 + " e \"" + dataTable.Rows[0]["nomeFondoProtetto"].ToString() + "\" ";
}
else
{
text2 = text2 + "\"" + dataTable.Rows[0]["nomeFondoProtetto"].ToString() + "\" ";
}
num2++;
}
}
}
switch (num)
{
case 0:
break;
case 1:
text3 = "La linea protetta ";
text3 += text;
text4 = " Il \"controvalore protetto\" della linea protetta " + text;
text4 += " è stato distribuito sulle aree di bisogno sulla base del peso percentuale ";
text4 += "del controvalore del singolo fondo, rispetto al controvalore complessivo della linea, disponibile al momento della produzione ";
text4 += "del report.";
break;
default:
text3 = "Le linee protette ";
text3 += text;
text4 = " Il \"controvalore protetto\" delle linee protette " + text;
text4 += " è stato distribuito sulle aree di bisogno sulla base del peso percentuale ";
text4 += "del controvalore del singolo fondo, rispetto al controvalore complessivo della linea, disponibile al momento della produzione ";
text4 += "del report.";
break;
}
string text5 = " che lei detiene presso $/Banca/$, $/s/$ ";
switch (num2)
{
case 0:
//text3 = "Il fondo ";
text3 += text5;
break;
case 1:
if (num > 0)
{
text3 = "I fondi ";
text3 = text3 + ", " + text2 + text5;
}
else
{
text3 = "Il fondo ";
text3 = text3 + text2 + text5;
}
break;
default:
if (num > 0)
{
text3 = "I fondi ";
text3 = text3 + ", " + text2 + text5;
}
else
{
text3 = "Il fondo ";
text3 = text3 + text2 + text5;
}
break;
}
if (num + num2 > 1)
{
text3 = text3.Replace("$/s/$", " prevedono ");
}
else
{
text3 = text3.Replace("$/s/$", " prevede ");
}
text3 = this.datiSeiUnico.FormatBanca(text3);
if (isMultiramoProtetta)
text3 += " una protezione del capitale pari all'85% del controvalore investito sul contratto.";
else
text3 += " una protezione del capitale pari all80% del controvalore massimo raggiunto dalla data di partenza.";
if (num > 0)
{
text3 += text4;
}
return text3;
}
public virtual string getNota1old(DataSet ds)
{
string text = "\"";
string text2 = "";
string text3 = "";
string str = "";
int num = 0;
int num2 = 0;
bool flag = false;
foreach (DataRow itemLinea in ds.Tables["LineeProtette"].Rows)
{
if (num > 0)
{
text = text + " e " + this.LineeProtetteTitolo(itemLinea);
}
else
{
text = text + this.LineeProtetteTitolo(itemLinea) + "\"";
}
num++;
}
string[] array = new string[]
{
"Interfund Crescita Protetta 80",
"Fonditalia Crescita Protetta 80"
};
string[] array2 = array;
for (int i = 0; i < array2.Length; i++)
{
string obj = array2[i];
foreach (DataTable dataTable in ds.Tables)
{
if (!dataTable.TableName.Equals("LineeProtette") && !dataTable.TableName.Equals("area") && !dataTable.TableName.Equals("areaFooter") && dataTable.Columns.Count != 0 && dataTable.Rows[0]["nomeFondoProtetto"].Equals(obj))
{
if (num2 > 0)
{
text2 = text2 + " e " + dataTable.Rows[0]["nomeFondoProtetto"].ToString() + " ";
num2++;
}
else
{
text2 = text2 + dataTable.Rows[0]["nomeFondoProtetto"].ToString() + " ";
flag = true;
num2++;
}
}
}
}
switch (num)
{
case 0:
break;
case 1:
text3 = "La linea protetta ";
if (flag)
{
text2 = " e " + text2;
}
text3 += text;
text3 += " che lei detiene presso $/Banca/$, prevede";
str = "della linea protetta ";
break;
default:
text3 = "Le linee protette ";
if (flag)
{
text2 = " e " + text2;
}
text3 += text;
text3 += " che lei detiene presso $/Banca/$, prevedono";
str = "delle linee protette ";
break;
}
text3 += " una protezione del capitale pari all80% del controvalore massimo raggiunto dalla data di partenza.";
text3 += " Il \"controvalore protetto\" ";
text3 += str;
text3 += text;
if (flag)
{
text3 += text2;
}
text3 += " è stato distribuito sulle aree di bisogno sulla base del peso percentuale ";
text3 += "del controvalore del singolo fondo, rispetto al controvalore complessivo della linea, disponibile al momento della produzione ";
text3 += "del report.";
return this.datiSeiUnico.FormatBanca(text3);
}
public virtual string ProtettoTitolo(DataRow itemProtetto)
{
return itemProtetto["nomeFondoProtetto"].ToString();
}
public virtual string ProtettoTesto(DataRow itemProtetto)
{
string nota = "In questa scheda vengono riportati la quota, il numero di quote e il controvalore del fondo " + itemProtetto["nomeFondoProtetto"] + ", disponibili al momento della produzione del report. Il fondo prevede una protezione del capitale pari all80% della quota massima giornaliera raggiunta dalla data di partenza. Si fornisce, quindi, evidenza della quota massima raggiunta dal fondo, e della quota e del controvalore protetti*.";
return nota;
}
public virtual string ProtettoNota()
{
string nota = "La quota \"protetta\" è pari all80% della quota massima giornaliera raggiunta dal fondo dalla data di partenza: la quota massima potrebbe variare in funzione delle condizioni di mercato. Il controvalore \"protetto\" è calcolato ipotizzando che il numero delle quote si mantenga costante nel tempo e sia quindi uguale a quello disponibile alla data di produzione del report: il numero delle quote potrebbe variare nel tempo in seguito a movimentazione da parte del cliente o in seguito ad attività di ribilanciamento, prevista dal contratto.";
return nota;
}
}
}