using System;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using System.Data;
using Consulenza.ReportCommon;
using System.Linq;
using Consulenza.DataServices.fideuram.data.service;
using System.Collections.Generic;
namespace Consulenza.ReportWriter.Manager.Section.Unica
{
///
/// S71.MonitoraggioEvoluzionePatrimonioERischio idSezione = 114
///
public class S71 : Entity.Section
{
private int _numeroFasiPresenti = 2;
///
/// S71.MonitoraggioEvoluzionePatrimonioERischio idSezione = 114
///
public S71(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S71", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
}
}
protected override sealed void Draw()
{
var dati = GetDataSet();
var fase1Data = Convert.ToDateTime(dati.Tables[0].Select().Max(r => r["Fase1_Data"]));
var sFase1Data = fase1Data.Equals(DateTime.MinValue) ? "-" : fase1Data.ToShortDateString();
var fase2Data = Convert.ToDateTime(dati.Tables[0].Select().Max(r => r["Fase2_Data"]));
var sFase2Data = fase2Data.Equals(DateTime.MinValue) ? "-" : fase2Data.ToShortDateString();
var fase3Data = Convert.ToDateTime(dati.Tables[0].Select().Max(r => r["Fase3_Data"]));
var sFase3Data = fase3Data.Equals(DateTime.MinValue) ? "-" : fase3Data.ToShortDateString();
// int larghezzaColonnaImmagine = 20;
int larghezzaColonnaSingolaFase = 130;
int larghezzaColonnaVariabile = 520 - (larghezzaColonnaSingolaFase * _numeroFasiPresenti);
int larghezzaColonnaImmagine2 = 25;
int larghezzaColonnaSingolaFase2 = 108;
int larghezzaColonnaVariabile2 = 520 - (larghezzaColonnaSingolaFase2 * _numeroFasiPresenti) - (larghezzaColonnaImmagine2 * _numeroFasiPresenti);
#region Tabella Evoluzione del Controvalore
if (evoluzionePatrimonio())
{
AddElement(new SpacePDF(20));
AddElement(new FormattedTextAreaPDF(GetTesto1(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize=7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify });
AddElement(new SpacePDF(15));
var tabellaEvoluzioneControvalore = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["EvoluzioneControvalore"], dati.Tables["FooterEvoluzioneControvalore"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = false,
ShowSeparationLines = false,
RowsPadding = 10,
HeaderHeight = 30,
HeaderMargin = 5
};
tabellaEvoluzioneControvalore.Columns.Add(new ColumnPDF("Area2", larghezzaColonnaVariabile, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, "Area", "Area di bisogno") { DeltaYContent = -1, ScaleColumnTypeImage = 0.5F, HeaderFontSize = 7, FontSize = 7 });
tabellaEvoluzioneControvalore.Columns.Add(new ColumnPDF("Fase1", larghezzaColonnaSingolaFase, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale, "Fase1_Controvalore", string.Format("Avvio monitoraggio
({0})", sFase1Data))
{
HeaderVerticalAlignment = VerticalAlignmentType.Centrato,
HeaderGroupWidth = larghezzaColonnaSingolaFase,
HeaderGroupPathImage ="freccia71b.png",
HeaderGroupScaleImage = 0.30F,
HeaderGroupTextDeltaX = larghezzaColonnaSingolaFase,//-4,
// HeaderGroupTextDeltaY = 35,
HeaderGroupBorderLine = true,
DeltaYContent = 3,
HeaderFontSize = 7,
FontSize = 7
});
if (_numeroFasiPresenti.Equals(3))
tabellaEvoluzioneControvalore.Columns.Add(new ColumnPDF("Fase2", larghezzaColonnaSingolaFase, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale, "Fase2_Controvalore", string.Format("Precedente invio report
({0})", sFase2Data))
{
// HeaderPaddingRight = 2,
HeaderVerticalAlignment = VerticalAlignmentType.Centrato,
HeaderGroupWidth = larghezzaColonnaSingolaFase,
HeaderGroupPathImage = "freccia71b.png",
HeaderGroupScaleImage = 0.30F,
HeaderGroupTextDeltaX = larghezzaColonnaSingolaFase,//-4,
// HeaderGroupTextDeltaY = 35,
HeaderGroupBorderLine = true,
DeltaYContent = 3,
HeaderFontSize = 7,
FontSize = 7
});
tabellaEvoluzioneControvalore.Columns.Add(new ColumnPDF("Fase3", larghezzaColonnaSingolaFase, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale, "Fase3_Controvalore", string.Format("Situazione corrente
({0})", sFase3Data))
{
DeltaYContent = 3,
HeaderFontSize = 7,
FontSize = 7
});
tabellaEvoluzioneControvalore.FooterColumns.Add(new ColumnPDF("Area", larghezzaColonnaVariabile, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo) { FontSize = 7 });
tabellaEvoluzioneControvalore.FooterColumns.Add(new ColumnPDF("Fase1", larghezzaColonnaSingolaFase, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale) { FontSize = 7 });
if (_numeroFasiPresenti.Equals(3))
tabellaEvoluzioneControvalore.FooterColumns.Add(new ColumnPDF("Fase2", larghezzaColonnaSingolaFase, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale) { FontSize = 7 });
tabellaEvoluzioneControvalore.FooterColumns.Add(new ColumnPDF("Fase3", larghezzaColonnaSingolaFase, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale) { FontSize = 7 });
for (int a = 0; a < dati.Tables["EvoluzioneControvalore"].Rows.Count; a++)
{
tabellaEvoluzioneControvalore.Cells[0, a].ValueObjectList.Add(new ImagePDF(0, 1, dati.Tables["EvoluzioneControvalore"].Rows[a].ItemArray[0].ToString())
{
DeltaX = 3,
DeltaY = 0,
Scale = 0.66f,
Height = 27,
Width = 145
});
var textArea = new FormattedTextAreaPDF(dati.Tables["EvoluzioneControvalore"].Rows[a].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);
tabellaEvoluzioneControvalore.Cells[0, a].ValueObjectList.Add(textArea);
}
AddElement(tabellaEvoluzioneControvalore);
}
#endregion
#region Tabella Evoluzione del Rischio
if (evoluzioneRischio())
{
// Testo introduttivo
AddElement(new SpacePDF(20));
AddElement(new FormattedTextAreaPDF(Helper.ReplaceVariables(GetTesto2(), EnvironmentFacade.ReportEnvironment), EnvironmentFacade.RendererFacade.XLeftLimit, 520) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, FontSize = 7 });
AddElement(new SpacePDF(15));
// Tabella
var tabellaEvoluzioneRischio = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["EvoluzioneRischio"])
{
Style = Style.ConsulenzaUnica,
AlternateRow = true,
ShowSeparationLines = false,
RowHeight = 30,
HeaderHeight = 30
};
tabellaEvoluzioneRischio.Columns.Add(new ColumnPDF("Descrizione", larghezzaColonnaVariabile2, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo, "Descrizione", "") { HeaderFontSize = 7, FontSize = 7 });
tabellaEvoluzioneRischio.Columns.Add(new ColumnPDF("Fase1", larghezzaColonnaSingolaFase2, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale, "Fase1_sValore", string.Format("Avvio monitoraggio
({0})", sFase1Data))
{
HeaderVerticalAlignment = VerticalAlignmentType.Centrato,
HeaderGroupWidth = larghezzaColonnaSingolaFase,
// HeaderGroupPathImage = "freccia71b.png",
// HeaderGroupScaleImage = 0.30F,
HeaderGroupTextDeltaX = larghezzaColonnaSingolaFase,//-4,
// HeaderGroupTextDeltaY = 35,
HeaderGroupBorderLine = true,
// DeltaYContent = 35,
HeaderFontSize = 7,
FontSize = 7
});
tabellaEvoluzioneRischio.Columns.Add(new ColumnPDF("Fase1_Immagine", larghezzaColonnaImmagine2, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Immagine, "Fase1_Immagine", "") { DeltaYContent = 8, ScaleColumnTypeImage = 0.15F, HeaderGroupScaleImage = 0.30F, HeaderGroupPathImage = "freccia71b.png" });
if (_numeroFasiPresenti.Equals(3))
{
tabellaEvoluzioneRischio.Columns.Add(new ColumnPDF("Fase2", larghezzaColonnaSingolaFase2, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale, "Fase2_sValore", string.Format("Precedente invio report
({0})", sFase2Data))
{
HeaderVerticalAlignment = VerticalAlignmentType.Centrato,
HeaderGroupWidth = larghezzaColonnaSingolaFase,
//HeaderGroupPathImage = "freccia71b.png",
//HeaderGroupScaleImage = 0.30F,
HeaderGroupTextDeltaX = larghezzaColonnaSingolaFase,//-4,
// HeaderGroupTextDeltaY = 35,
HeaderGroupBorderLine = true,
// DeltaYContent = 35,
HeaderFontSize = 7,
FontSize = 7
});
tabellaEvoluzioneRischio.Columns.Add(new ColumnPDF("Fase2_Immagine", larghezzaColonnaImmagine2, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Immagine, "Fase2_Immagine", "") { HeaderFontSize = 7, FontSize = 7, DeltaYContent = 8, HeaderGroupScaleImage = 0.30F, ScaleColumnTypeImage = 0.15F, HeaderGroupPathImage = "freccia71b.png" });
}
tabellaEvoluzioneRischio.Columns.Add(new ColumnPDF("Fase3", larghezzaColonnaSingolaFase2, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale, "Fase3_sValore", string.Format("Situazione corrente
({0})", sFase3Data)) { HeaderFontSize = 7, FontSize = 7, HeaderPaddingRight = 5, PaddingRight = 5 });
tabellaEvoluzioneRischio.Columns.Add(new ColumnPDF("Fase3_Immagine", larghezzaColonnaImmagine2, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Immagine, "Fase3_Immagine", "") { HeaderFontSize = 7, FontSize = 7, DeltaYContent = 8, ScaleColumnTypeImage = 0.15F });
AddElement(tabellaEvoluzioneRischio);
}
#endregion
}
protected sealed override DataTable GetDataTable()
{
return null;
}
protected sealed override DataSet GetDataSet()
{
//Adriano
#region Cliente/Nucleo professionale
bool profiloProfessionale;
bool profiloAggressivo;
bool profiloProfessionaleAggressivo;
Profiler profiler;
if (EnvironmentFacade.ReportEnvironment.ReportId == 6) //nuclei
{
DataServices.fideuram.data.service.rsAnagraficaNucleo nucleo = datiSeiUnico.nucleiUnit().anagrafica;
profiler = new Profiler(nucleo);
}
else
{
DataServices.fideuram.data.service.rsClienteAnagrafica cliente = datiSeiUnico.clienteUnit().anagrafica;
profiler = new Profiler(cliente);
}
profiloProfessionale = profiler.ProfiloProfessionale;
profiloAggressivo = profiler.ProfiloAggressivo;
profiloProfessionaleAggressivo = profiler.ProfiloProfessionaleAggressivo;
#endregion
//--Adriano
var ds = new DataSet();
ds.Tables.Add("EvoluzioneControvalore");
ds.Tables.Add("FooterEvoluzioneControvalore");
ds.Tables.Add("EvoluzioneRischio");
ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("Area", typeof(string)));
ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("Description", typeof(string)));
ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("Fase1_Controvalore", typeof(decimal)));
ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("Fase1_Data", typeof(DateTime)));
ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("Fase2_Controvalore", typeof(decimal)));
ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("Fase2_Data", typeof(DateTime)));
ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("Fase3_Controvalore", typeof(decimal)));
ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("Fase3_Data", typeof(DateTime)));
ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("ReplaceIfZero", typeof(string)));
ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase1_Valore", typeof(decimal)));
ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase1_sValore", typeof(string)));
ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase1_Data", typeof(DateTime)));
ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase1_Immagine", typeof(string)));
ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase2_Valore", typeof(decimal)));
ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase2_sValore", typeof(string)));
ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase2_Data", typeof(DateTime)));
ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase2_Immagine", typeof(string)));
ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase3_Valore", typeof(decimal)));
ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase3_sValore", typeof(string)));
ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase3_Data", typeof(DateTime)));
ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase3_Immagine", typeof(string)));
ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("ReplaceIfZero", typeof(string)));
areaMon areaRiferimento;
fase fase1;
fase fase2;
fase fase3;
var piramideModello = datiSeiUnico.piramideModelloUnit()
.piramideModello.areaModello.ToList()
.OrderBy(o => o.ordinamento).ToList().FindAll(o => o.visible);
decimal fase2NA = 0;
var areeMonotorate = datiSeiUnico.monitoraggioUnit().monitoraggio.ToList();
#region Tabella evoluzione controvalore
foreach (var item in piramideModello)
{
areaRiferimento = areeMonotorate.FirstOrDefault(o => o.area.Equals(item.area));
if (areaRiferimento != null)
{
fase1 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(1));
fase2 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(2));
fase3 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(3));
_numeroFasiPresenti = _numeroFasiPresenti != areaRiferimento.fasi.Count() && _numeroFasiPresenti < areaRiferimento.fasi.Count()
? areaRiferimento.fasi.Count() : _numeroFasiPresenti;
if (areaRiferimento.fasi.Count().Equals(3) && fase2 != null && fase2NA == 0)
fase2NA += fase2.risorseNA + fase2.risorseAllocate;
}
else
{
fase1 = null;
fase2 = null;
fase3 = null;
}
var row = ds.Tables["EvoluzioneControvalore"].NewRow();
row["Area"] = string.Format("{0}.png", new AreaBisogno(item.area).NomePerImmagine);
row["Description"] = item.descrizioneArea;
row["Fase1_Controvalore"] = fase1 != null ? fase1.ctv : 0;
row["Fase1_Data"] = fase1 != null ? fase1.dtFase : DateTime.MinValue;
row["Fase2_Controvalore"] = fase2 != null ? fase2.ctv : 0;
row["Fase2_Data"] = fase2 != null ? fase2.dtFase : DateTime.MinValue;
row["Fase3_Controvalore"] = fase3 != null ? fase3.ctv : 0;
row["Fase3_Data"] = fase3 != null ? fase3.dtFase : DateTime.MinValue;
row["ReplaceIfZero"] = "0,00";
ds.Tables["EvoluzioneControvalore"].Rows.Add(row);
}
if (!sintesiMovimento())
_numeroFasiPresenti--;
#region Footer della tabella Aree
ds.Tables["FooterEvoluzioneControvalore"].Columns.Add(new DataColumn("DescrizioneProgetto", typeof(string)));
ds.Tables["FooterEvoluzioneControvalore"].Columns.Add(new DataColumn("VaR", typeof(decimal)));
if (_numeroFasiPresenti.Equals(3))
ds.Tables["FooterEvoluzioneControvalore"].Columns.Add(new DataColumn("ControvaloreAttuale", typeof(decimal)));
ds.Tables["FooterEvoluzioneControvalore"].Columns.Add(new DataColumn("AllocazioneAttuale", typeof(decimal)));
ds.Tables["FooterEvoluzioneControvalore"].Columns.Add(new DataColumn("ReplaceIfZero", typeof(string)));
ds.Tables["FooterEvoluzioneControvalore"].Columns.Add(new DataColumn("FontBold", typeof(bool)));
ds.Tables["FooterEvoluzioneControvalore"].Columns.Add(new DataColumn("BackgroundGray", typeof(bool)));
areaRiferimento = areeMonotorate.FirstOrDefault(o => o.area.Equals("Liq"));
if (areaRiferimento != null) {
fase1 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(1));
fase2 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(2));
fase3 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(3));
} else {
fase1 = null;
fase2 = null;
fase3 = null;
}
DataRow dr = ds.Tables["FooterEvoluzioneControvalore"].NewRow();
bool risorseNA = fase2 != null ?
fase2.risorseNA == 0 && fase1.risorseNA == 0 && fase3.risorseNA == 0 :
fase1.risorseNA == 0 && fase3.risorseNA == 0;
// Fase2 rimane valorizzata per l'ultima area presa; dato che no nsempre presente, ricontrollo ne esista una.
if (_numeroFasiPresenti.Equals(3) && fase2 == null){
foreach (var item in piramideModello)
{
areaRiferimento = areeMonotorate.FirstOrDefault(o => o.area.Equals(item.area));
if (areaRiferimento != null)
if (areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(2)) != null)
{
fase2 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(2));
break;
}
}
}
if (risorseNA)
{
//bisogna inserire le non allocate: qualora sianopresenti il footer totale allocate diventerà 1 tot risorse allocate, 2 risorse non allocate, 3 totale risorse finanziarie"
//altrimenti resta così com'è: totale risorse allocate.
if (fase1.investimentiInCorso != 0 || (_numeroFasiPresenti.Equals(3) && fase2 != null && fase2.investimentiInCorso != 0) || fase3.investimentiInCorso != 0 ||
fase1.contoCorrente != 0 || (_numeroFasiPresenti.Equals(3) && fase2 != null && fase2.contoCorrente != 0) || fase3.contoCorrente != 0 ||
fase1.lineaself != 0 || (_numeroFasiPresenti.Equals(3) && fase2 != null && fase2.lineaself != 0) || fase3.lineaself != 0)
{
dr["DescrizioneProgetto"] = datiSeiUnico.FormatBanca("Totale risorse allocate");
dr["VaR"] = Convert.ToDecimal(fase1.risorseAllocate);
if (_numeroFasiPresenti.Equals(3))
dr["ControvaloreAttuale"] = fase2.risorseAllocate;
dr["AllocazioneAttuale"] = fase3.risorseAllocate;
dr["ReplaceIfZero"] = "-";
dr["FontBold"] = true;
dr["BackgroundGray"] = true;
ds.Tables["FooterEvoluzioneControvalore"].Rows.Add(dr);
}
}
else
{
dr["DescrizioneProgetto"] = datiSeiUnico.FormatBanca("Totale risorse allocate");
dr["VaR"] = Convert.ToDecimal(fase1.risorseAllocate);
if (_numeroFasiPresenti.Equals(3))
dr["ControvaloreAttuale"] = fase2.risorseAllocate;
dr["AllocazioneAttuale"] = fase3.risorseAllocate;
dr["ReplaceIfZero"] = "-";
dr["FontBold"] = true;
dr["BackgroundGray"] = true;
ds.Tables["FooterEvoluzioneControvalore"].Rows.Add(dr);
dr = ds.Tables["FooterEvoluzioneControvalore"].NewRow();
dr["DescrizioneProgetto"] = "Risorse non allocate";
dr["VaR"] = fase1.risorseNA;
if (_numeroFasiPresenti.Equals(3))
dr["ControvaloreAttuale"] = fase2.risorseNA;
dr["AllocazioneAttuale"] = fase3.risorseNA;
dr["ReplaceIfZero"] = "-";
dr["FontBold"] = false;
dr["BackgroundGray"] = false;
ds.Tables["FooterEvoluzioneControvalore"].Rows.Add(dr);
if (fase1.investimentiInCorso != 0 || (_numeroFasiPresenti.Equals(3) && fase2.investimentiInCorso != 0) || fase3.investimentiInCorso != 0 ||
fase1.contoCorrente != 0 || (_numeroFasiPresenti.Equals(3) && fase2.contoCorrente != 0) || fase3.contoCorrente != 0 ||
fase1.lineaself != 0 || (_numeroFasiPresenti.Equals(3) && fase2.lineaself != 0) || fase3.lineaself != 0)
{
dr = ds.Tables["FooterEvoluzioneControvalore"].NewRow();
dr["DescrizioneProgetto"] = datiSeiUnico.FormatBanca("Totale risorse finanziarie");
dr["VaR"] = Convert.ToDecimal(fase1.risorseAllocate+ fase1.risorseNA);
if (_numeroFasiPresenti.Equals(3))
dr["ControvaloreAttuale"] = fase2.risorseAllocate + fase2.risorseNA;
dr["AllocazioneAttuale"] = fase3.risorseAllocate; //per fase 3 le risorseNA non esistono perchè non contemplate nel nuovo sei
dr["ReplaceIfZero"] = "-";
dr["FontBold"] = true;
dr["BackgroundGray"] = true;
ds.Tables["FooterEvoluzioneControvalore"].Rows.Add(dr);
}
}
if (fase1.investimentiInCorso != 0 || (_numeroFasiPresenti.Equals(3) && fase2 != null && fase2.investimentiInCorso != 0) || fase3.investimentiInCorso != 0)
{
dr = ds.Tables["FooterEvoluzioneControvalore"].NewRow();
dr["DescrizioneProgetto"] = "Operazioni in corso";
dr["VaR"] = fase1.investimentiInCorso;
if (_numeroFasiPresenti.Equals(3))
dr["ControvaloreAttuale"] = fase2.investimentiInCorso;
dr["AllocazioneAttuale"] = fase3.investimentiInCorso;
dr["ReplaceIfZero"] = "-";
dr["FontBold"] = false;
dr["BackgroundGray"] = false;
ds.Tables["FooterEvoluzioneControvalore"].Rows.Add(dr);
}
if (fase1.contoCorrente != 0 || (_numeroFasiPresenti.Equals(3) && fase2 != null && fase2.contoCorrente != 0) || fase3.contoCorrente != 0)
{
dr = ds.Tables["FooterEvoluzioneControvalore"].NewRow();
dr["DescrizioneProgetto"] = "Conto corrente";
dr["VaR"] = fase1.contoCorrente;
if (_numeroFasiPresenti.Equals(3))
dr["ControvaloreAttuale"] = fase2.contoCorrente;
dr["AllocazioneAttuale"] = fase3.contoCorrente;
dr["ReplaceIfZero"] = "-";
dr["FontBold"] = false;
dr["BackgroundGray"] = false;
ds.Tables["FooterEvoluzioneControvalore"].Rows.Add(dr);
}
if (fase1.lineaself != 0 || (_numeroFasiPresenti.Equals(3) && fase2 != null && fase2.lineaself != 0) || fase3.lineaself != 0)
{
dr = ds.Tables["FooterEvoluzioneControvalore"].NewRow();
dr["DescrizioneProgetto"] = " Liquidità negativa GP Eligo";
dr["VaR"] = fase1.lineaself;
if (_numeroFasiPresenti.Equals(3))
dr["ControvaloreAttuale"] = fase2.lineaself;
dr["AllocazioneAttuale"] = fase3.lineaself;
dr["ReplaceIfZero"] = "-";
dr["FontBold"] = false;
dr["BackgroundGray"] = false;
ds.Tables["FooterEvoluzioneControvalore"].Rows.Add(dr);
}
var totfase1=fase1.risorseNA+fase1.lineaself+fase1.contoCorrente+fase1.investimentiInCorso+fase1.risorseAllocate;
var totfase2 = fase2 != null ? fase2.risorseNA + fase2.lineaself + fase2.contoCorrente + fase2.investimentiInCorso + fase2.risorseAllocate : fase2NA;
var totfase3 = fase3.risorseNA + fase3.lineaself + fase3.contoCorrente + fase3.investimentiInCorso + fase3.risorseAllocate;
// Patrimonio Casa
var rowFooter = ds.Tables["FooterEvoluzioneControvalore"].NewRow();
rowFooter["DescrizioneProgetto"] = string.Format("Patrimonio {0}", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment));
rowFooter["VaR"] = totfase1;
if (_numeroFasiPresenti.Equals(3))
rowFooter["ControvaloreAttuale"] = totfase2;
rowFooter["AllocazioneAttuale"] = totfase3;
rowFooter["ReplaceIfZero"] = "-";
rowFooter["FontBold"] = true;
rowFooter["BackgroundGray"] = true;
ds.Tables["FooterEvoluzioneControvalore"].Rows.Add(rowFooter);
#endregion
#endregion
#region Tabella evoluzione rischio
areaRiferimento = areeMonotorate.FirstOrDefault();
foreach (var areaMon in areeMonotorate)
{
fase2 = areaMon.fasi.FirstOrDefault(o => o.fase1.Equals(2));
if (fase2 != null)
{
areaRiferimento = areaMon;
break;
}
}
if (areaRiferimento != null)
{
fase1 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(1));
fase2 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(2));
fase3 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(3));
}
else
{
fase1 = null;
fase2 = null;
fase3 = null;
}
#region VaR massimo profilo finanziario (%)
//Adriano: per i clienti professionali il varMaxProfilo è 50, ma solo per le fasi successive alla sottoscrizione di un contratto professionale
// verificare che il valore sia fornito dal WS
DateTime dtSottoscrizione = datiSeiUnico.clienteUnit().anagrafica.dtSottoscrizione;
decimal varMaxProfilo = 50;
string varMaxProfiloString = Helper.FormatDecimal(varMaxProfilo.ToString(), 2);
bool fase1Successiva = fase1.dtFase.CompareTo(dtSottoscrizione) > 0;
bool fase2Successiva = fase2 != null ? fase2.dtFase.CompareTo(dtSottoscrizione) > 0 : false;
bool fase3Successiva = fase3.dtFase.CompareTo(dtSottoscrizione) > 0;
if (profiloProfessionaleAggressivo)
ds.Tables["EvoluzioneRischio"].Rows.Add(
"VaR massimo profilo finanziario (%)",
fase1 != null ? fase1Successiva ? varMaxProfilo : fase1.varMaxProfilo : 0,
fase1 != null ? fase1Successiva ? varMaxProfiloString : Helper.FormatDecimal(fase1.varMaxProfilo.ToString(), 2) : "-",
fase1 != null ? fase1.dtFase : DateTime.MinValue,
string.Empty,
fase2 != null ? fase2Successiva ? varMaxProfilo : fase2.varMaxProfilo : 0,
fase2 != null ? fase2Successiva ? varMaxProfiloString : Helper.FormatDecimal(fase2.varMaxProfilo.ToString(), 2) : "-",
fase2 != null ? fase2.dtFase : DateTime.MinValue,
string.Empty,
fase3 != null ? fase3Successiva ? varMaxProfilo : fase3.varMaxProfilo : 0,
fase3 != null ? fase3Successiva ? varMaxProfiloString : Helper.FormatDecimal(fase3.varMaxProfilo.ToString(), 2) : "-",
fase3 != null ? fase3.dtFase : DateTime.MinValue,
string.Empty
);
else
ds.Tables["EvoluzioneRischio"].Rows.Add(
"VaR massimo profilo finanziario (%)",
fase1 != null ? fase1.varMaxProfilo : 0,
fase1 != null ? Helper.FormatDecimal(fase1.varMaxProfilo.ToString(), 2) : "-",
fase1 != null ? fase1.dtFase : DateTime.MinValue,
string.Empty,
fase2 != null ? fase2.varMaxProfilo : 0,
fase2 != null ? Helper.FormatDecimal(fase2.varMaxProfilo.ToString(), 2) : "-",
fase2 != null ? fase2.dtFase : DateTime.MinValue,
string.Empty,
fase3 != null ? fase3.varMaxProfilo : 0,
fase3 != null ? Helper.FormatDecimal(fase3.varMaxProfilo.ToString(), 2) : "-",
fase3 != null ? fase3.dtFase : DateTime.MinValue,
string.Empty
);
//--Adriano
// originale:
//ds.Tables["EvoluzioneRischio"].Rows.Add(
// "VaR massimo profilo finanziario (%)",
// fase1 != null ? fase1.varMaxProfilo : 0,
// fase1 != null ? Helper.FormatDecimal(fase1.varMaxProfilo.ToString(), 2) : "-",
// fase1 != null ? fase1.dtFase : DateTime.MinValue,
// string.Empty,
// fase2 != null ? fase2.varMaxProfilo : 0,
// fase2 != null ? Helper.FormatDecimal(fase2.varMaxProfilo.ToString(), 2) : "-",
// fase2 != null ? fase2.dtFase : DateTime.MinValue,
// string.Empty,
// fase3 != null ? fase3.varMaxProfilo : 0,
// fase3 != null ? Helper.FormatDecimal(fase3.varMaxProfilo.ToString(), 2) : "-",
// fase3 != null ? fase3.dtFase : DateTime.MinValue,
// string.Empty
// );
#endregion
#region Rischio Mercato (VaR %)
ds.Tables["EvoluzioneRischio"].Rows.Add(
"Rischio Mercato
(VaR %)",
fase1 != null ? fase1.varComplessivo : 0,
fase1 != null ? Helper.FormatDecimal(fase1.varComplessivo.ToString(), 2) : "-",
fase1 != null ? fase1.dtFase : DateTime.MinValue,
fase1 != null ? fase1.varComplessivo <= fase1.varMaxProfilo ? "FlagOK.png" : "FlagNO.png" : string.Empty,
fase2 != null ? fase2.varComplessivo : 0,
fase2 != null ? Helper.FormatDecimal(fase2.varComplessivo.ToString(), 2) : "-",
fase2 != null ? fase2.dtFase : DateTime.MinValue,
fase2 != null ? fase2.varComplessivo <= fase2.varMaxProfilo ? "FlagOK.png" : "FlagNO.png" : string.Empty,
fase3 != null ? fase3.varComplessivo : 0,
fase3 != null ? Helper.FormatDecimal(fase3.varComplessivo.ToString(), 2) : "-",
fase3 != null ? fase3.dtFase : DateTime.MinValue,
fase3 != null ? fase3.varComplessivo <= fase3.varMaxProfilo ? "FlagOK.png" : "FlagNO.png" : string.Empty
);
#endregion
#region Rischio Credito massimo
ds.Tables["EvoluzioneRischio"].Rows.Add(
"Rischio Credito massimo",
fase1 != null ? fase1.classeRischioMax : 0,
fase1 != null ? fase1.classeRischioMaxDec.Contains("CLASSE") ? Helper.CapitalizeWords(fase1.classeRischioMaxDec) : fase1.classeRischioMaxDec : "-",
fase1 != null ? fase1.dtFase : DateTime.MinValue,
string.Empty,
fase2 != null ? fase2.classeRischioMax : 0,
fase2 != null ? fase2.classeRischioMaxDec.Contains("CLASSE") ? Helper.CapitalizeWords(fase2.classeRischioMaxDec) : fase2.classeRischioMaxDec : "-",
fase2 != null ? fase2.dtFase : DateTime.MinValue,
string.Empty,
fase3 != null ? fase3.classeRischioMax : 0,
fase3 != null ? fase3.classeRischioMaxDec.Contains("CLASSE") ? Helper.CapitalizeWords(fase3.classeRischioMaxDec) : fase3.classeRischioMaxDec : "-",
fase3 != null ? fase3.dtFase : DateTime.MinValue,
string.Empty
);
#endregion
#region Rischio Credito
string value1 = fase1 != null ? fase1.classeRischioDec != null ? fase1.classeRischioDec.Contains("CLASSE") ? Helper.CapitalizeWords(fase1.classeRischioDec) : fase1.classeRischioDec : "n.a." : "n.a.";
string value2 = fase2 != null ? fase2.classeRischioDec != null ? fase2.classeRischioDec.Contains("CLASSE") ? Helper.CapitalizeWords(fase2.classeRischioDec) : fase2.classeRischioDec : "n.a." : "n.a.";
string value3 = fase3 != null ? fase3.classeRischioDec != null ? fase3.classeRischioDec.Contains("CLASSE") ? Helper.CapitalizeWords(fase3.classeRischioDec) : fase3.classeRischioDec : "n.a." : "n.a.";
ds.Tables["EvoluzioneRischio"].Rows.Add(
"Rischio Credito",
fase1 != null ? Convert.ToInt32(fase1.classeRischio) : 0,
value1,
fase1 != null ? fase1.dtFase : DateTime.MinValue,
fase1 != null ? value1.Equals("n.a.") ? string.Empty : Convert.ToInt32(fase1.classeRischio) <= fase1.classeRischioMax ? "FlagOK.png" : "FlagNO.png" : string.Empty,
fase2 != null ? Convert.ToInt32(fase2.classeRischio) : 0,
value2,
fase2 != null ? fase2.dtFase : DateTime.MinValue,
fase2 != null ? value2.Equals("n.a.") ? string.Empty : Convert.ToInt32(fase2.classeRischio) <= fase2.classeRischioMax ? "FlagOK.png" : "FlagNO.png" : string.Empty,
fase3 != null ? Convert.ToInt32(fase3.classeRischio) : 0,
value3,
fase3 != null ? fase3.dtFase : DateTime.MinValue,
fase3 != null ? value3.Equals("n.a.") ? string.Empty : Convert.ToInt32(fase3.classeRischio) <= fase3.classeRischioMax ? "FlagOK.png" : "FlagNO.png" : string.Empty
);
#endregion
#endregion
return ds;
}
public virtual bool evoluzionePatrimonio() { return GetOption().Valore; }
public virtual bool sintesiMovimento() { return true; } // tanto deve essere sempre vibile, ne caso gestire la Opzione X_2 che arriva dai vincoli
public virtual bool evoluzioneRischio() { return GetOption().Valore; }
public virtual string GetTesto1() {
return datiSeiUnico.FormatBanca("Nella tabella sottostante è riportata l'evoluzione, in termini di controvalore, del patrimonio che lei detiene presso $/Banca/$ dall'avvio del monitoraggio alla situazione attuale.");
}
public virtual string GetTesto2()
{
return datiSeiUnico.FormatBanca("Nella tabella sottostante è riportata l'evoluzione, in termini di Rischio Mercato (VaR) e di Rischio Credito, del patrimonio che lei detiene presso $/Banca/$, dall'avvio del monitoraggio alla situazione attuale.");
}
public bool isAltro(List> l1, List> l2, List> l3, string type) {
if (decimal.Parse(l1.FirstOrDefault(x => x.Key.Equals(type)).Value) != 0 ||
decimal.Parse(l3.FirstOrDefault(x => x.Key.Equals(type)).Value) != 0)
if (l2 == null)
return true;
else
if (decimal.Parse(l2.FirstOrDefault(x => x.Key.Equals(type)).Value) != 0)
return true;
return false;
}
public List> getListaProdotti(fase fase)
{
var listaProdotti = new List>();
{
// listaProdotti.Add(new KeyValuePair("c/c negativo", pianificazione.altro.ToString()));
listaProdotti.Add(new KeyValuePair("Operazioni in corso", fase.investimentiInCorso.ToString()));
listaProdotti.Add(new KeyValuePair("Conto corrente", fase.contoCorrente.ToString()));
listaProdotti.Add(new KeyValuePair("Liquidità negativa GP Eligo", fase.lineaself.ToString()));
}
return listaProdotti;//.FindAll(o => o.Value != "0");
}
}
}