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 { /// /// Scheda 2. Sintesi Cliente. IdSezione 45 /// 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().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 /
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("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().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 /
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("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); //} } }