using System; using Consulenza.ReportWriter.Business; using Consulenza.ReportWriter.Business.OBJ_PDF; using System.Data; using Consulenza.ReportCommon; using System.Collections.Generic; using Consulenza.ReportWriter.Business.CHART_PDF; using Consulenza.ReportWriter.Business.Entity; using System.Linq; namespace Consulenza.ReportWriter.Manager.Section.Unica { /// /// S78.PropostaDiversificazione idSezione = 237 /// public class S78 : Entity.Section { private bool _visualizzaSintesiComponenti; private bool _visualizzaDettaglioComponenti; private bool _presenzaNotaPortafoglioAttuale = false; private bool _presenzaNotaPortafoglioProposto = false; private bool _stampaNota = false; private string _asteriscoAttuale = ""; private string _asteriscoProposto = ""; public S78(EnvironmentFacade environmentFacade, int idSection) : base(environmentFacade, idSection) { try { //_visualizzaAltriIstituti = GetOption().Valore; _visualizzaSintesiComponenti = GetOption().Valore; _visualizzaDettaglioComponenti = GetOption().Valore; Draw(); } catch (Exception ex) { SectionLogger.Write("S78", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment); } } protected override sealed void Draw() { var dati = GetDataSet(); var testi = GetText(); var nota = Helper.ReplaceVariables(GetNote(), EnvironmentFacade.ReportEnvironment); var series = new List(); float axisWidth = 0; float Y1TabellaDiversificazionePortafoglio = 225f; float Y2TabellaDiversificazionePortafoglio = 288f; float Y1TabellaSintesiComponentiAttuale = Y2TabellaDiversificazionePortafoglio + 178f; float Y2TabellaSintesiComponentiProposto = Y2TabellaDiversificazionePortafoglio + 274f; float Y1TabellaDettaglioComponentiAttuale = 298f; //float Y2TabellaDettaglioComponentiProposto = 585f; float Y2TabellaDettaglioComponentiProposto = 522f; _asteriscoAttuale = _presenzaNotaPortafoglioAttuale ? "*" : ""; _asteriscoProposto = _presenzaNotaPortafoglioProposto ? "*" : ""; _stampaNota = _presenzaNotaPortafoglioAttuale || _presenzaNotaPortafoglioProposto; string portafoglioAttuale = dati.Tables["Portafoglio"].Rows[0]["Controvalore"].ToString(); string portafoglioProposto = dati.Tables["Portafoglio"].Rows[1]["Controvalore"].ToString(); AddElement(new SpacePDF(20) { AutoIncrementYWritable = true }); #region Sezione Diversificazione Portafoglio #region Testo Introduttivo Sezione Diversificazione Portafoglio var testoIntroPortafoglio = string.Empty; testoIntroPortafoglio = testi.Rows[0]["testo1"].ToString(); testoIntroPortafoglio = Helper.ReplaceVariables(testoIntroPortafoglio, EnvironmentFacade.ReportEnvironment); var textArea = new FormattedTextAreaPDF(testoIntroPortafoglio, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, AutoIncrementYWritable = true }; AddElement(new FormattedTextAreaPDF(testoIntroPortafoglio, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, AutoIncrementYWritable = true }); AddElement(new SpacePDF(20)); #endregion Testo Introduttivo Sezione Diversificazione Portafoglio #region Tabella Diversificazione Portafoglio int i = 0; DataTable dtPortafoglio = dati.Tables["Portafoglio"]; var tabellaDiversificazionePortafoglio = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dtPortafoglio) { Style = Style.ConsulenzaUnica, AlternateRow = false, ShowSeparationLines = true, RowHeight = 30, Footer = false, HeaderHeight = 30, HideLastSeparationLine = false, AdditionalSpaceBetweenHeadersAndTable = 3 }; tabellaDiversificazionePortafoglio.Columns.Add(new ColumnPDF("Portafoglio", 110, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Portafoglio", "Portafoglio") { HeaderFontSize = 7, PaddingRight = 4 }); tabellaDiversificazionePortafoglio.Columns.Add(new ColumnPDF("ControvaloreAttuale", 115, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvalore", "Controvalore (€)") { PaddingRight = 15, HeaderFontSize = 7 }); tabellaDiversificazionePortafoglio.Columns.Add(new ColumnPDF("GradoCopertura", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "GradoCopertura", "Grado di copertura
(%)") { PaddingRight = 15, HeaderFontSize = 7 }); tabellaDiversificazionePortafoglio.Columns.Add(new ColumnPDF("DiversificazioneObject", 225, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, "DiversificazionePortafoglio", "Diversificazione di portafoglio") { VerticalAlignment = VerticalAlignmentType.Centrato, HeaderFontSize = 7, FontSize = 7, DeltaYContent = 6, HeaderPaddingLeft = 10 }); var list = new List(); list.Add(Convert.ToDouble(dtPortafoglio.AsEnumerable().Max(x => x["DiversificazionePortafoglio"]))); //var valoreMassimo = (float)Helper.Round(list.Max()); var valoreMassimo = 100.00f; float larghezzaBarra = 0; float larghezzaSpazioTestoPercentuale = 0; float larghezzaMinimaSpazioTestoPercentuale = 35; float deltaXBarra = 0; float width = tabellaDiversificazionePortafoglio.Columns[3].Width - 50; foreach (DataRow row in dtPortafoglio.Rows) { var colore = new ColorPDF(Convert.ToInt32(row["Red"]), Convert.ToInt32(row["Green"]), Convert.ToInt32(row["Blue"])); //Allineamento a destro delle colonne numeriche (Controvalore attuale e Grado di Copertura) tabellaDiversificazionePortafoglio.Cells[1, i].HorizontalAlignment = HorizontalAlignmentType.Destra; tabellaDiversificazionePortafoglio.Cells[2, i].HorizontalAlignment = HorizontalAlignmentType.Destra; //Aggiunge l'asterisco se c'è la nota row["Portafoglio"] += i == 0 ? _asteriscoAttuale : _asteriscoProposto; larghezzaBarra = Helper.GetWidthProportional((float)Convert.ToDecimal(row["DiversificazionePortafoglio"]), valoreMassimo, tabellaDiversificazionePortafoglio.Columns[3].Width - 35); larghezzaSpazioTestoPercentuale = tabellaDiversificazionePortafoglio.Columns[3].Width - larghezzaBarra; deltaXBarra = larghezzaBarra + 10; if (larghezzaSpazioTestoPercentuale < larghezzaMinimaSpazioTestoPercentuale) { deltaXBarra = -(tabellaDiversificazionePortafoglio.Columns[3].Width - larghezzaMinimaSpazioTestoPercentuale); larghezzaSpazioTestoPercentuale = larghezzaMinimaSpazioTestoPercentuale; } if (Convert.ToDouble(row["Controvalore"]) == 0) { tabellaDiversificazionePortafoglio.Cells[3, i].ValueObjectList = new List() { new RectanglePDF(20, 1 , ColorPDF.Bianco), new FormattedTextAreaPDF(row["DiversificazionePortafoglio"].ToString()=="0.00"? "0.00" : Helper.FormatDecimal(Convert.ToDecimal(row["DiversificazionePortafoglio"]).ToString(), 2), 0, larghezzaSpazioTestoPercentuale) { DeltaY = 3, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left, TextVerticalAlign = ceTe.DynamicPDF.VAlign.Center, DeltaX = deltaXBarra, FontSize = 7 } }; } else { tabellaDiversificazionePortafoglio.Cells[3, i].ValueObjectList = new List() { new RectanglePDF(20, larghezzaBarra , colore), new FormattedTextAreaPDF(row["DiversificazionePortafoglio"].ToString()=="0.00"? "0.00" : Helper.FormatDecimal(Convert.ToDecimal(row["DiversificazionePortafoglio"]).ToString(), 2), 0, larghezzaSpazioTestoPercentuale) { DeltaY = 3, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left, TextVerticalAlign = ceTe.DynamicPDF.VAlign.Center, DeltaX = deltaXBarra, FontSize = 7 } }; } i++; } AddElement(tabellaDiversificazionePortafoglio); //ASSE X axisWidth = Helper.GetWidthProportional(100, valoreMassimo, tabellaDiversificazionePortafoglio.Columns[3].Width - larghezzaMinimaSpazioTestoPercentuale); XAxisDraw(295, Y2TabellaDiversificazionePortafoglio, 295 + axisWidth, Y2TabellaDiversificazionePortafoglio + 2); //ASSE Y AddElement(new LinePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 295 - 0.5f, Y1TabellaDiversificazionePortafoglio + 2, EnvironmentFacade.RendererFacade.XLeftLimit + 295 - 0.5f, Y2TabellaDiversificazionePortafoglio + 2, 0.8F, new ColorPDF(137, 137, 137)) { AutoIncrementYWritable = false }); #endregion Tabella Diversificazione Portafoglio #endregion Sezione Diversificazione Portafoglio #region Sezione Sintesi Componenti if (_visualizzaSintesiComponenti) { #region Titolo e Testo Introduttivo AddElement(new SpacePDF(20)); string titoloSintesi = "Sintesi delle componenti di diversificazione"; AddElement(new FormattedTextAreaPDF(titoloSintesi, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 10, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); AddElement(new SpacePDF(20)); string testoIntroSintesi = string.Empty; testoIntroSintesi = testi.Rows[0]["testo3"].ToString(); testoIntroSintesi = Helper.ReplaceVariables(testoIntroSintesi, EnvironmentFacade.ReportEnvironment); AddElement(new FormattedTextAreaPDF(testoIntroSintesi, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); AddElement(new SpacePDF(20)); #endregion Titolo e Testo Introduttivo #region Tabella Sintesi Componenti Portafoglio AddElement(new ImagePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 10, 0.20f, "PallinoPortafoglioAttuale_new.png") { AutoIncrementYWritable = false, DeltaY = -1 }); AddElement(new FormattedTextAreaPDF(String.Format("Portafoglio attuale (€){0}", _asteriscoAttuale), EnvironmentFacade.RendererFacade.XLeftLimit + 25) { FontSize = 7, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, AutoIncrementYWritable = false }); AddElement(new FormattedTextAreaPDF(Helper.FormatCurrency(portafoglioAttuale), EnvironmentFacade.RendererFacade.XLeftLimit + 220) { FontSize = 7, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); AddElement(new SpacePDF(10)); AddElement(new ImagePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 10, 0.20f, "PallinoPortafoglioProposto_new.png") { AutoIncrementYWritable = false, DeltaY = -1 }); AddElement(new FormattedTextAreaPDF(String.Format("Portafoglio proposto (€){0}", _asteriscoProposto), EnvironmentFacade.RendererFacade.XLeftLimit + 25) { FontSize = 7, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, AutoIncrementYWritable = false }); AddElement(new FormattedTextAreaPDF(Helper.FormatCurrency(portafoglioProposto), EnvironmentFacade.RendererFacade.XLeftLimit + 220) { FontSize = 7, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); AddElement(new SpacePDF(10)); if (dati.Tables["SintesiComponentiPortafoglio"].Rows.Count > 0) { #region Definizione e Creazione var tabellaSintesiComponentiPortafoglio = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["SintesiComponentiPortafoglio"]) { Style = Style.ConsulenzaUnica, AlternateRow = false, ShowSeparationLines = true, RowHeight = 30, Footer = false, HeaderHeight = 30, HideLastSeparationLine = false, AdditionalSpaceBetweenHeadersAndTable = 3 }; tabellaSintesiComponentiPortafoglio.Columns.Add(new ColumnPDF("Componente", 210, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Componente", "Componenti diversificazione di portafoglio") { HeaderFontSize = 7, FontSize = 7 }); tabellaSintesiComponentiPortafoglio.Columns.Add(new ColumnPDF("DiversificazioneAObject", 155, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Objectpdf, "DiversificazioneAttuale", "Portafoglio attuale") { VerticalAlignment = VerticalAlignmentType.Centrato, HeaderFontSize = 7, FontSize = 7, DeltaYContent = 6, HeaderPaddingRight = 30 }); tabellaSintesiComponentiPortafoglio.Columns.Add(new ColumnPDF("DiversificazionePObject", 155, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, "DiversificazioneProposto", "Portafoglio proposto") { VerticalAlignment = VerticalAlignmentType.Centrato, HeaderFontSize = 7, FontSize = 7, DeltaYContent = 6, HeaderPaddingLeft = 30 }); #endregion #region Creazione Stacked Bar list = new List(); list.Add(Convert.ToDouble(dati.Tables["SintesiComponentiPortafoglio"].AsEnumerable().Max(x => x["DiversificazioneAttuale"]))); list.Add(Convert.ToDouble(dati.Tables["SintesiComponentiPortafoglio"].AsEnumerable().Max(x => x["DiversificazioneProposto"]))); //valoreMassimo = (float)Helper.Round(list.Max()); valoreMassimo = 100f; larghezzaBarra = 0; larghezzaSpazioTestoPercentuale = 0; larghezzaMinimaSpazioTestoPercentuale = 35; deltaXBarra = 0; width = tabellaSintesiComponentiPortafoglio.Columns[1].Width - 50; i = 0; foreach (DataRow row in dati.Tables["SintesiComponentiPortafoglio"].Rows) { #region Barra Attuale var colore = new ColorPDF(195, 195, 195); larghezzaBarra = Helper.GetWidthProportional((float)Convert.ToDecimal(row["DiversificazioneAttuale"]), valoreMassimo, tabellaSintesiComponentiPortafoglio.Columns[1].Width - 35); larghezzaSpazioTestoPercentuale = tabellaSintesiComponentiPortafoglio.Columns[1].Width - larghezzaBarra; deltaXBarra = -larghezzaBarra - 10; if (larghezzaSpazioTestoPercentuale < larghezzaMinimaSpazioTestoPercentuale) { deltaXBarra = -(tabellaSintesiComponentiPortafoglio.Columns[1].Width - larghezzaMinimaSpazioTestoPercentuale); larghezzaSpazioTestoPercentuale = larghezzaMinimaSpazioTestoPercentuale; } if (Convert.ToDouble(row["DiversificazioneAttuale"]) == 0) { tabellaSintesiComponentiPortafoglio.Cells[1, i].ValueObjectList = new List() { new RectanglePDF(20, 1 , ColorPDF.Bianco), new FormattedTextAreaPDF(row["DiversificazioneAttuale"].ToString()=="0.00"? "0.00" : Helper.FormatDecimal(Convert.ToDecimal(row["DiversificazioneAttuale"]).ToString(), 2), 0, larghezzaSpazioTestoPercentuale) { DeltaY = 3, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Right, TextVerticalAlign = ceTe.DynamicPDF.VAlign.Center, DeltaX = deltaXBarra, FontSize = 7 } }; } else { tabellaSintesiComponentiPortafoglio.Cells[1, i].ValueObjectList = new List() { new RectanglePDF(20, larghezzaBarra , colore), new FormattedTextAreaPDF(row["DiversificazioneAttuale"].ToString()=="0.00"? "0.00" : Helper.FormatDecimal(Convert.ToDecimal(row["DiversificazioneAttuale"]).ToString(), 2), 0, larghezzaSpazioTestoPercentuale) { DeltaY = 3, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Right, TextVerticalAlign = ceTe.DynamicPDF.VAlign.Center, DeltaX = deltaXBarra, FontSize = 7 } }; } #endregion Barra Attuale #region Barra Proposto colore = new ColorPDF(91, 155, 213); larghezzaBarra = Helper.GetWidthProportional((float)Convert.ToDecimal(row["DiversificazioneProposto"]), valoreMassimo, tabellaSintesiComponentiPortafoglio.Columns[2].Width - 35); larghezzaSpazioTestoPercentuale = tabellaSintesiComponentiPortafoglio.Columns[2].Width - larghezzaBarra; deltaXBarra = larghezzaBarra + 10; if (larghezzaSpazioTestoPercentuale < larghezzaMinimaSpazioTestoPercentuale) { deltaXBarra = (tabellaSintesiComponentiPortafoglio.Columns[2].Width - larghezzaMinimaSpazioTestoPercentuale); larghezzaSpazioTestoPercentuale = larghezzaMinimaSpazioTestoPercentuale; } if (row["DiversificazioneProposto"].ToString() == "0.00") { tabellaSintesiComponentiPortafoglio.Cells[2, i].ValueObjectList = new List() { new RectanglePDF(20, 1, ColorPDF.Bianco), new FormattedTextAreaPDF( "0.00", 0, 30 ) { DeltaY = 3, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left, TextVerticalAlign = ceTe.DynamicPDF.VAlign.Center, DeltaX = deltaXBarra, FontSize = 7 } }; } else { tabellaSintesiComponentiPortafoglio.Cells[2, i].ValueObjectList = new List() { new RectanglePDF(20, larghezzaBarra, colore), new FormattedTextAreaPDF( Helper.FormatDecimal(Convert.ToDecimal(row["DiversificazioneProposto"]).ToString(), 2), 0, larghezzaSpazioTestoPercentuale) { DeltaY = 3, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left, TextVerticalAlign = ceTe.DynamicPDF.VAlign.Center, DeltaX = deltaXBarra, FontSize = 7 } }; } #endregion Barra Proposto i++; } AddElement(tabellaSintesiComponentiPortafoglio); //ASSE X axisWidth = Helper.GetWidthProportional(100, valoreMassimo, tabellaSintesiComponentiPortafoglio.Columns[1].Width - larghezzaMinimaSpazioTestoPercentuale); //asse x attuale XAxisDraw(365, Y2TabellaSintesiComponentiProposto, 365 + axisWidth, Y2TabellaSintesiComponentiProposto + 2, 2); //asse x proposto XAxisDraw(365, Y2TabellaSintesiComponentiProposto, 365 - axisWidth, Y2TabellaSintesiComponentiProposto + 2, 2); //ASSE Y AddElement(new LinePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 365 - 0.5f, Y1TabellaSintesiComponentiAttuale + 2, EnvironmentFacade.RendererFacade.XLeftLimit + 365 - 0.5f, Y2TabellaSintesiComponentiProposto + 2, 0.8F, new ColorPDF(137, 137, 137)) { AutoIncrementYWritable = false }); } #endregion Tabella Sintesi Componenti Portafoglio #endregion Sezione Sintesi Componenti #region Nota a pie' pagina if (_stampaNota) { AddElement(new SpacePDF(15)); AddElement(new FormattedTextAreaPDF(string.Format("{0}", nota), EnvironmentFacade.RendererFacade.XLeftLimit) { Y = 700, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, AutoIncrementYWritable = false, FontSize = 7, AbsolutePosition = true }); } #endregion Nota a pie' pagina } else { #region Nota a pie' pagina if (_stampaNota) { AddElement(new SpacePDF(15)); AddElement(new FormattedTextAreaPDF(string.Format("{0}", nota), EnvironmentFacade.RendererFacade.XLeftLimit) { Y = 300, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, AutoIncrementYWritable = false, FontSize = 7, AbsolutePosition = true }); } #endregion Nota a pie' pagina } #endregion Sezione Sintesi Componenti #region Sezione Dettaglio Componenti if (_visualizzaDettaglioComponenti) { #region Nota a pie' pagina e cambio pagina //if (_stampaNota) //{ // AddElement(new SpacePDF(15)); // //AddElement(new FormattedTextAreaPDF(string.Format("{0}", nota), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); // AddElement(new FormattedTextAreaPDF(string.Format("{0}", nota), EnvironmentFacade.RendererFacade.XLeftLimit) { Y = 700, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, AutoIncrementYWritable = false, FontSize = 7, AbsolutePosition = true }); //} AddElement(new ImagePDF(435, 0.15F, "changepage.png") { Y = 745 - 5, AutoIncrementYWritable = false }); AddElement(new FormattedTextAreaPDF("continua alla pagina successiva", 450, 200) { Y = 745 - 5, AutoIncrementYWritable = false, FontSize = 6, AbsolutePosition = true }); AddElement(new PagePDF()); AddElement(new SpacePDF(2)); AddElement(new ImagePDF(37, 0.15F, "changepage.png") { AutoIncrementYWritable = false }); AddElement(new FormattedTextAreaPDF("continua dalla pagina precedente", 37 + 15, 200) { FontSize = 6, AutoIncrementYWritable = true }); #endregion Nota a pie' pagina e cambio pagina #region Titolo e Testo Introduttivo AddElement(new SpacePDF(20)); string titoloDettaglio = "Dettaglio delle componenti di diversificazione"; AddElement(new FormattedTextAreaPDF(titoloDettaglio, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 10, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); AddElement(new SpacePDF(10)); string testoIntroDettaglio = string.Empty; testoIntroDettaglio = testi.Rows[0]["testo5"].ToString(); testoIntroDettaglio = Helper.ReplaceVariables(testoIntroDettaglio, EnvironmentFacade.ReportEnvironment); AddElement(new FormattedTextAreaPDF(testoIntroDettaglio, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); AddElement(new SpacePDF(20)); #endregion Titolo e Testo Introduttivo #region Tabella Dettaglio Componenti Attuale AddElement(new ImagePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 10, 0.20f, "PallinoPortafoglioAttuale_new.png") { AutoIncrementYWritable = false, DeltaY = -1 }); AddElement(new FormattedTextAreaPDF(String.Format("Portafoglio attuale (€){0}", _asteriscoAttuale), EnvironmentFacade.RendererFacade.XLeftLimit + 25) { FontSize = 7, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, AutoIncrementYWritable = false }); AddElement(new FormattedTextAreaPDF(Helper.FormatCurrency(portafoglioAttuale), EnvironmentFacade.RendererFacade.XLeftLimit + 220) { FontSize = 7, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); AddElement(new SpacePDF(10)); AddElement(new ImagePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 10, 0.20f, "PallinoPortafoglioProposto_new.png") { AutoIncrementYWritable = false, DeltaY = -1 }); AddElement(new FormattedTextAreaPDF(String.Format("Portafoglio proposto (€){0}", _asteriscoProposto), EnvironmentFacade.RendererFacade.XLeftLimit + 25) { FontSize = 7, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, AutoIncrementYWritable = false }); AddElement(new FormattedTextAreaPDF(Helper.FormatCurrency(portafoglioProposto), EnvironmentFacade.RendererFacade.XLeftLimit + 220) { FontSize = 7, FontBold = true, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); AddElement(new SpacePDF(10)); if (dati.Tables["DettaglioComponentiPortafoglio"].Rows.Count > 0) { #region Definizione e Creazione var tabellaDettaglioComponentiPortafoglio = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["DettaglioComponentiPortafoglio"]) { Style = Style.ConsulenzaUnica, AlternateRow = false, ShowSeparationLines = true, RowHeight = 30, Footer = false, HeaderHeight = 30, HideLastSeparationLine = false, AdditionalSpaceBetweenHeadersAndTable = 3 }; tabellaDettaglioComponentiPortafoglio.Columns.Add(new ColumnPDF("Componente", 210, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Componente", "Componenti diversificazione di portafoglio") { HeaderFontSize = 7, FontSize = 7 }); tabellaDettaglioComponentiPortafoglio.Columns.Add(new ColumnPDF("DiversificazioneAObject", 155, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Objectpdf, "DiversificazioneAttuale", "Portafoglio attuale") { VerticalAlignment = VerticalAlignmentType.Centrato, HeaderFontSize = 7, FontSize = 7, DeltaYContent = 6, HeaderPaddingRight = 30 }); tabellaDettaglioComponentiPortafoglio.Columns.Add(new ColumnPDF("DiversificazionePObject", 155, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, "DiversificazioneAttuale", "Portafoglio proposto") { VerticalAlignment = VerticalAlignmentType.Centrato, HeaderFontSize = 7, FontSize = 7, DeltaYContent = 6, HeaderPaddingLeft = 30 }); #endregion Definizione e Creazione #region Creazione Stacked Bar i = 0; list = new List(); list.Add(Convert.ToDouble(dati.Tables["DettaglioComponentiPortafoglio"].AsEnumerable().Max(x => x["DiversificazioneAttuale"]))); list.Add(Convert.ToDouble(dati.Tables["DettaglioComponentiPortafoglio"].AsEnumerable().Max(x => x["DiversificazioneProposto"]))); //valoreMassimo = (float)Helper.Round(list.Max()); valoreMassimo = 100; larghezzaBarra = 0; larghezzaSpazioTestoPercentuale = 0; larghezzaMinimaSpazioTestoPercentuale = 35; deltaXBarra = 0; width = tabellaDettaglioComponentiPortafoglio.Columns[1].Width - 50; foreach (DataRow row in dati.Tables["DettaglioComponentiPortafoglio"].Rows) { #region Barra Attuale var colore = new ColorPDF(195, 195, 195); tabellaDettaglioComponentiPortafoglio.Row[i].BackgroundGray = Convert.ToBoolean(row["IsHeader"].ToString()); tabellaDettaglioComponentiPortafoglio.Row[i].FontBold = Convert.ToBoolean(row["IsHeader"].ToString()); tabellaDettaglioComponentiPortafoglio.Row[i].ForceStyleFontBold = Convert.ToBoolean(row["IsHeader"].ToString()); if (!Convert.ToBoolean(row["IsHeader"].ToString())) tabellaDettaglioComponentiPortafoglio.Cells[0, i].XContentOffset = 20; tabellaDettaglioComponentiPortafoglio.Cells[1, i].HorizontalAlignment = HorizontalAlignmentType.Destra; larghezzaBarra = Helper.GetWidthProportional((float)Convert.ToDecimal(row["DiversificazioneAttuale"]), valoreMassimo, tabellaDettaglioComponentiPortafoglio.Columns[1].Width - 35); larghezzaSpazioTestoPercentuale = tabellaDettaglioComponentiPortafoglio.Columns[1].Width - larghezzaBarra; deltaXBarra = -larghezzaBarra - 10; if (larghezzaSpazioTestoPercentuale < larghezzaMinimaSpazioTestoPercentuale) { deltaXBarra = -(tabellaDettaglioComponentiPortafoglio.Columns[1].Width - larghezzaMinimaSpazioTestoPercentuale); larghezzaSpazioTestoPercentuale = larghezzaMinimaSpazioTestoPercentuale; } if (Convert.ToDouble(row["DiversificazioneAttuale"]) == 0) { tabellaDettaglioComponentiPortafoglio.Cells[1, i].ValueObjectList = new List() { new RectanglePDF(20, 1 , ColorPDF.Bianco), new FormattedTextAreaPDF(row["DiversificazioneAttuale"].ToString()=="0.00"? "0.00" : Helper.FormatDecimal(Convert.ToDecimal(row["DiversificazioneAttuale"]).ToString(), 2), 0, larghezzaSpazioTestoPercentuale) { DeltaY = 2, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Right, DeltaX = deltaXBarra, FontSize = 7 } }; } else { tabellaDettaglioComponentiPortafoglio.Cells[1, i].ValueObjectList = new List() { new RectanglePDF(20, larghezzaBarra , colore), new FormattedTextAreaPDF(row["DiversificazioneAttuale"].ToString()=="0.00"? "0.00" : Helper.FormatDecimal(Convert.ToDecimal(row["DiversificazioneAttuale"]).ToString(), 2), 0, larghezzaSpazioTestoPercentuale) { DeltaY = 2, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Right, DeltaX = deltaXBarra, FontSize = 7 } }; } #endregion Barra Attuale #region Barra Proposto colore = new ColorPDF(91, 155, 213); tabellaDettaglioComponentiPortafoglio.Cells[2, i].HorizontalAlignment = HorizontalAlignmentType.Sinistra; larghezzaBarra = Helper.GetWidthProportional((float)Convert.ToDecimal(row["DiversificazioneProposto"]), valoreMassimo, tabellaDettaglioComponentiPortafoglio.Columns[2].Width - 35); larghezzaSpazioTestoPercentuale = tabellaDettaglioComponentiPortafoglio.Columns[2].Width - larghezzaBarra; deltaXBarra = larghezzaBarra + 10; if (larghezzaSpazioTestoPercentuale < larghezzaMinimaSpazioTestoPercentuale) { deltaXBarra = (tabellaDettaglioComponentiPortafoglio.Columns[2].Width - larghezzaMinimaSpazioTestoPercentuale); larghezzaSpazioTestoPercentuale = larghezzaMinimaSpazioTestoPercentuale; } if (row["DiversificazioneProposto"].ToString() == "0.00") { tabellaDettaglioComponentiPortafoglio.Cells[2, i].ValueObjectList = new List() { new RectanglePDF(20, 1, ColorPDF.Bianco), new FormattedTextAreaPDF( "n.c.", 0, 30 ) { DeltaY = 2, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left, DeltaX = deltaXBarra, FontSize = 7 } }; } else { tabellaDettaglioComponentiPortafoglio.Cells[2, i].ValueObjectList = new List() { new RectanglePDF(20, larghezzaBarra, colore), new FormattedTextAreaPDF( Helper.FormatDecimal(Convert.ToDecimal(row["DiversificazioneProposto"]).ToString(), 2), 0, larghezzaSpazioTestoPercentuale) { DeltaY = 2, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left, DeltaX = deltaXBarra, FontSize = 7 } }; } #endregion Barra Proposto i++; } #endregion Creazione Stacked Bar AddElement(tabellaDettaglioComponentiPortafoglio); //ASSE X //axisWidth = Helper.GetWidthProportional(100, valoreMassimo, tabellaDettaglioComponentiFideuram.Columns[1].Width - larghezzaMinimaSpazioTestoPercentuale); //XAxisDraw(210, 210 + axisWidth); //ASSE X axisWidth = Helper.GetWidthProportional(100, valoreMassimo, tabellaDettaglioComponentiPortafoglio.Columns[1].Width - larghezzaMinimaSpazioTestoPercentuale); // asse x attuale XAxisDraw(365, Y2TabellaDettaglioComponentiProposto, 365 + axisWidth, Y2TabellaDettaglioComponentiProposto + 2, 2); // asse x proposto XAxisDraw(365, Y2TabellaDettaglioComponentiProposto, 365 - axisWidth, Y2TabellaDettaglioComponentiProposto + 2, 2); //ASSE Y AddElement(new LinePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 365 - 0.5f, Y1TabellaDettaglioComponentiAttuale + 2, EnvironmentFacade.RendererFacade.XLeftLimit + 365 - 0.5f, Y2TabellaDettaglioComponentiProposto + 2, 0.8F, new ColorPDF(137, 137, 137)) { AutoIncrementYWritable = false }); } #endregion Tabella Dettaglio Componenti #region Nota a pie' pagina if (_stampaNota) { //AddElement(new SpacePDF(15)); //AddElement(new FormattedTextAreaPDF(string.Format("{0}", nota), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); AddElement(new FormattedTextAreaPDF(string.Format("{0}", nota), EnvironmentFacade.RendererFacade.XLeftLimit) { Y = 700, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, AutoIncrementYWritable = false, FontSize = 7, AbsolutePosition = true }); } #endregion Nota a pie' pagina } #endregion Sezione Dettaglio Componenti } /// /// Recupera i dati necessari alla Section restituendo un DataTable. /// /// protected sealed override DataTable GetDataTable() { return null; } /// /// Recupera i dati necessari alla Section restituendo un DataSet. /// /// protected sealed override DataSet GetDataSet() { var ds = new DataSet(); var rischio = datiSeiUnico.rischioUnit().rischio.rischioMercatoCredito; //Adriano 20180125 Per eliminare la gestione profilazione per i nuclei (non più gestita nel WS) decimal varMassimoProfiloCliente = datiSeiUnico.piramideModelloUnit().questionarioMifid.profileVarMax; //if (EnvironmentFacade.ReportEnvironment.ReportId == 6) //{ // profilo = 5; // varMassimoProfiloCliente = rischio.soglieMassime.FirstOrDefault(o => o.key == profilo).value.varMax; //} //else //{ // profilo = rischio.profileId; // varMassimoProfiloCliente = rischio.soglieMassime.FirstOrDefault(o => o.key == profilo).value.varMax; //} //var profilo = rischio.profileId; //var varMassimoProfiloCliente = rischio.soglieMassime.FirstOrDefault(o => o.key == profilo).value.varMax; //Adriano 20180125 //var totCasa = datiSeiUnico.rischioUnit().rischio.rischioCreditoConcetrazione.totaliFideuram; //var totTerzi = datiSeiUnico.rischioUnit().rischio.rischioCreditoConcetrazione.totaliAltriIstituti; //var totalePatrimonioCasa = totCasa.risorseFinanziarie + totCasa.partiteViaggianti; //var totalePatrimonioTerzi = totTerzi.risorseFinanziarie; //var totalePatrimonioFinanziario = totCasa.risorseFinanziarie + totCasa.partiteViaggianti + totTerzi.risorseFinanziarie; //var rischioFideuram = rischio.bancaFideuram; //var rischioAltriIstituti = rischio.altriIstituti; //var rischioComplessivo = rischio.totale; //_presenzaNotaEccessivaAdeguatezza = rischio.eccessivamenteAdeguato; var datiPortaglioAttuale = datiSeiUnico.rischioUnit().adeguatezza.adeguatezzaTopBean.datiPortafoglio; var portafoglioproposto = datiSeiUnico.propostaUnit().stDettaglioProposta; #region DataTable Portafoglio ds.Tables.Add(new DataTable("Portafoglio")); ds.Tables["Portafoglio"].Columns.Add(new DataColumn("Portafoglio", typeof(string))); ds.Tables["Portafoglio"].Columns.Add(new DataColumn("Controvalore", typeof(decimal))); ds.Tables["Portafoglio"].Columns.Add(new DataColumn("GradoCopertura", typeof(decimal))); ds.Tables["Portafoglio"].Columns.Add(new DataColumn("DiversificazionePortafoglio", typeof(decimal))); ds.Tables["Portafoglio"].Columns.Add(new DataColumn("Red", typeof(int))); ds.Tables["Portafoglio"].Columns.Add(new DataColumn("Green", typeof(int))); ds.Tables["Portafoglio"].Columns.Add(new DataColumn("Blue", typeof(int))); //ds.Tables["Portafoglio"].Rows.Add("Portafoglio attuale", 400247.20, 75.02, 29.18, 0, 0, 0); ds.Tables["Portafoglio"].Rows.Add("Portafoglio attuale", datiSeiUnico.ATTUTALE_TOTALEPOSITIVO, datiPortaglioAttuale != null ? datiPortaglioAttuale.copertura : 0.00, rischio.diversicazioneCasa.beneficio.Count() > 0 ? rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("BENEFICIO")).value : 0, //rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("BENEFICIO")).value, 195, 195, 195); //ds.Tables["Portafoglio"].Rows.Add("Portafoglio proposto", 400247.20, 100.00, 34.82, 157, 195, 230); ds.Tables["Portafoglio"].Rows.Add("Portafoglio proposto", datiSeiUnico.PROPOSTO_TOTALEPOSITIVO, portafoglioproposto.copertura, portafoglioproposto.diversificazioneProposta.FirstOrDefault(o => o.key.ToUpper().Equals("BENEFICIO")).value, 91, 155, 213); #endregion DataTable Portafoglio #region DataTable SintesiComponentiPortafoglio ds.Tables.Add(new DataTable("SintesiComponentiPortafoglio")); ds.Tables["SintesiComponentiPortafoglio"].Columns.Add("Componente", typeof(string)); ds.Tables["SintesiComponentiPortafoglio"].Columns.Add("DiversificazioneAttuale", typeof(decimal)); ds.Tables["SintesiComponentiPortafoglio"].Columns.Add("DiversificazioneProposto", typeof(decimal)); //ds.Tables["SintesiComponentiPortafoglio"].Rows.Add("Diversificazione del rischio mercato", 56, 63); ds.Tables["SintesiComponentiPortafoglio"].Rows.Add("Diversificazione del rischio mercato", rischio.diversicazioneCasa.beneficio.Count() > 0 ? rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOMERCATO")).value : 0, //rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOMERCATO")).value, portafoglioproposto.diversificazioneProposta.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOMERCATO")).value); //ds.Tables["SintesiComponentiPortafoglio"].Rows.Add("Diversificazione del rischio credito", 43, 45); ds.Tables["SintesiComponentiPortafoglio"].Rows.Add("Diversificazione del rischio credito", rischio.diversicazioneCasa.beneficio.Count() > 0 ? rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOCREDITO")).value : 0, //rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOCREDITO")).value, portafoglioproposto.diversificazioneProposta.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOCREDITO")).value); //ds.Tables["SintesiComponentiPortafoglio"].Rows.Add("Diversificazione del rischio concentrazione", 9, 10); ds.Tables["SintesiComponentiPortafoglio"].Rows.Add("Diversificazione del rischio concentrazione", rischio.diversicazioneCasa.beneficio.Count() > 0 ? rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONECONCENTRAZIONE")).value : 0, //rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONECONCENTRAZIONE")).value, portafoglioproposto.diversificazioneProposta.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONECONCENTRAZIONE")).value); #endregion DataTable SintesiComponentiPortafoglio #region DataTable DettaglioComponentiPortafoglio ds.Tables.Add(new DataTable("DettaglioComponentiPortafoglio")); ds.Tables["DettaglioComponentiPortafoglio"].Columns.Add("Componente", typeof(string)); ds.Tables["DettaglioComponentiPortafoglio"].Columns.Add("DiversificazioneAttuale", typeof(decimal)); ds.Tables["DettaglioComponentiPortafoglio"].Columns.Add("DiversificazioneProposto", typeof(decimal)); ds.Tables["DettaglioComponentiPortafoglio"].Columns.Add("IsHeader", typeof(bool)); //ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("Diversificazione del rischio mercato", 56, 63, true); ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("Diversificazione del rischio mercato", rischio.diversicazioneCasa.beneficio.Count() > 0 ? rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOMERCATO")).value : 0, //rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOMERCATO")).value, portafoglioproposto.diversificazioneProposta.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOMERCATO")).value, true); //ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("breve periodo", 86, 95, false); //ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("breve periodo", // rischio.diversicazioneCasa.beneficio.Count() > 0 ? // rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOMERCATOBREVEPERIODO")).value // : 0, // //rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOMERCATOBREVEPERIODO")).value, // portafoglioproposto.diversificazioneProposta.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOMERCATOBREVEPERIODO")).value, // false); //ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("lungo periodo", 95, 100, false); //ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("lungo periodo", // rischio.diversicazioneCasa.beneficio.Count() > 0 ? // rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOMERCATOLUNGOPERIODO")).value // : 0, // //rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOMERCATOLUNGOPERIODO")).value, // portafoglioproposto.diversificazioneProposta.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOMERCATOLUNGOPERIODO")).value, // false); //ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("Diversificazione del rischio credito", 43, 45, true); ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("Diversificazione del rischio credito", rischio.diversicazioneCasa.beneficio.Count() > 0 ? rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOCREDITO")).value : 0, //rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOCREDITO")).value, portafoglioproposto.diversificazioneProposta.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOCREDITO")).value, true); //ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("risparmio gestito", 85, 94, false); ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("risparmio gestito", rischio.diversicazioneCasa.beneficio.Count() > 0 ? rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOCREDITOGESTITO")).value : 0, //rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOCREDITOGESTITO")).value, portafoglioproposto.diversificazioneProposta.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOCREDITOGESTITO")).value, false); //ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("risparmio amministrato", 20, 23, false); ds.Tables["dettagliocomponentiportafoglio"].Rows.Add("risparmio amministrato", rischio.diversicazioneCasa.beneficio.Count() > 0 ? rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOCREDITOAMMINISTRATI")).value : 0, //rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOCREDITOAMMINISTRATI")).value, portafoglioproposto.diversificazioneProposta.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONERISCHIOCREDITOAMMINISTRATI")).value, false); //ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("Diversificazione del rischio concentrazione", 9, 10, true); ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("Diversificazione del rischio concentrazione", rischio.diversicazioneCasa.beneficio.Count() > 0 ? rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONECONCENTRAZIONE")).value : 0, //rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONECONCENTRAZIONE")).value, portafoglioproposto.diversificazioneProposta.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONECONCENTRAZIONE")).value, true); //ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("case di investimento", 40, 55, false); ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("case di investimento", rischio.diversicazioneCasa.beneficio.Count() > 0 ? rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONECASEINVESTIMENTO")).value : 0, //rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONECASEINVESTIMENTO")).value, portafoglioproposto.diversificazioneProposta.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONECASEINVESTIMENTO")).value, false); //ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("numerosità titoli", 20, 36, false); ds.Tables["DettaglioComponentiPortafoglio"].Rows.Add("numerosità titoli", rischio.diversicazioneCasa.beneficio.Count() > 0 ? rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONENUMEROTITOLI")).value : 0, //rischio.diversicazioneCasa.beneficio.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONENUMEROTITOLI")).value, portafoglioproposto.diversificazioneProposta.FirstOrDefault(o => o.key.ToUpper().Equals("DIVERSIFICAZIONENUMEROTITOLI")).value, false); #endregion DataTable DettaglioComponentiPortafoglio return ds; } /// /// Recupera la nota dinamica /// /// /// public virtual string GetNote() { string nota = ""; string token = ""; var pianificazioneVerticale = datiSeiUnico.pianificazioneUnit().pianificazioneVerticale; var proposta = datiSeiUnico.propostaUnit().stDettaglioProposta; decimal CCN_ATTUALE = pianificazioneVerticale.contoCorrenteNegativo; //cc negativi del patrimonio casa decimal GPELIGOFONDI_ATTUALE = pianificazioneVerticale.liqEligoFondiNeg; // liquidità sottostante la GP Eligo Fondi del patrimonio casa decimal GPELIGOTITOLI_ATTUALE = pianificazioneVerticale.liqEligoTitoliNeg; //liquidità sottostante la GP Eligo Titoli del patrimonio casa decimal CCN_PROPOSTO = proposta.contoCorrenteNegativo; decimal GPELIGOFONDI_PROPOSTO = proposta.liqEligoFondiNeg; decimal GPELIGOTITOLI_PROPOSTO = proposta.liqEligoTitoliNeg; // 20181009 AC decimal TUOFOGLIO_ATTUALE = pianificazioneVerticale.liqFogliNeg; // liquidità sottostante Il Mio Foglio del patrimonio casa decimal TUOFOGLIO_PROPOSTO = proposta.liqFogliNeg; // liquidità sottostante Il Mio Foglio del patrimonio casa //--20181009 AC //**************************************SIMULAZIONE****************************************************** //decimal CCN_ATTUALE = 0; //decimal GPELIGOFONDI_ATTUALE = 10; //decimal GPELIGOTITOLI_ATTUALE = 0; //decimal TUOFOGLIO_ATTUALE = 0; //decimal CCN_PROPOSTO = 210; //decimal GPELIGOFONDI_PROPOSTO = 0; //decimal GPELIGOTITOLI_PROPOSTO = 0; //decimal TUOFOGLIO_PROPOSTO = 0; //**************************************FINE SIMULAZIONE************************************************* // 20181009 AC //_presenzaNotaPortafoglioAttuale = CCN_ATTUALE != 0 || GPELIGOFONDI_ATTUALE != 0 || GPELIGOTITOLI_ATTUALE != 0; //_presenzaNotaPortafoglioProposto = CCN_PROPOSTO != 0 || GPELIGOFONDI_PROPOSTO != 0 || GPELIGOTITOLI_PROPOSTO != 0; //--20181009 AC _presenzaNotaPortafoglioAttuale = CCN_ATTUALE != 0 || GPELIGOFONDI_ATTUALE != 0 || GPELIGOTITOLI_ATTUALE != 0 || TUOFOGLIO_ATTUALE != 0; _presenzaNotaPortafoglioProposto = CCN_PROPOSTO != 0 || GPELIGOFONDI_PROPOSTO != 0 || GPELIGOTITOLI_PROPOSTO != 0 || TUOFOGLIO_PROPOSTO != 0; //decimal GC = 100; //decimal OC_CASA = 0;//patrimonioCasa.totaliPatrimonio.partiteViaggianti; //Operazioni in corso del patrimonio casa //decimal CC_CASA = 0;// patrimonioCasa.totaliPatrimonio.contoCorrentePositivo; //cc positivo del patrimonio casa //decimal CC_TERZI = 0;// patrimonioTerzi.totaliPatrimonio.contoCorrentePositivo; //cc positivo del patrimonio terzi //decimal PNR_CASA = 0; //Patrimonio non rappresentabile per macroassetclass del patrimonio casa //decimal PNR_TERZI = 0; // 20181009 AC //if (CCN_ATTUALE != 0 || GPELIGOFONDI_ATTUALE != 0 || GPELIGOTITOLI_ATTUALE != 0 || CCN_PROPOSTO != 0 || GPELIGOFONDI_PROPOSTO != 0 || GPELIGOTITOLI_PROPOSTO != 0) if (CCN_ATTUALE != 0 || GPELIGOFONDI_ATTUALE != 0 || GPELIGOTITOLI_ATTUALE != 0 || TUOFOGLIO_ATTUALE != 0 || CCN_PROPOSTO != 0 || GPELIGOFONDI_PROPOSTO != 0 || GPELIGOTITOLI_PROPOSTO != 0 || TUOFOGLIO_PROPOSTO != 0) { // 20181009 AC //if (CCN_ATTUALE != 0 || GPELIGOFONDI_ATTUALE != 0 || GPELIGOTITOLI_ATTUALE != 0) if (CCN_ATTUALE != 0 || GPELIGOFONDI_ATTUALE != 0 || GPELIGOTITOLI_ATTUALE != 0 || TUOFOGLIO_ATTUALE != 0) //--20181009 AC { nota += token + "Il controvalore"; token = " "; nota += token + "del portafoglio attuale esclude il saldo negativo"; if (CCN_ATTUALE != 0) { nota += token + datiSeiUnico.FormatDecimal("dei conti correnti ({0} €)", CCN_ATTUALE); token = (TUOFOGLIO_ATTUALE != 0 || GPELIGOFONDI_ATTUALE != 0 || GPELIGOTITOLI_ATTUALE != 0) ? ", " : ""; } // 20181009 AC if (TUOFOGLIO_ATTUALE != 0) { nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante Il Mio Foglio ({0} €)", TUOFOGLIO_ATTUALE); token = (GPELIGOFONDI_ATTUALE != 0 || GPELIGOTITOLI_ATTUALE != 0) ? ", " : ""; } //--20181009 AC if (GPELIGOFONDI_ATTUALE != 0) { nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante la GP Eligo Fondi ({0} €)", GPELIGOFONDI_ATTUALE); token = (GPELIGOTITOLI_ATTUALE != 0) ? ", " : ""; } if (GPELIGOTITOLI_ATTUALE != 0) { nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante la GP Eligo Titoli ({0} €)", GPELIGOTITOLI_ATTUALE); } token = ". "; } // 20181009 AC //if (CCN_PROPOSTO != 0 || GPELIGOFONDI_PROPOSTO != 0 || GPELIGOTITOLI_PROPOSTO != 0) if (CCN_PROPOSTO != 0 || GPELIGOFONDI_PROPOSTO != 0 || GPELIGOTITOLI_PROPOSTO != 0 || TUOFOGLIO_PROPOSTO != 0) //--20181009 AC { nota += token + "Il controvalore"; token = " "; nota += token + "del portafoglio proposto esclude il saldo negativo"; // 20181009 AC ELIMINARE?? //if (CCN_PROPOSTO != 0 || GPELIGOFONDI_PROPOSTO != 0 || GPELIGOTITOLI_PROPOSTO != 0) if (CCN_PROPOSTO != 0 || GPELIGOFONDI_PROPOSTO != 0 || GPELIGOTITOLI_PROPOSTO != 0 || TUOFOGLIO_PROPOSTO != 0) //--20181009 AC { if (CCN_PROPOSTO != 0) { nota += token + datiSeiUnico.FormatDecimal("dei conti correnti ({0} €)", CCN_PROPOSTO); token = (TUOFOGLIO_PROPOSTO != 0 || GPELIGOFONDI_PROPOSTO != 0 || GPELIGOTITOLI_PROPOSTO != 0) ? ", " : ""; } // 20181009 AC if (TUOFOGLIO_PROPOSTO != 0) { nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante Il Mio Foglio ({0} €)", TUOFOGLIO_PROPOSTO); token = (GPELIGOFONDI_PROPOSTO != 0 || GPELIGOTITOLI_PROPOSTO != 0) ? ", " : ""; } //--20181009 AC if (GPELIGOFONDI_PROPOSTO != 0) { nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante la GP Eligo Fondi ({0} €)", GPELIGOFONDI_PROPOSTO); token = (GPELIGOTITOLI_PROPOSTO != 0) ? ", " : ""; } if (GPELIGOTITOLI_PROPOSTO != 0) { nota += token + datiSeiUnico.FormatDecimal("della liquidità sottostante la GP Eligo Titoli ({0} €)", GPELIGOTITOLI_PROPOSTO); } token = ". "; } } } nota += "."; nota = !nota.Equals("") ? "(*) " + nota : nota; return datiSeiUnico.FormatBanca(nota); } private void XAxisDraw(float x1, float x2) { AddElement(new LinePDF(EnvironmentFacade.RendererFacade.XLeftLimit + x1 - 1, EnvironmentFacade.RendererFacade.XLeftLimit + x2 + 1, 0.8F, new ColorPDF(137, 137, 137)) { AutoIncrementYWritable = false }); var incr = (x2 - x1) / 5; float currentX = EnvironmentFacade.RendererFacade.XLeftLimit + x1; for (int i = 0; i <= 100; i += 20) { AddElement(new FormattedTextAreaPDF(i.ToString(), currentX, 20) { FontSize = 6, AutoIncrementYWritable = false }); currentX += incr; } } private void XAxisDraw(float x1, float y1, float x2, float y2) { //AddElement(new LinePDF(EnvironmentFacade.RendererFacade.XLeftLimit + x1 - 1, EnvironmentFacade.RendererFacade.XLeftLimit + x2 + 1, 0.8F, new ColorPDF(137, 137, 137)) AddElement(new LinePDF(EnvironmentFacade.RendererFacade.XLeftLimit + x1, EnvironmentFacade.RendererFacade.XLeftLimit + x2, 0.8F, new ColorPDF(137, 137, 137)) { AutoIncrementYWritable = false }); var incr = (x2 - x1) / 5; float currentX = EnvironmentFacade.RendererFacade.XLeftLimit + x1; for (int i = 0; i <= 100; i += 20) { //currentX - 3 serve a centrare la label rispetto al trattino AddElement(new FormattedTextAreaPDF(i.ToString(), currentX - 3, 20) { FontSize = 6, AutoIncrementYWritable = false, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left }); XAxisLabelLineDraw(currentX, y1, currentX, y2); currentX += incr; } } private void XAxisDraw(float x1, float y1, float x2, float y2, int interval) { //AddElement(new LinePDF(EnvironmentFacade.RendererFacade.XLeftLimit + x1 - 1, EnvironmentFacade.RendererFacade.XLeftLimit + x2 + 1, 0.8F, new ColorPDF(137, 137, 137)) AddElement(new LinePDF(EnvironmentFacade.RendererFacade.XLeftLimit + x1, EnvironmentFacade.RendererFacade.XLeftLimit + x2, 0.8F, new ColorPDF(137, 137, 137)) { AutoIncrementYWritable = false }); var incr = (x2 - x1) / interval; float currentX = EnvironmentFacade.RendererFacade.XLeftLimit + x1; for (int i = 0; i <= 100; i += (100 / interval)) { //currentX - 3 serve a centrare la label rispetto al trattino AddElement(new FormattedTextAreaPDF(i.ToString(), currentX - 3, 20) { FontSize = 6, AutoIncrementYWritable = false, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left }); XAxisLabelLineDraw(currentX, y1, currentX, y2); currentX += incr; } } private void XAxisLabelLineDraw(float x1, float y1, float x2, float y2) { float leftShift = -0.5f; AddElement(new LinePDF(x1 + leftShift, y1, x2 + leftShift, y2, 0.8F, new ColorPDF(137, 137, 137)) { AutoIncrementYWritable = false }); } public virtual string GetTesto1() { bool isAdeguata = datiSeiUnico.flagAdeguatezzaPro(); string testo = ""; string banca = "$/Banca/$"; banca = /*"altri Istituti";*/ banca.Replace("$/Banca/$", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment)); testo = isAdeguata ? "In questa scheda è riportato il confronto, in termini di Rischio Mercato (VaR) e di Diversificazione, tra il patrimonio che lei attualmente detiene presso " + banca + " (\"portafoglio attuale\") e il patrimonio derivante dalla presente proposta (\"portafoglio proposto\"). " : "In questa scheda è riportato il confronto, in termini di Rischio Mercato (VaR) e di Diversificazione, tra il patrimonio che lei attualmente detiene presso " + banca + " (\"portafoglio attuale\") e il patrimonio derivante dalle operazioni da lei richieste al suo private banker (\"portafoglio prospettico\"). "; return testo; } } }