using ceTe.DynamicPDF; using Consulenza.ReportCommon; using Consulenza.ReportWriter.Business; using Consulenza.ReportWriter.Business.CHART_PDF; using Consulenza.ReportWriter.Business.Entity; using Consulenza.ReportWriter.Business.OBJ_PDF; using System; using System.Collections.Generic; using System.Data; using System.Linq; namespace Consulenza.ReportWriter.Manager.Section.Unica { /// /// Scheda 2. Sintesi Cliente. IdSezione 45 /// public class S2 : Entity.Section { public S2(EnvironmentFacade environmentFacade, int idSection) : base(environmentFacade, idSection) { try { Draw(); } catch (Exception ex) { SectionLogger.Write("S2", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment); } } //protected override sealed void Draw() //{ // var dati = GetDataSet(); // AddElement(new SpacePDF(15)); // #region Testo introduttivo grafico // AddElement(new FormattedTextAreaPDF(getTesto1(), EnvironmentFacade.RendererFacade.XLeftLimit) {FontSize=7, TextHorizontalAlign = TextAlign.Justify }); // #endregion // AddElement(new SpacePDF(15)); // #region Tabella info del cliente // var tabellaInfoCliente = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["cliente"]) // { // Style = Style.ConsulenzaUnica, // Header = false, // Footer = false, // AlternateRow = false, // RowHeight = 25, // WidthSeparationLines = 0 // }; // tabellaInfoCliente.Columns.Add(new ColumnPDF("descrizione", 150, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo, "descrizione", string.Empty) {HeaderFontSize=7, FontSize=7}); // tabellaInfoCliente.Columns.Add(new ColumnPDF("valore", 370, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "valore", string.Empty) { HeaderFontSize = 7, PaddingLeft = 5, FontSize = 7 }); // AddElement(tabellaInfoCliente); // #endregion // AddElement(new SpacePDF(15)); // #region Tabella rischio // var tabellaRischio = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["rischio"]) // { // Style = Style.ConsulenzaUnica, // Footer = false, // AlternateRow = false, // ShowBorderLastLine = true, // ShowBorderHeader = true, // WidthSeparationLines = 0, // YOffset = 10, // RowHeight = 25 // }; // tabellaRischio.Columns.Add(new ColumnPDF("Rischio", 173, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo, "Rischio", string.Empty) { HeaderFontSize = 7, FontSize = 7, HeaderBackgroundColor = ColorPDF.Bianco}); // tabellaRischio.Columns.Add(new ColumnPDF("ProfiloFinanziario", 172, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "ProfiloFinanziario", "Limite massimo profilo finanziario") { HeaderFontSize = 7, FontSize = 7, HeaderPaddingLeft = 7}); // string colonna = "Patrimonio $/Banca/$".Replace("$/Banca/$", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment)).Replace("SIM", ""); // tabellaRischio.Columns.Add(new ColumnPDF("PatrimonioCasa", 173, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "PatrimonioCasa", colonna) { HeaderFontSize = 7, FontSize = 7, HeaderPaddingLeft = 7}); // int i = 0; // foreach (DataRow ro in dati.Tables["rischio"].Rows) // { // tabellaRischio.Cells[1, i].HorizontalAlignment = // tabellaRischio.Cells[2, i].HorizontalAlignment = HorizontalAlignmentType.Destra; // i++; // } // AddElement(tabellaRischio); // #endregion // if (dati.Tables["elencoPatrimonio"].Rows.Count > 0) // { // AddElement(new SpacePDF(15)); // #region Testo introduttivo grafico // AddElement(new FormattedTextAreaPDF(getTesto2(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7 }); // #endregion // AddElement(new SpacePDF(15)); // #region Tabella patrimonio complessivo // var tabellaPatrimonio = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["patrimonio"]) // { // Style = Style.ConsulenzaUnica, // Header = false, // Footer = false, // AlternateRow = false, // ShowBorderLastLine = false, // RowHeight = 25 // }; // tabellaPatrimonio.Columns.Add(new ColumnPDF("descrizione", 150, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo, "descrizione", string.Empty) { FontSize = 7}); // tabellaPatrimonio.Columns.Add(new ColumnPDF("valore", 370, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "valore", string.Empty) { FontSize = 7, PaddingLeft = 5 }); // AddElement(tabellaPatrimonio); // #endregion // AddElement(new SpacePDF(15)); // #region Grafico a barre // int c=0; // bool FirstTwoRowsSumLinked=true; // foreach (DataRow item in dati.Tables["elencoPatrimonio"].Rows) // { // if (c < 2) // { // if (Convert.ToDouble(item.ItemArray[4].ToString()) == 0) // { // FirstTwoRowsSumLinked = false; // break; // } // } // c++; // } // if (dati.Tables["elencoPatrimonio"].Rows.Count > 0) // { // var graficoBarre = new StackedPDF(EnvironmentFacade.RendererFacade.XLeftLimit + 100, 1F) // { // HeightSingleBar = 40, // Width = 400, // MinorGridAxisY = true, // ShowLineAxisX = true, // ShowLineAxisY = true, // LabelFormatAxisY = FormatType.Decimale2, // DinamicFloatXEtichettaLateraleBarra = true, // FirstTwoRowsSumLinked = FirstTwoRowsSumLinked, // RemoveWhiteSpaceBetweenChartAndAxisX = true, // MarginAxisY = 0, // MarginAxisYFromTop = 0 // }; // var serieCollezione = new List { new Serie { Name = "Patrimoni", Border = true} }; // var dtGraficoBarre = dati.Tables["elencoPatrimonio"]; // foreach (DataRow item in dtGraficoBarre.Rows) // { // serieCollezione[0].Points.Add(new Point // { // Color = new ColorPDF(Convert.ToInt32(item["Red"]), Convert.ToInt32(item["Green"]), Convert.ToInt32(item["Blue"])), // Value = Convert.ToDouble(item["Controvalore"]), // ShowLabelAxisY = true, // LabelAxisY = Helper.FormatCurrency(item["Controvalore"].ToString()), // FontSizeLabelAxisY = 7, // FontBoldLabelAxisY = false, // //FontColorLabelAxisY = ColorPDF.Grigio_TitoloPiccoloImmobiliare // ShowLabelAxisX = true, // LabelAxisX = string.Format("{0}
({1})", item["Patrimonio"].ToString(), Helper.FormatPercentage(Convert.ToDecimal(item["Percentuale"]), 2)), // FontSizeLabelAxisX = 7, // //FontColorLabelAxisX = ColorPDF.Grigio_TitoloPiccoloImmobiliare, // }); // } // graficoBarre.SeriesCollection = serieCollezione; // AddElement(graficoBarre); // } // #endregion // #region Nota del PatrimonioCasa // if (GetNote1().Length > 0) // { // AddElement(new SpacePDF(30)); // AddElement(new FormattedTextAreaPDF(GetNote1(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6 }); // } // #endregion // } //} protected override sealed void Draw() { var dati = GetDataSet(); AddElement(new SpacePDF(15)); #region Testo introduttivo grafico AddElement(new FormattedTextAreaPDF(getTesto1(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = TextAlign.Justify }); #endregion AddElement(new SpacePDF(15)); #region Tabella info del cliente var tabellaInfoCliente = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["cliente"]) { Style = Style.ConsulenzaUnica, Header = false, Footer = false, AlternateRow = false, RowHeight = 25, WidthSeparationLines = 0 }; tabellaInfoCliente.Columns.Add(new ColumnPDF("descrizione", 150, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo, "descrizione", string.Empty) { HeaderFontSize = 7, FontSize = 7 }); tabellaInfoCliente.Columns.Add(new ColumnPDF("valore", 370, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "valore", string.Empty) { HeaderFontSize = 7, PaddingLeft = 5, FontSize = 7 }); AddElement(tabellaInfoCliente); if (dati.Tables.Contains("dtClienteDueColonne")) { var tabellaCliente = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["dtClienteDueColonne"]) { Style = Style.ConsulenzaUnica, Header = false, Footer = false, AlternateRow = false, RowHeight = 25, WidthSeparationLines = 0 }; tabellaCliente.Columns.Add(new ColumnPDF("controvalore", 150, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo, "controvalore", string.Empty) { HeaderFontSize = 7, FontSize = 7 }); tabellaCliente.Columns.Add(new ColumnPDF("valore", 110, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "valore", string.Empty) { HeaderFontSize = 7, PaddingLeft = 5, FontSize = 7 }); tabellaCliente.Columns.Add(new ColumnPDF("descrizione", 150, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo, "descrizione", string.Empty) { HeaderFontSize = 7, PaddingLeft = 5, FontSize = 7 }); tabellaCliente.Columns.Add(new ColumnPDF("val", 110, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "val", string.Empty) { HeaderFontSize = 7, PaddingLeft = 5, FontSize = 7 }); tabellaCliente.Cells[2, 1].BackgroundColor = dati.Tables["dtClienteDueColonne"].Rows[1]["descrizione"].ToString() == "" ? ColorPDF.Bianco : ColorPDF.Standard_Grigio_SfondoColonnaTabella; tabellaCliente.Cells[1, 1].FontColor = ColorPDF.Nero; AddElement(tabellaCliente); } #endregion AddElement(new SpacePDF(15)); #region Tabella rischio var tabellaRischio = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["rischio"]) { Style = Style.ConsulenzaUnica, Footer = false, AlternateRow = false, ShowBorderLastLine = true, ShowBorderHeader = true, WidthSeparationLines = 0, YOffset = 10, RowHeight = 25 }; tabellaRischio.Columns.Add(new ColumnPDF("Rischio", 173, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo, "Rischio", string.Empty) { HeaderFontSize = 7, FontSize = 7, HeaderBackgroundColor = ColorPDF.Bianco }); tabellaRischio.Columns.Add(new ColumnPDF("ProfiloFinanziario", 172, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "ProfiloFinanziario", "Limite massimo profilo finanziario") { HeaderFontSize = 7, FontSize = 7, HeaderPaddingLeft = 7 }); string colonna = "Patrimonio $/Banca/$".Replace("$/Banca/$", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment)).Replace("SIM", ""); tabellaRischio.Columns.Add(new ColumnPDF("PatrimonioCasa", 173, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "PatrimonioCasa", colonna) { HeaderFontSize = 7, FontSize = 7, HeaderPaddingLeft = 7 }); int i = 0; foreach (DataRow ro in dati.Tables["rischio"].Rows) { tabellaRischio.Cells[1, i].HorizontalAlignment = tabellaRischio.Cells[2, i].HorizontalAlignment = HorizontalAlignmentType.Destra; i++; } AddElement(tabellaRischio); #endregion if (dati.Tables["elencoPatrimonio"].Rows.Count > 0) { AddElement(new SpacePDF(15)); #region Testo introduttivo grafico AddElement(new FormattedTextAreaPDF(getTesto2(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7 }); #endregion AddElement(new SpacePDF(15)); #region Tabella patrimonio complessivo var tabellaPatrimonio = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["patrimonio"]) { Style = Style.ConsulenzaUnica, Header = false, Footer = false, AlternateRow = false, ShowBorderLastLine = false, RowHeight = 25 }; tabellaPatrimonio.Columns.Add(new ColumnPDF("descrizione", 150, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo, "descrizione", string.Empty) { FontSize = 7 }); tabellaPatrimonio.Columns.Add(new ColumnPDF("valore", 370, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "valore", string.Empty) { FontSize = 7, PaddingLeft = 5 }); AddElement(tabellaPatrimonio); #endregion AddElement(new SpacePDF(15)); #region Grafico a barre int c = 0; bool FirstTwoRowsSumLinked = true; foreach (DataRow item in dati.Tables["elencoPatrimonio"].Rows) { if (c < 2) { if (Convert.ToDouble(item.ItemArray[4].ToString()) == 0) { FirstTwoRowsSumLinked = false; break; } } c++; } Int64 iTotale = 0; string sTotale = ""; string sProquota = ""; bool _RemoveWhiteSpaceToTheRightAxisX = true; if (dati.Tables["elencoPatrimonio"].Rows.Count > 0) { var graficoBarre = new StackedPDF(EnvironmentFacade.RendererFacade.XLeftLimit + 100, 1F) { HeightSingleBar = 40, Width = 400, MinorGridAxisY = true, ShowLineAxisX = true, ShowLineAxisY = true, LabelFormatAxisY = FormatType.Intero, DinamicFloatXEtichettaLateraleBarra = true, FirstTwoRowsSumLinked = FirstTwoRowsSumLinked, RemoveWhiteSpaceBetweenChartAndAxisX = _RemoveWhiteSpaceToTheRightAxisX, MarginAxisY = 0, MarginAxisYFromTop = 0, }; var serieCollezione = new List { new Serie { Name = "Patrimoni", Border = true }, new Serie { Name = "ProQuota", Border = true } }; var dtGraficoBarre = dati.Tables["elencoPatrimonio"]; double dDelta = 0; foreach (DataRow item in dtGraficoBarre.Rows) { if (item["Patrimonio"].ToString().ToUpper() == "IMMOBILIARE" && (Convert.ToDouble(item["Controvalore"]) != Convert.ToDouble(item["Proquota"]))) { dDelta = Convert.ToDouble(item["Controvalore"]) - Convert.ToDouble(item["Proquota"]); iTotale = Convert.ToInt64(item["Controvalore"]); sTotale = Helper.FormatCurrency((Convert.ToDouble(item["Controvalore"])).ToString()); serieCollezione[0].Points.Add(new Point { // Proquota Color = new ColorPDF(148, 180, 198), Value = Convert.ToDouble(item["Proquota"]), ShowLabelAxisY = false, LabelAxisY = Helper.FormatCurrency((Convert.ToDouble(item["Controvalore"])).ToString()), FontSizeLabelAxisY = 7, FontBoldLabelAxisY = false, //FontColorLabelAxisY = ColorPDF.Grigio_TitoloPiccoloImmobiliare ShowLabelAxisX = true, LabelAxisX = string.Format("{0}
({1})", item["Patrimonio"].ToString(), Helper.FormatPercentage(Convert.ToDecimal(item["Percentuale"]), 2)), FontSizeLabelAxisX = 7, //FontColorLabelAxisX = ColorPDF.Grigio_TitoloPiccoloImmobiliare, }); sProquota = Helper.FormatCurrency(item["Proquota"].ToString()); serieCollezione[1].Points.Add(new Point { // Totale - Proquota Color = new ColorPDF(Convert.ToInt32(item["Red"]), Convert.ToInt32(item["Green"]), Convert.ToInt32(item["Blue"])), Value = (Convert.ToDouble(item["Controvalore"]) - Convert.ToDouble(item["Proquota"])), ShowLabelAxisY = false, LabelAxisY = Helper.FormatCurrency((Convert.ToDouble(item["Proquota"])).ToString()), FontSizeLabelAxisY = 7, FontBoldLabelAxisY = false, //FontColorLabelAxisY = ColorPDF.Grigio_TitoloPiccoloImmobiliare ShowLabelAxisX = false, LabelAxisX = string.Format("{0}
({1})", item["Patrimonio"].ToString(), Helper.FormatPercentage(Convert.ToDecimal(item["Percentuale"]), 2)), FontSizeLabelAxisX = 7, //FontColorLabelAxisX = ColorPDF.Grigio_TitoloPiccoloImmobiliare, }); } else { serieCollezione[0].Points.Add(new Point { Color = new ColorPDF(Convert.ToInt32(item["Red"]), Convert.ToInt32(item["Green"]), Convert.ToInt32(item["Blue"])), Value = Convert.ToDouble(item["Controvalore"]), ShowLabelAxisY = true, LabelAxisY = Helper.FormatCurrency(Convert.ToDouble(item["Controvalore"]).ToString()), FontSizeLabelAxisY = 7, FontBoldLabelAxisY = false, //FontColorLabelAxisY = ColorPDF.Grigio_TitoloPiccoloImmobiliare ShowLabelAxisX = true, LabelAxisX = string.Format("{0}
({1})", item["Patrimonio"].ToString(), Helper.FormatPercentage(Convert.ToDecimal(item["Percentuale"]), 2)), FontSizeLabelAxisX = 7, //FontColorLabelAxisX = ColorPDF.Grigio_TitoloPiccoloImmobiliare, }); serieCollezione[1].Points.Add(new Point { Color = new ColorPDF(148, 180, 198), Value = 0, ShowLabelAxisY = false, LabelAxisY = Helper.FormatCurrency("0,00"), FontSizeLabelAxisY = 7, FontBoldLabelAxisY = false, //FontColorLabelAxisY = ColorPDF.Grigio_TitoloPiccoloImmobiliare ShowLabelAxisX = false, LabelAxisX = string.Format("{0}
({1})", item["Patrimonio"].ToString(), Helper.FormatPercentage(Convert.ToDecimal(item["Percentuale"]), 2)), FontSizeLabelAxisX = 7, //FontColorLabelAxisX = ColorPDF.Grigio_TitoloPiccoloImmobiliare, }); } } #region Commento 20181119 - TEST per Evolutiva ProQuota //if (dati.Tables["elencoPatrimonio"].Rows.Count > 0) //{ // var graficoBarre = new StackedPDF(EnvironmentFacade.RendererFacade.XLeftLimit + 100, 1F) // { // HeightSingleBar = 40, // Width = 400, // MinorGridAxisY = true, // ShowLineAxisX = true, // ShowLineAxisY = true, // LabelFormatAxisY = FormatType.Decimale2, // DinamicFloatXEtichettaLateraleBarra = true, // FirstTwoRowsSumLinked = FirstTwoRowsSumLinked, // RemoveWhiteSpaceBetweenChartAndAxisX = true, // MarginAxisY = 0, // MarginAxisYFromTop = 0 // }; //var serieCollezione = new List { new Serie { Name = "Patrimoni", Border = true} }; //var dtGraficoBarre = dati.Tables["elencoPatrimonio"]; //foreach (DataRow item in dtGraficoBarre.Rows) //{ // serieCollezione[0].Points.Add(new Point // { // Color = new ColorPDF(Convert.ToInt32(item["Red"]), Convert.ToInt32(item["Green"]), Convert.ToInt32(item["Blue"])), // Value = Convert.ToDouble(item["Controvalore"]), // ShowLabelAxisY = true, // LabelAxisY = Helper.FormatCurrency(item["Controvalore"].ToString()), // FontSizeLabelAxisY = 7, // FontBoldLabelAxisY = false, // //FontColorLabelAxisY = ColorPDF.Grigio_TitoloPiccoloImmobiliare // ShowLabelAxisX = true, // LabelAxisX = string.Format("{0}
({1})", item["Patrimonio"].ToString(), Helper.FormatPercentage(Convert.ToDecimal(item["Percentuale"]), 2)), // FontSizeLabelAxisX = 7, // //FontColorLabelAxisX = ColorPDF.Grigio_TitoloPiccoloImmobiliare, // }); //} #endregion graficoBarre.SeriesCollection = serieCollezione; AddElement(graficoBarre); //var maxValue = serieCollezione[0].Points.Max(x => x.Value); double maxValue = Helper.Round(graficoBarre.GetMaximumValuePoints(), false); double percentuale_Y = (graficoBarre.GetMaximumValuePoints() * 100) / maxValue; Int32 iLabel_X = Convert.ToInt32((percentuale_Y * graficoBarre.Width) / 100) + Convert.ToInt16(EnvironmentFacade.RendererFacade.XLeftLimit) + 70; //450; if (iLabel_X > 435) iLabel_X = 435; Int32 iLabel_Y = 0; if (GetOption().ReportAnonimo) iLabel_Y = 523; else iLabel_Y = 575; //AddElement(new FormattedTextAreaPDF("Immobiliare", iLabel_X) //{ // FontSize = 7, // //Y = 525 // Y = 685 //}); #region Immagini e Label per Proquota if (dDelta > 0 && dDelta != Convert.ToDouble(sTotale)) { var imageLabelTotale = new ImagePDF(iLabel_X, 0.8F, "LabelTotale.png", Align.Left, iLabel_Y); var imageLabelProquota = new ImagePDF(iLabel_X, 0.8F, "LabelProquota.png", Align.Left, iLabel_Y + 12); AddElement(imageLabelProquota); AddElement(imageLabelTotale); AddElement(new FormattedTextAreaPDF("Totale: " + sTotale, iLabel_X + 13) { FontSize = 7, Y = iLabel_Y, //Y = 700 }); AddElement(new FormattedTextAreaPDF("Pro quota: " + sProquota, iLabel_X + 13) { FontSize = 7, Y = iLabel_Y + 12, //Y = 710 }); } else { AddElement(new FormattedTextAreaPDF(sTotale, iLabel_X + 13) { FontSize = 7, Y = iLabel_Y, //Y = 700 }); } #endregion } #endregion #region Nota del PatrimonioCasa if (GetNote1().Length > 0) { //AddElement(new SpacePDF(30)); if (GetOption().ReportAnonimo) AddElement(new SpacePDF(35)); else AddElement(new SpacePDF(35)); AddElement(new FormattedTextAreaPDF(GetNote1(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6 }); } #endregion } } protected sealed override DataTable GetDataTable() { return null; } //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 cliente = datiSeiUnico.clienteUnit().anagrafica; // #endregion // //Adriano // #region Cliente professionale // bool profiloProfessionale; // bool profiloAggressivo; // bool profiloProfessionaleAggressivo; // Profiler profiler = new Profiler(cliente); // profiloProfessionale = profiler.ProfiloProfessionale; // profiloAggressivo = profiler.ProfiloAggressivo; // profiloProfessionaleAggressivo = profiler.ProfiloProfessionaleAggressivo; // #endregion // //--Adriano // #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 // { // //Adriano 7/9/17 9.14 modificato per Clienti Professionali // //Per il momento serve solo per far stampare il report secondo le richieste per i Clienti Professionali, in seguito dovrebbe essere lo stesso contratto decodificato correttamente se censito nel DB // //if (profiloProfessionale) // // contrattoDiConsulenza = cliente.contrattoReport + " Professionale del " + cliente.dtSottoscrizione.ToString("dd/MM/yyyy"); // //else // contrattoDiConsulenza = cliente.contrattoReport + " del " + cliente.dtSottoscrizione.ToString("dd/MM/yyyy"); // } // //--Adriano // //originale // //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)); // } // else // { // ds.Tables["cliente"].Rows.Add("Contratto di consulenza", contrattoDiConsulenza); // ds.Tables["cliente"].Rows.Add("Profilo finanziario", string.Format("{0}", cliente.descProfilo)); // } // #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))); // //Adriano Per i clienti professionali il rischio mercato sarà 50 (profileVarMax) // //Per il momento serve solo per la stampa Report secondo le richieste. In seguito il dato dovrebbe arrivare direttamente corretto (se previsto nel DB) // //if (profiloProfessionaleAggressivo) // // ds.Tables["rischio"].Rows.Add("Rischio Mercato (VaR %)", // // questionarioCliente != null ? Helper.FormatDecimal(50.ToString(), 2) : "n.a.", // // rischioPatrimonioCasa.varDecodificato); // //else // ds.Tables["rischio"].Rows.Add("Rischio Mercato (VaR %)", // questionarioCliente != null ? Helper.FormatDecimal(questionarioCliente.profileVarMax.ToString(), 2) : "n.a.", // rischioPatrimonioCasa.varDecodificato); // //--Adriano // //originale // //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("dtClienteDueColonne")); 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; /**************************** Fix per clienti sempre sospesi 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 cliente = datiSeiUnico.clienteUnit().anagrafica; #endregion //Adriano #region Cliente professionale bool profiloProfessionale; bool profiloAggressivo; bool profiloProfessionaleAggressivo; Profiler profiler = new Profiler(cliente); profiloProfessionale = profiler.ProfiloProfessionale; profiloAggressivo = profiler.ProfiloAggressivo; profiloProfessionaleAggressivo = profiler.ProfiloProfessionaleAggressivo; #endregion //--Adriano #region Dati del Cliente ds.Tables["cliente"].Columns.Add(new DataColumn("Descrizione", typeof(string))); ds.Tables["cliente"].Columns.Add(new DataColumn("Valore", typeof(string))); 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")); /* string contrattoDiConsulenza = ""; if ("Nessun Contratto".Equals(cliente.contrattoReport)) contrattoDiConsulenza = cliente.contrattoReport; else { //Adriano 7/9/17 9.14 modificato per Clienti Professionali //Per il momento serve solo per far stampare il report secondo le richieste per i Clienti Professionali, in seguito dovrebbe essere lo stesso contratto decodificato correttamente se censito nel DB //if (profiloProfessionale) // contrattoDiConsulenza = cliente.contrattoReport + " Professionale del " + cliente.dtSottoscrizione.ToString("dd/MM/yyyy"); //else contrattoDiConsulenza = cliente.contrattoReport + " del " + cliente.dtSottoscrizione.ToString("dd/MM/yyyy"); } //--Adriano //originale //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)); } 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"; } } 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))); //Adriano Per i clienti professionali il rischio mercato sarà 50 (profileVarMax) //Per il momento serve solo per la stampa Report secondo le richieste. In seguito il dato dovrebbe arrivare direttamente corretto (se previsto nel DB) //if (profiloProfessionaleAggressivo) // ds.Tables["rischio"].Rows.Add("Rischio Mercato (VaR %)", // questionarioCliente != null ? Helper.FormatDecimal(50.ToString(), 2) : "n.a.", // rischioPatrimonioCasa.varDecodificato); //else ds.Tables["rischio"].Rows.Add("Rischio Mercato (VaR %)", questionarioCliente != null ? Helper.FormatDecimal(questionarioCliente.profileVarMax.ToString(), 2) : "n.a.", rischioPatrimonioCasa.varDecodificato); //--Adriano //originale //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; // 20181009 AC decimal TUOFOGLIO_CASA = datiSeiUnico.CASA_TUOFOGLIO; //--20181009 AC // 20181009 AC //if (CCN_CASA != 0 || GPELIGOFONDI_CASA != 0 || GPELIGTITOLI_CASA != 0 || CCN_TERZI != 0) if (CCN_CASA != 0 || GPELIGOFONDI_CASA != 0 || GPELIGTITOLI_CASA != 0 || CCN_TERZI != 0 || TUOFOGLIO_CASA != 0) //--20181009 AC { nota += token + "Il controvalore esclude il saldo negativo"; token = " "; if (CCN_CASA != 0) { nota += token + datiSeiUnico.FormatDecimal("dei conti correnti ({0} €)", CCN_CASA); token = ", "; } // 20181009 AC if (TUOFOGLIO_CASA != 0) { nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante Il Mio Foglio ({0} €)", TUOFOGLIO_CASA); token = ", "; } //--20181009 AC 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 || TUOFOGLIO_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); } } }