368 lines
19 KiB
C#
368 lines
19 KiB
C#
using Consulenza.ReportCommon;
|
|
using Consulenza.ReportWriter.Business;
|
|
using Consulenza.ReportWriter.Business.OBJ_PDF;
|
|
using System;
|
|
using System.Data;
|
|
using System.Linq;
|
|
|
|
namespace Consulenza.ReportWriter.Manager.Section.Unica.Proposta
|
|
{
|
|
/// <summary>
|
|
/// Scheda 2. Sintesi Cliente. IdSezione 45
|
|
/// </summary>
|
|
public class S2 : Unica.S2
|
|
{
|
|
public S2(EnvironmentFacade environmentFacade, int idSection)
|
|
: base(environmentFacade, idSection)
|
|
{
|
|
|
|
}
|
|
|
|
//protected override DataSet GetDataSet()
|
|
//{
|
|
// #region Definizione Tabelle
|
|
// var ds = new DataSet();
|
|
// ds.Tables.Add(new DataTable("cliente"));
|
|
// ds.Tables.Add(new DataTable("rischio"));
|
|
// ds.Tables.Add(new DataTable("patrimonio"));
|
|
// ds.Tables.Add(new DataTable("elencoPatrimonio"));
|
|
// #endregion
|
|
|
|
// #region Estrazione Chiave PB + Servizi
|
|
|
|
|
|
// var dataPatrimonioComplessivo = datiSeiUnico.patrimonioUnit().patrimonioComplessivo;
|
|
|
|
// var rischioPatrimonioCasa = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale.varInfos;
|
|
// var questionarioCliente = datiSeiUnico.piramideModelloUnit().questionarioMifid;
|
|
// var displayInfo = datiSeiUnico.displayInfos().tipoPatrimonioDisplayInfos;
|
|
// var delegato = datiSeiUnico.propostaUnit().stDettaglioProposta.delgato;
|
|
// var cliente = datiSeiUnico.clienteUnit().anagrafica;
|
|
|
|
// #endregion
|
|
|
|
|
|
|
|
// #region Dati del Cliente
|
|
|
|
// ds.Tables["cliente"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
|
|
// ds.Tables["cliente"].Columns.Add(new DataColumn("Valore", typeof(string)));
|
|
// string contrattoDiConsulenza = "";
|
|
// if ("Nessun Contratto".Equals(cliente.contrattoReport))
|
|
// contrattoDiConsulenza = cliente.contrattoReport;
|
|
// else
|
|
// contrattoDiConsulenza = cliente.contrattoReport + " del " + cliente.dtSottoscrizione.ToString("dd/MM/yyyy");
|
|
// if (!GetOption<Opzione1>().ReportAnonimo)
|
|
// {
|
|
// ds.Tables["cliente"].Rows.Add("Cliente", string.Format("{0} {1}", cliente.cognome, cliente.nome));
|
|
// ds.Tables["cliente"].Rows.Add("Codice fiscale/Part. IVA", cliente.partitaIva != null ? cliente.partitaIva : cliente.codiceFiscale);
|
|
// }
|
|
|
|
// ds.Tables["cliente"].Rows.Add("Contratto di consulenza", contrattoDiConsulenza);
|
|
// ds.Tables["cliente"].Rows.Add("Profilo finanziario", string.Format("{0}", cliente.descProfilo));
|
|
|
|
// if(delegato != null)
|
|
// ds.Tables["cliente"].Rows.Add("Legale Rappresentante /<BR>Delegato", string.Format("{0} {1}", delegato.cognomeDelegato, delegato.nomeDelegato));
|
|
|
|
// #endregion
|
|
|
|
// #region Rischio del cliente e del Patrimonio Casa
|
|
|
|
// ds.Tables["rischio"].Columns.Add(new DataColumn("Rischio", typeof(string)));
|
|
// ds.Tables["rischio"].Columns.Add(new DataColumn("ProfiloFinanziario", typeof(string)));
|
|
|
|
// ds.Tables["rischio"].Columns.Add(new DataColumn("PatrimonioCasa", typeof(string)));
|
|
// ds.Tables["rischio"].Rows.Add("Rischio Mercato (VaR %)",
|
|
// questionarioCliente != null ? Helper.FormatDecimal(questionarioCliente.profileVarMax.ToString(), 2) : "n.a.",
|
|
// rischioPatrimonioCasa.varDecodificato);
|
|
// ds.Tables["rischio"].Rows.Add("Rischio Credito",
|
|
// questionarioCliente != null ? Helper.CapitalizeWords(questionarioCliente.profileClassRiskMax) : "n.a.",
|
|
// (rischioPatrimonioCasa.rischioCreditoDecodificato.ToUpper().Contains("CLASSE")) ? Helper.CapitalizeWords(rischioPatrimonioCasa.rischioCreditoDecodificato) : rischioPatrimonioCasa.rischioCreditoDecodificato);
|
|
|
|
// #endregion
|
|
|
|
// #region Patrimonio complessivo
|
|
|
|
// ds.Tables["patrimonio"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
|
|
// ds.Tables["patrimonio"].Columns.Add(new DataColumn("Valore", typeof(string)));
|
|
|
|
// var testoPatrimonio = string.Format("Patrimonio complessivo (€){0}", GetNote1().Length > 0 ? "*" : string.Empty);
|
|
// ds.Tables["patrimonio"].Rows.Add(testoPatrimonio, Helper.FormatCurrency(datiSeiUnico.CMP_TOTALEPOSITIVO.ToString()));
|
|
|
|
// #endregion
|
|
|
|
// #region Elenco patrimoni per grafico a barre
|
|
|
|
// ds.Tables["elencoPatrimonio"].Columns.Add(new DataColumn("Patrimonio", typeof(string)));
|
|
// ds.Tables["elencoPatrimonio"].Columns.Add(new DataColumn("Red", typeof(int)));
|
|
// ds.Tables["elencoPatrimonio"].Columns.Add(new DataColumn("Green", typeof(int)));
|
|
// ds.Tables["elencoPatrimonio"].Columns.Add(new DataColumn("Blue", typeof(int)));
|
|
// ds.Tables["elencoPatrimonio"].Columns.Add(new DataColumn("Controvalore", typeof(decimal)));
|
|
// ds.Tables["elencoPatrimonio"].Columns.Add(new DataColumn("Percentuale", typeof(decimal)));
|
|
// ds.Tables["elencoPatrimonio"].Columns.Add(new DataColumn("Ordinamento", typeof(int)));
|
|
// if (dataPatrimonioComplessivo.elencoSlice != null)
|
|
// {
|
|
// foreach (var item in dataPatrimonioComplessivo.elencoSlice)
|
|
// {
|
|
// var mapDisplayInfo = displayInfo.Where(l => l.key == item.codice).ToArray();
|
|
// string titolo = "";
|
|
// if (item.descrizione.Contains("SanPaolo") || item.descrizione.Contains("Fideuram") || item.descrizione.Contains("Altri"))
|
|
// {
|
|
// bool CASA_NEG = (datiSeiUnico.CASA_CCN + datiSeiUnico.CASA_GPELIGO) != 0;
|
|
// if (item.descrizione.Contains("SanPaolo") || item.descrizione.Contains("Fideuram"))
|
|
// titolo = string.Format(item.descrizione + "{0}", CASA_NEG ? "*" : "");
|
|
// else
|
|
// if (item.descrizione.Contains("Altri"))
|
|
// titolo = string.Format(item.descrizione + "{0}", (datiSeiUnico.TRZ_CCN != 0) ? "*" : "");
|
|
// }
|
|
// else
|
|
// titolo = item.descrizione;
|
|
// var colore = new ColorPDF(mapDisplayInfo[0].value.fill);
|
|
// var ordinamento = mapDisplayInfo[0].value.order;
|
|
|
|
// ds.Tables["elencoPatrimonio"].Rows.Add(titolo, colore.Red, colore.Green, colore.Blue, item.ctv, item.peso * 100, ordinamento);
|
|
// }
|
|
|
|
// ds.Tables["elencoPatrimonio"].AsEnumerable().OrderBy(r => r.Field<int>("Ordinamento"));
|
|
// }
|
|
// #endregion
|
|
|
|
// return ds;
|
|
//}
|
|
|
|
protected override DataSet GetDataSet()
|
|
{
|
|
#region Definizione Tabelle
|
|
var ds = new DataSet();
|
|
ds.Tables.Add(new DataTable("cliente"));
|
|
ds.Tables.Add(new DataTable("rischio"));
|
|
ds.Tables.Add(new DataTable("patrimonio"));
|
|
ds.Tables.Add(new DataTable("elencoPatrimonio"));
|
|
#endregion
|
|
|
|
#region Estrazione Chiave PB + Servizi
|
|
|
|
|
|
var dataPatrimonioComplessivo = datiSeiUnico.patrimonioUnit().patrimonioComplessivo;
|
|
/********************* Estrazione chiave PB per modifica 31/08/2021 - Andrea *********************************/
|
|
var chiavePB = datiSeiUnico.all().promotoreBancario.chiavePb;
|
|
/********************************************************************************************************************/
|
|
var rischioPatrimonioCasa = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale.varInfos;
|
|
var questionarioCliente = datiSeiUnico.piramideModelloUnit().questionarioMifid;
|
|
var displayInfo = datiSeiUnico.displayInfos().tipoPatrimonioDisplayInfos;
|
|
var delegato = datiSeiUnico.propostaUnit().stDettaglioProposta.delgato;
|
|
var cliente = datiSeiUnico.clienteUnit().anagrafica;
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region Dati del Cliente
|
|
|
|
ds.Tables["cliente"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
|
|
ds.Tables["cliente"].Columns.Add(new DataColumn("Valore", typeof(string)));
|
|
|
|
if (!GetOption<Opzione1>().ReportAnonimo)
|
|
{
|
|
ds.Tables["cliente"].Rows.Add("Cliente", string.Format("{0} {1}", cliente.cognome, cliente.nome));
|
|
ds.Tables["cliente"].Rows.Add("Codice fiscale/Part. IVA", cliente.partitaIva != null ? cliente.partitaIva : cliente.codiceFiscale);
|
|
}
|
|
|
|
DataTable dtSospeso = null;
|
|
String sospeso = "";
|
|
|
|
// ************************************ Fix per clienti sempre sospesi 31/08/2021 - Andrea *****************************************************************//
|
|
// String query = "Select chiaveCliente from vRfaMinusPerPB where codFis = '" + (cliente.partitaIva != null ? cliente.partitaIva : cliente.codiceFiscale) + "'";
|
|
String query = "Select chiaveCliente from vRfaMinusPerPB where chiavePB = '" + (chiavePB.ToString()) + "' and codFis = '" + (cliente.partitaIva != null ? cliente.partitaIva : cliente.codiceFiscale) + "'";
|
|
// *******************************************************************************************************************************************************//
|
|
|
|
dtSospeso = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, query, null);
|
|
if (dtSospeso.Rows.Count > 0 && !DBNull.Value.Equals(dtSospeso.Rows[0][0]))
|
|
{//è sospeso si comporta come base+
|
|
if (!cliente.contrattoReport.Contains("sospeso"))//controllo se già contiene l'indicazione
|
|
{
|
|
sospeso = " sospeso";
|
|
}
|
|
}
|
|
|
|
if (cliente.descProfiloEC == null)
|
|
{
|
|
string contrattoDiConsulenza = "";
|
|
if ("Nessun Contratto".Equals(cliente.contrattoReport))
|
|
contrattoDiConsulenza = cliente.contrattoReport;
|
|
else
|
|
{
|
|
contrattoDiConsulenza = cliente.contrattoReport + sospeso + " del " + cliente.dtSottoscrizione.ToString("dd/MM/yyyy");
|
|
}
|
|
ds.Tables["cliente"].Rows.Add("Contratto di consulenza", contrattoDiConsulenza);
|
|
ds.Tables["cliente"].Rows.Add("Profilo finanziario", string.Format("{0}", cliente.descProfilo));
|
|
|
|
if (delegato != null)
|
|
ds.Tables["cliente"].Rows.Add("Legale Rappresentante /<BR>Delegato", string.Format("{0} {1}", delegato.cognomeDelegato, delegato.nomeDelegato));
|
|
}
|
|
else
|
|
{
|
|
|
|
ds.Tables.Add(new DataTable("dtClienteDueColonne"));
|
|
var dtClienteDueColonne = ds.Tables["dtClienteDueColonne"];
|
|
dtClienteDueColonne.Columns.Add(new DataColumn("controvalore"));
|
|
dtClienteDueColonne.Columns.Add(new DataColumn("valore"));
|
|
dtClienteDueColonne.Columns.Add(new DataColumn("descrizione"));
|
|
dtClienteDueColonne.Columns.Add(new DataColumn("val"));
|
|
|
|
DataRow row = dtClienteDueColonne.NewRow();
|
|
dtClienteDueColonne.Rows.Add(row);
|
|
dtClienteDueColonne.Rows[0]["controvalore"] = "Contratto di consulenza";
|
|
dtClienteDueColonne.Rows[0]["valore"] = cliente.contrattoReport + sospeso;
|
|
dtClienteDueColonne.Rows[0]["descrizione"] = "Data sottoscrizione";
|
|
dtClienteDueColonne.Rows[0]["val"] = cliente.dtSottoscrizione.ToString("dd/MM/yyyy");
|
|
DataRow row2 = dtClienteDueColonne.NewRow();
|
|
dtClienteDueColonne.Rows.Add(row2);
|
|
dtClienteDueColonne.Rows[1]["controvalore"] = "Profilo finanziario";
|
|
dtClienteDueColonne.Rows[1]["valore"] = cliente.descProfilo;
|
|
dtClienteDueColonne.Rows[1]["descrizione"] = "Profilo esperienza e conoscenza";
|
|
dtClienteDueColonne.Rows[1]["val"] = cliente.descProfiloEC;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Rischio del cliente e del Patrimonio Casa
|
|
|
|
ds.Tables["rischio"].Columns.Add(new DataColumn("Rischio", typeof(string)));
|
|
ds.Tables["rischio"].Columns.Add(new DataColumn("ProfiloFinanziario", typeof(string)));
|
|
|
|
ds.Tables["rischio"].Columns.Add(new DataColumn("PatrimonioCasa", typeof(string)));
|
|
ds.Tables["rischio"].Rows.Add("Rischio Mercato (VaR %)",
|
|
questionarioCliente != null ? Helper.FormatDecimal(questionarioCliente.profileVarMax.ToString(), 2) : "n.a.",
|
|
rischioPatrimonioCasa.varDecodificato);
|
|
ds.Tables["rischio"].Rows.Add("Rischio Credito",
|
|
questionarioCliente != null ? Helper.CapitalizeWords(questionarioCliente.profileClassRiskMax) : "n.a.",
|
|
(rischioPatrimonioCasa.rischioCreditoDecodificato.ToUpper().Contains("CLASSE")) ? Helper.CapitalizeWords(rischioPatrimonioCasa.rischioCreditoDecodificato) : rischioPatrimonioCasa.rischioCreditoDecodificato);
|
|
|
|
#endregion
|
|
|
|
#region Patrimonio complessivo
|
|
|
|
ds.Tables["patrimonio"].Columns.Add(new DataColumn("Descrizione", typeof(string)));
|
|
ds.Tables["patrimonio"].Columns.Add(new DataColumn("Valore", typeof(string)));
|
|
|
|
var testoPatrimonio = string.Format("Patrimonio complessivo (€){0}", GetNote1().Length > 0 ? "*" : string.Empty);
|
|
ds.Tables["patrimonio"].Rows.Add(testoPatrimonio, Helper.FormatCurrency(datiSeiUnico.CMP_TOTALEPOSITIVO.ToString()));
|
|
|
|
#endregion
|
|
|
|
#region Elenco patrimoni per grafico a barre
|
|
|
|
ds.Tables["elencoPatrimonio"].Columns.Add(new DataColumn("Patrimonio", typeof(string)));
|
|
ds.Tables["elencoPatrimonio"].Columns.Add(new DataColumn("Red", typeof(int)));
|
|
ds.Tables["elencoPatrimonio"].Columns.Add(new DataColumn("Green", typeof(int)));
|
|
ds.Tables["elencoPatrimonio"].Columns.Add(new DataColumn("Blue", typeof(int)));
|
|
ds.Tables["elencoPatrimonio"].Columns.Add(new DataColumn("Controvalore", typeof(decimal)));
|
|
ds.Tables["elencoPatrimonio"].Columns.Add(new DataColumn("ProQuota", typeof(decimal)));
|
|
ds.Tables["elencoPatrimonio"].Columns.Add(new DataColumn("Percentuale", typeof(decimal)));
|
|
ds.Tables["elencoPatrimonio"].Columns.Add(new DataColumn("Ordinamento", typeof(int)));
|
|
|
|
if (dataPatrimonioComplessivo.elencoSlice != null)
|
|
{
|
|
foreach (var item in dataPatrimonioComplessivo.elencoSlice)
|
|
{
|
|
var mapDisplayInfo = displayInfo.Where(l => l.key == item.codice).ToArray();
|
|
string titolo = "";
|
|
if (item.descrizione.Contains("SanPaolo") || item.descrizione.Contains("Fideuram") || item.descrizione.Contains("Altri"))
|
|
{
|
|
bool CASA_NEG = (datiSeiUnico.CASA_CCN + datiSeiUnico.CASA_GPELIGO) != 0;
|
|
if (item.descrizione.Contains("SanPaolo") || item.descrizione.Contains("Fideuram"))
|
|
titolo = string.Format(item.descrizione + "{0}", CASA_NEG ? "*" : "");
|
|
else
|
|
if (item.descrizione.Contains("Altri"))
|
|
titolo = string.Format(item.descrizione + "{0}", (datiSeiUnico.TRZ_CCN != 0) ? "*" : "");
|
|
}
|
|
else
|
|
titolo = item.descrizione;
|
|
var colore = new ColorPDF(mapDisplayInfo[0].value.fill);
|
|
var ordinamento = mapDisplayInfo[0].value.order;
|
|
|
|
//ds.Tables["elencoPatrimonio"].Rows.Add(titolo, colore.Red, colore.Green, colore.Blue, item.ctv, item.peso * 100, ordinamento);
|
|
// Provvisorio 20181123
|
|
ds.Tables["elencoPatrimonio"].Rows.Add(titolo, colore.Red, colore.Green, colore.Blue, item.ctv, item.proQuota, item.peso * 100, ordinamento);
|
|
|
|
}
|
|
|
|
ds.Tables["elencoPatrimonio"].AsEnumerable().OrderBy(r => r.Field<int>("Ordinamento"));
|
|
}
|
|
#endregion
|
|
|
|
return ds;
|
|
}
|
|
|
|
//public virtual string getTesto1()
|
|
//{
|
|
// string testo = "Sono riportati di seguito le principali informazioni anagrafiche e ";
|
|
// testo += "il profilo finanziario del cliente: il livello di rischio del patrimonio $/Banca/$ in termini di ";
|
|
// testo += "Rischio Mercato (VaR) e Rischio Credito è confrontato con i livelli massimi associati al suo profilo finanziario.";
|
|
// return testo.Replace("$/Banca/$", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment));
|
|
//}
|
|
|
|
//public virtual string getTesto2()
|
|
//{
|
|
// string testo = "Il grafico rappresenta la ripartizione del suo patrimonio in finanziario ($/Banca/$ e altri Istituti), immobiliare, aziendale e altro.";
|
|
// return testo.Replace("$/Banca/$", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment));
|
|
|
|
//}
|
|
|
|
//public virtual string GetNote1()
|
|
//{
|
|
|
|
// string nota = "";
|
|
// string token = "";
|
|
|
|
|
|
// decimal CCN_CASA = datiSeiUnico.CASA_CCN;
|
|
// decimal GPELIGOFONDI_CASA = datiSeiUnico.CASA_GPELIGOFONDI;
|
|
// decimal GPELIGTITOLI_CASA = datiSeiUnico.CASA_GPELIGTITOLI;
|
|
// decimal CCN_TERZI = datiSeiUnico.TRZ_CCN;
|
|
|
|
|
|
// if (CCN_CASA != 0 || GPELIGOFONDI_CASA != 0 || GPELIGTITOLI_CASA != 0 || CCN_TERZI != 0)
|
|
// {
|
|
// nota += token + "Il controvalore esclude il saldo negativo";
|
|
// token = " ";
|
|
// if (CCN_CASA != 0)
|
|
// {
|
|
// nota += token + datiSeiUnico.FormatDecimal("dei conti correnti ({0} €)", CCN_CASA);
|
|
// token = ", ";
|
|
// }
|
|
// if (GPELIGOFONDI_CASA != 0)
|
|
// {
|
|
// nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante la GP Eligo Fondi ({0} €)", GPELIGOFONDI_CASA);
|
|
// token = ", ";
|
|
// }
|
|
// if (GPELIGTITOLI_CASA != 0)
|
|
// {
|
|
// nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante la GP Eligo Titoli ({0} €)", GPELIGTITOLI_CASA);
|
|
// token = ", ";
|
|
// }
|
|
// token = " ";
|
|
// if (CCN_CASA != 0 || GPELIGOFONDI_CASA != 0 || GPELIGTITOLI_CASA != 0)
|
|
// {
|
|
// nota += token + "del patrimonio $/Banca/$";
|
|
// token = ", ";
|
|
// }
|
|
// if (CCN_TERZI != 0)
|
|
// {
|
|
// nota += token + datiSeiUnico.FormatDecimal("dei conti correnti ({0} €) del patrimonio altri Istituti", CCN_TERZI);
|
|
// token = ", ";
|
|
// }
|
|
// nota += ".";
|
|
// token = " ";
|
|
// }
|
|
|
|
// nota = !nota.Equals("") ? "(*) " + nota : nota;
|
|
// return datiSeiUnico.FormatBanca(nota);
|
|
|
|
//}
|
|
|
|
|
|
}
|
|
}
|