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);
//}
}
}