140 lines
7.6 KiB
C#
140 lines
7.6 KiB
C#
using PDFGenerator.BusinessLayer.DataSection;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace PDFGenerator.BusinessLayer
|
|
{
|
|
public static class SectionAdditionsConditionChecker
|
|
{
|
|
public static bool S128AddonAsteriskAndNote(DataThread dataThread)
|
|
{
|
|
DataSetS128 dataSet = (DataSetS128)dataThread.Data.DatiSezione;
|
|
string profilioFinanziario = (string)dataSet.Tables["ProfiloRischio"].Rows[0][1];
|
|
decimal rischioMercatoMax = 0;
|
|
decimal.TryParse((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[0]["LimiteMax"], out rischioMercatoMax);
|
|
decimal rischioMercatoVal = 0;
|
|
decimal.TryParse((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[0]["ValoreBF"], out rischioMercatoVal);
|
|
decimal rischioCreditoMax = ConvertRischioClasseToDecimal((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[1]["LimiteMax"]);
|
|
decimal rischioCreditoVal = ConvertRischioClasseToDecimal((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[1]["ValoreBF"]);
|
|
bool result = S128And132NotesAndAsterisk(dataThread.TipoContratto, profilioFinanziario, rischioMercatoVal, rischioMercatoMax, rischioCreditoVal, rischioCreditoMax);
|
|
return result;
|
|
}
|
|
public static bool S132AddonNote_2nd(DataThread dataThread)
|
|
{
|
|
DataSetS132 dataSet = (DataSetS132)dataThread.Data.DatiSezione;
|
|
string profilioFinanziario = (string)dataSet.Tables["ProfiloRischio"].Rows[0][1];
|
|
decimal rischioMercatoMax = (decimal)dataSet.Tables["DatiGrafico"].Rows[0]["RischioMercatoMax"];
|
|
decimal rischioMercatoVal = (decimal)dataSet.Tables["DatiGrafico"].Rows[0]["RischioMercato"];
|
|
var rischioCreditoMaxTmp = dataSet.Tables["DatiGrafico"].Rows[0]["RischioCreditoMax"];
|
|
decimal rischioCreditoMax = rischioCreditoMaxTmp == DBNull.Value ? 0m : (decimal)rischioCreditoMaxTmp;
|
|
var rischioCreditoValTmp = dataSet.Tables["DatiGrafico"].Rows[0]["RischioCredito"];
|
|
decimal rischioCreditoVal = rischioCreditoValTmp == DBNull.Value ? 0m : (decimal)rischioCreditoValTmp;
|
|
bool result = S128And132NotesAndAsterisk(dataThread.TipoContratto, profilioFinanziario, rischioMercatoVal, rischioMercatoMax, rischioCreditoVal, rischioCreditoMax);
|
|
dataThread.IsAdequatezza = result;
|
|
return result;
|
|
}
|
|
public static bool S80BisBottomLabel(DataThread dataThread)
|
|
{
|
|
//20180917 AC aggiunto per far uscire la nota su eccessiva adeguatezza
|
|
DSS128ProfiliRischioAdeguatezza s128 = new DSS128ProfiliRischioAdeguatezza();
|
|
|
|
DataSectionResult sectionResult = s128.getDataSection(new List<SessionStruct>(), "[C6MartPeriodico].[PL_MP_S128ProfiloRischioAdeguatezza]", dataThread);
|
|
DataSetS128 dataSet = (DataSetS128) sectionResult.DatiSezione;
|
|
|
|
//DataSetS80BIS dataSet = (DataSetS80BIS)dataThread.Data.DatiSezione;
|
|
string profilioFinanziario = (string)dataSet.Tables["ProfiloRischio"].Rows[0][1];
|
|
decimal rischioMercatoMax = 0;
|
|
decimal.TryParse((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[0]["LimiteMax"], out rischioMercatoMax);
|
|
decimal rischioMercatoVal = 0;
|
|
decimal.TryParse((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[0]["ValoreBF"], out rischioMercatoVal);
|
|
decimal rischioCreditoMax = ConvertRischioClasseToDecimal((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[1]["LimiteMax"]);
|
|
decimal rischioCreditoVal = ConvertRischioClasseToDecimal((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[1]["ValoreBF"]);
|
|
bool result = S128And132NotesAndAsterisk(dataThread.TipoContratto, profilioFinanziario, rischioMercatoVal, rischioMercatoMax, rischioCreditoVal, rischioCreditoMax);
|
|
dataThread.IsAdequatezza = result;
|
|
return result;
|
|
//--20180917
|
|
//return dataThread.IsAdequatezza == true;
|
|
}
|
|
|
|
//20180917 AC aggiunto per far uscire la nota su eccessiva adeguatezza nella S170
|
|
public static bool S170BottomLabel(DataThread dataThread)
|
|
{
|
|
DSS128ProfiliRischioAdeguatezza s128 = new DSS128ProfiliRischioAdeguatezza();
|
|
|
|
DataSectionResult sectionResult = s128.getDataSection(new List<SessionStruct>(), "[C6MartPeriodico].[PL_MP_S128ProfiloRischioAdeguatezza]", dataThread);
|
|
DataSetS128 dataSet = (DataSetS128)sectionResult.DatiSezione;
|
|
|
|
string profilioFinanziario = (string)dataSet.Tables["ProfiloRischio"].Rows[0][1];
|
|
decimal rischioMercatoMax = 0;
|
|
decimal.TryParse((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[0]["LimiteMax"], out rischioMercatoMax);
|
|
decimal rischioMercatoVal = 0;
|
|
decimal.TryParse((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[0]["ValoreBF"], out rischioMercatoVal);
|
|
decimal rischioCreditoMax = ConvertRischioClasseToDecimal((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[1]["LimiteMax"]);
|
|
decimal rischioCreditoVal = ConvertRischioClasseToDecimal((string)dataSet.Tables["profiliRischioAdeguatezza"].Rows[1]["ValoreBF"]);
|
|
bool result = S128And132NotesAndAsterisk(dataThread.TipoContratto, profilioFinanziario, rischioMercatoVal, rischioMercatoMax, rischioCreditoVal, rischioCreditoMax);
|
|
dataThread.IsAdequatezza = result;
|
|
return result;
|
|
}
|
|
//--20180917
|
|
|
|
private static bool S128And132NotesAndAsterisk(TipoContratto contractType, string profilioFinanziario, decimal rischioMercatoVal, decimal rischioMercatoMax, decimal rischioCreditoVal, decimal rischioCreditoMax)
|
|
{
|
|
profilioFinanziario = profilioFinanziario.ToLower();
|
|
int useAddins = int.Parse(ConfigurationManager.AppSettings["S132AndS128ShowNotesAndAsterisk"]); // we can disable entire change in config file
|
|
//return true;
|
|
if (useAddins == 1)
|
|
{
|
|
if (rischioMercatoMax >= rischioMercatoVal && rischioCreditoMax >= rischioCreditoVal) // white area condition
|
|
{
|
|
if (profilioFinanziario.Contains("equilibrato") && rischioMercatoVal <= 2) // 2 levels condition
|
|
{
|
|
return true;
|
|
}
|
|
if (profilioFinanziario.Contains("dinamico") && rischioMercatoVal <= 4.5m) // 2 levels condition
|
|
{
|
|
return true;
|
|
}
|
|
if (profilioFinanziario.Contains("aggressivo") && rischioMercatoVal <= 9.5m) // 2 levels condition
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
private static decimal ConvertRischioClasseToDecimal(string value)
|
|
{
|
|
decimal result = 0;
|
|
switch (value.ToLower())
|
|
{
|
|
case "classe a":
|
|
result = 1;
|
|
break;
|
|
|
|
case "classe b":
|
|
result = 2;
|
|
break;
|
|
|
|
case "classe c":
|
|
result = 3;
|
|
break;
|
|
|
|
case "":
|
|
case null:
|
|
case "n.a.":
|
|
default:
|
|
result = 0;
|
|
break;
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
}
|