using System; using Consulenza.ReportWriter.Business; using Consulenza.ReportWriter.Business.OBJ_PDF; using System.Data; using System.Collections.Generic; using Consulenza.ReportCommon; using Consulenza.ReportWriter.Business.CUSTOM_PDF.ConsulenzaUnica; using System.Linq; using Consulenza.ReportWriter.Business.Entity; using Consulenza.DataServices.fideuram.data.service; using Consulenza.ReportWriter.Business.CHART_PDF; using Dundas.Charting.WebControl; namespace Consulenza.ReportWriter.Manager.Section.Unica { public class S40 : Entity.Section { /// ///S40.Adeguatezza idSezione = 83 //guardare la 62 /// private bool notaindicatoricomplessitafe; private string notagradoCoperturaComplessita; private string notaConcentrazioneProdottiComplessi; private bool gradoCoperturaRM; private bool gradoCoperturaRC; //Adriano: serve a determinare se il grado di concentrazione = 100, che nel caso dei clienti professionali significa valorizzare CC e CM a "n.a." private bool maxConcentrazione; //--Adriano private bool flagFiduciariaPlurimandato; public S40(EnvironmentFacade environmentFacade, int idSection) : base(environmentFacade, idSection) { try { Draw(); } catch (Exception ex) { SectionLogger.Write("S40", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment); } } protected override sealed void Draw() { var dati = GetDataSet(); bool saltoPagina = false; bool visualizzaTabellaIndicatoriSintesi = GetOption().Valore; bool visualizzaTabellaProdotti = GetOption().Valore; if (dati.Tables["indicatori"].Rows.Count > 0) { if (saltoPagina) AddElement(new PagePDF(PagePDF.PagePDFType.Generic)); saltoPagina = true; if (getTesto1().Length > 0) { AddElement(new SpacePDF(20)); AddElement(new FormattedTextAreaPDF(getTesto1(), EnvironmentFacade.RendererFacade.XLeftLimit) {FontSize=7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); AddElement(new SpacePDF(15)); } #region profilo finanziario var dtPatrimonio = new DataTable(); dtPatrimonio.Columns.Add(new DataColumn("controvalore")); dtPatrimonio.Columns.Add(new DataColumn("valore")); dtPatrimonio.Columns.Add(new DataColumn("descrizione")); dtPatrimonio.Columns.Add(new DataColumn("val")); for (int i = 0; i < dati.Tables["patrimoni"].Rows.Count / 2; ) { int r = 0; foreach (DataRow ro in dati.Tables["patrimoni"].Rows) { if (r % 2 == 0) { DataRow row = dtPatrimonio.NewRow(); dtPatrimonio.Rows.Add(row); dtPatrimonio.Rows[i]["controvalore"] = ro["Descrizione"].ToString(); dtPatrimonio.Rows[i]["valore"] = ro["Valore"].ToString(); } else { dtPatrimonio.Rows[i]["descrizione"] = ro["Descrizione"].ToString(); dtPatrimonio.Rows[i]["val"] = ro["Valore"].ToString(); i++; } r++; } } var countRow = dtPatrimonio.Rows.Count - 1; var tabellaPatrimonio = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dtPatrimonio) { Style = Style.ConsulenzaUnica, Header = false, Footer = false, AlternateRow = false, RowHeight = 25, WidthSeparationLines = 0 }; tabellaPatrimonio.Columns.Add(new ColumnPDF("controvalore", 150, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo, "controvalore", string.Empty) {HeaderFontSize = 7}); tabellaPatrimonio.Columns.Add(new ColumnPDF("valore", 110, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "valore", string.Empty) { HeaderFontSize = 7, PaddingLeft = 5 }); tabellaPatrimonio.Columns.Add(new ColumnPDF("descrizione", 150, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo, "descrizione", string.Empty) { HeaderFontSize = 7}); tabellaPatrimonio.Columns.Add(new ColumnPDF("val", 110, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "val", string.Empty) { HeaderFontSize = 7, PaddingLeft = 5 }); tabellaPatrimonio.Cells[2, countRow].BackgroundColor = dtPatrimonio.Rows[countRow]["descrizione"].ToString() == "" ? ColorPDF.Bianco : ColorPDF.Standard_Grigio_SfondoColonnaTabella; tabellaPatrimonio.Cells[1, countRow].FontColor =dtPatrimonio.Rows[countRow]["valore"].ToString().Equals("n.a.") ? ColorPDF.Nero : dtPatrimonio.Rows[countRow]["valore"].ToString().Equals("Adeguato") ? ColorPDF.Verde : ColorPDF.Rosso; AddElement(tabellaPatrimonio); AddElement(new SpacePDF(10)); #endregion #region indicatore di sintesi var dtIndicatori = new DataTable(); dtIndicatori.Columns.Add(new DataColumn("Indicatore", typeof(string))); dtIndicatori.Columns.Add(new DataColumn("Patrimonio", typeof(string))); dtIndicatori.Columns.Add(new DataColumn("Sogliamassima", typeof(string))); dtIndicatori.Columns.Add(new DataColumn("Gradocopertura", typeof(string))); dtIndicatori.Columns.Add(new DataColumn("Adeguatezza", typeof(string))); foreach (DataRow r in dati.Tables["indicatori"].Rows) { dtIndicatori.Rows.Add(r["Indicatore"].ToString(),r["Patrimonio"].ToString(),r["Sogliamassima"].ToString(), r["Gradocopertura"].ToString(),r["Adeguatezza"].ToString()); } var tabellaIndicatori = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dtIndicatori) { Style = Style.ConsulenzaUnica, AlternateRow = false, ShowSeparationLines = true, Footer = false, HeaderFontSize = 7, HeaderHeight = 30, RowHeight = 30, ShowFooterSeparationLines = true }; tabellaIndicatori.Columns.Add(new ColumnPDF("Indicatore", 150, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo, "Indicatore", "Indicatore") { HeaderFontSize=7}); tabellaIndicatori.Columns.Add(new ColumnPDF("Patrimonio", 100, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Patrimonio", string.Format("Patrimonio {0}", Helper.ReplaceVariables("$/Banca/$", base.EnvironmentFacade.ReportEnvironment))) { HeaderFontSize = 7, PaddingRight=7 }); tabellaIndicatori.Columns.Add(new ColumnPDF("Sogliamassima", 100, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Sogliamassima", "Soglia massima") {HeaderPaddingLeft=10, HeaderFontSize = 7, PaddingRight = 7 }); tabellaIndicatori.Columns.Add(new ColumnPDF("Gradocopertura", 100, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Gradocopertura", "Grado di copertura (%)") { HeaderFontSize = 7, PaddingRight = 7 }); tabellaIndicatori.Columns.Add(new ColumnPDF("Adeguatezza", 70, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Testo, "Adeguatezza", "Adeguatezza") { HeaderFontSize = 7, PaddingRight = 7 }); for (int a = 0; a < dtIndicatori.Rows.Count;a++ ) { int iIndicatore = 0; int iPatrimonio = 1; int iSogliamassima = 2; int iGradocopertura = 3; int iAdeguatezza = 4; tabellaIndicatori.Cells[iIndicatore, a].FontBold = true; //tabellaIndicatori.Cells[iAdeguatezza, a].FontColor = dtIndicatori.Rows[a]["Adeguatezza"].ToString() == "n.a." ? ColorPDF.Nero : dtIndicatori.Rows[a]["Adeguatezza"].ToString().Contains("Non") ? ColorPDF.Rosso : ColorPDF.Verde; tabellaIndicatori.Cells[iPatrimonio, a].HorizontalAlignment = HorizontalAlignmentType.Destra; tabellaIndicatori.Cells[iSogliamassima, a].HorizontalAlignment = HorizontalAlignmentType.Destra; tabellaIndicatori.Cells[iGradocopertura, a].HorizontalAlignment = HorizontalAlignmentType.Destra; } //string codiceFiscaleDelegato = tabellaIndicatori.Notes.Add( new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, getNoteTabellaIndicatori(), new[] { "" }, string.Empty, TableNotePDF.TableNoteAsteriskPositionType.CorpoTabella) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify } ); AddElement(tabellaIndicatori); if (gradoCoperturaRM || gradoCoperturaRC) { AddElement(new SpacePDF(5)); AddElement(new FormattedTextAreaPDF(getNota5RMRC(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); // tabellaIndicatori.Notes.Add( // new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, // getNota5RMRC(), // new[] { "" }, // string.Empty, // TableNotePDF.TableNoteAsteriskPositionType.CorpoTabella) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify } // ); } if (notagradoCoperturaComplessita != "") { AddElement(new SpacePDF(5)); AddElement(new FormattedTextAreaPDF(notagradoCoperturaComplessita, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); //tabellaIndicatori.Notes.Add( // new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, // getNota6(gradoCoperturaComplessita), // new[] { "" }, // string.Empty, // TableNotePDF.TableNoteAsteriskPositionType.CorpoTabella) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify } // ); } if (getNota407().Length > 0) { AddElement(new SpacePDF(5)); AddElement(new FormattedTextAreaPDF(getNota407(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); } //AddElement(new SpacePDF(10)); //AddElement(new FormattedTextAreaPDF("(*) " + getNoteTabellaIndicatori(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); //if (gradoCoperturaRM || gradoCoperturaRC) //{ // AddElement(new SpacePDF(10)); // AddElement(new FormattedTextAreaPDF("(*) " + getNota5RMRC(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); //} //if (gradoCoperturaComplessita != "") //{ // AddElement(new SpacePDF(10)); // AddElement(new FormattedTextAreaPDF("(*) " + getNota6(gradoCoperturaComplessita), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); //} #endregion } #region prodotti if (dati.Tables["prodotti"].Rows.Count>0) { if (visualizzaTabellaIndicatoriSintesi && visualizzaTabellaProdotti) { 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 }); } if (saltoPagina) AddElement(new PagePDF(PagePDF.PagePDFType.Generic)); saltoPagina = true; if (visualizzaTabellaIndicatoriSintesi && visualizzaTabellaProdotti) { 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 }); } if (getTesto3().Length > 0) { AddElement(new SpacePDF(15)); AddElement(new FormattedTextAreaPDF(getTesto3(), EnvironmentFacade.RendererFacade.XLeftLimit) {FontSize=7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); AddElement(new SpacePDF(15)); } #region tabella prodotti - indicatori di rischio var tabellaProdotti = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["prodotti"]) { Style = Style.ConsulenzaUnica, Footer = true, AlternateRow = false, ShowBorderLastLine = false, HeaderHeight = 28, //RowHeight = 30, // FooterHeight=30, HeaderMargin=1, WhiteSpacesHorizontalSeparator = false, AdditionalSpaceBetweenHeadersAndTable = 2, ShowSeparationLines = true, ShowFooterSeparationLines = true, HideLastSeparationLine = true, HideFirstSeparationLine = true }; tabellaProdotti.Columns.Add(new ColumnPDF("Immagine", 10, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Objectpdf, string.Empty, string.Empty) {HeaderFontSize=7, DeltaYContent = 4, PaddingLeft = 2 }); tabellaProdotti.Columns.Add(new ColumnPDF("Codicecontratto", 60, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo, "CodiceContratto", "Codice
contratto") { HeaderFontSize = 7, BackgroundColor = ColorPDF.Bianco }); // Modifica per Saving Map tabellaProdotti.Columns.Add(new ColumnPDF("SavingMap", 10, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Immagine, "SavingMap", string.Empty) { DeltaYContent = 6, ScaleColumnTypeImage = 0.50F }); // Fine Modifica tabellaProdotti.Columns.Add(new ColumnPDF("Descrizione", 145, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo, "Descrizione", "Descrizione") { HeaderFontSize = 7, BackgroundColor = ColorPDF.Bianco, PaddingRight = 2 }); tabellaProdotti.Columns.Add(new ColumnPDF("Controvaloreproposto", 75, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Decimale, "Controvalore", "Controvalore
attuale (€)") { PaddingRight = 5, HeaderFontSize = 7, BackgroundColor = ColorPDF.Bianco, HeaderPaddingLeft = 10 }); tabellaProdotti.Columns.Add(new ColumnPDF("rischiomercato", 40, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo, "Rischiomercato", "VaR (%)") { PaddingRight = 10, HeaderFontSize = 7, BackgroundColor = ColorPDF.Bianco, HeaderPaddingLeft = 4}); tabellaProdotti.Columns.Add(new ColumnPDF("Rischiocredito", 55, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo, "Rischiocredito", "Rischio credito") { PaddingRight = 5, HeaderFontSize = 7, BackgroundColor = ColorPDF.Bianco, HeaderPaddingLeft=6 }); tabellaProdotti.Columns.Add(new ColumnPDF("Complessita", 60, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo, "Complessita", "Complessità") { PaddingRight = 5, HeaderFontSize = 7, BackgroundColor = ColorPDF.Bianco, HeaderPaddingLeft = 4 }); tabellaProdotti.Columns.Add(new ColumnPDF("Liquidita", 60, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo, "Liquidita", "Liquidità/
Liquidabilità") { PaddingRight = 5, HeaderFontSize = 7, BackgroundColor = ColorPDF.Bianco, HeaderPaddingLeft = 4}); for(int h=0; h { new RectanglePDF(8, 8, ColorPDF.GetBy_AreaBisogno(codArea)), new FormattedTextAreaPDF { Text = areaBisogno.Abbreviazione, FontBold = true, FontColor = ColorPDF.Bianco, DeltaX = deltaXSwitch, DeltaY = deltaYSwitch, FontSize=7 } }; tabellaProdotti.Cells[iImmagine, h].ValueObjectList.AddRange(listaOggetti); } tabellaProdotti.Cells[iCodicecontratto, h].Value = pr["Area"].ToString(); } else { if (raggruppaProdotti() == RaggruppaProdotti.Contratto) { float iDeltaY = pr["Area"].ToString().Length > 48 ? -2.5F : 0.1F; tabellaProdotti.Cells[iImmagine, h].ColSpan = 3; tabellaProdotti.Cells[iImmagine, h].ValueObject = new FormattedTextAreaPDF { Text = pr["Area"].ToString(), FontBold = true, FontSize = 7, DeltaX = 11, DeltaY = iDeltaY, Width = 215, TextVerticalAlign = ceTe.DynamicPDF.VAlign.Center }; } else { tabellaProdotti.Cells[iImmagine, h].ColSpan = 3; tabellaProdotti.Cells[iImmagine, h].ValueObject = new FormattedTextAreaPDF { Text = pr["Area"].ToString(), FontBold = true, FontSize = 7, DeltaX = 11 }; } } tabellaProdotti.Cells[iImmagine, h].BackgroundColor = tabellaProdotti.Cells[iCodicecontratto, h].BackgroundColor = tabellaProdotti.Cells[iDescrizione, h].BackgroundColor = tabellaProdotti.Cells[iSavingMap, h].BackgroundColor = tabellaProdotti.Cells[iControvaloreproposto, h].BackgroundColor = tabellaProdotti.Cells[iRischiomercato, h].BackgroundColor = tabellaProdotti.Cells[iRischiocredito, h].BackgroundColor = tabellaProdotti.Cells[iComplessita, h].BackgroundColor = tabellaProdotti.Cells[iLiquidita, h].BackgroundColor = ColorPDF.ConsulenzaUnica_Grigio_SfondoColonnaHeaderFooterTabella; tabellaProdotti.Cells[iImmagine, h].FontBold = tabellaProdotti.Cells[iCodicecontratto, h].FontBold = tabellaProdotti.Cells[iDescrizione, h].FontBold = tabellaProdotti.Cells[iControvaloreproposto, h].FontBold = tabellaProdotti.Cells[iRischiomercato, h].FontBold = tabellaProdotti.Cells[iRischiocredito, h].FontBold = tabellaProdotti.Cells[iComplessita, h].FontBold = tabellaProdotti.Cells[iLiquidita, h].FontBold = true; } else if (!pr["Progetto"].ToString().Equals("")) { tabellaProdotti.Cells[iCodicecontratto, h].ColSpan = 2; tabellaProdotti.Cells[iCodicecontratto, h].Value = pr["Progetto"].ToString(); tabellaProdotti.Cells[iImmagine, h].BackgroundColor = tabellaProdotti.Cells[iCodicecontratto, h].BackgroundColor = tabellaProdotti.Cells[iDescrizione, h].BackgroundColor = tabellaProdotti.Cells[iSavingMap, h].BackgroundColor = tabellaProdotti.Cells[iControvaloreproposto, h].BackgroundColor = tabellaProdotti.Cells[iRischiomercato, h].BackgroundColor = tabellaProdotti.Cells[iRischiocredito, h].BackgroundColor = tabellaProdotti.Cells[iComplessita, h].BackgroundColor = tabellaProdotti.Cells[iLiquidita, h].BackgroundColor = Convert.ToBoolean(pr["BackgroundGray"]) ? ColorPDF.ConsulenzaUnica_Grigio_SfondoColonnaHeaderFooterTabella : ColorPDF.Bianco; tabellaProdotti.Cells[iImmagine, h].FontBold = tabellaProdotti.Cells[iCodicecontratto, h].FontBold = tabellaProdotti.Cells[iDescrizione, h].FontBold = tabellaProdotti.Cells[iControvaloreproposto, h].FontBold = tabellaProdotti.Cells[iRischiomercato, h].FontBold = tabellaProdotti.Cells[iRischiocredito, h].FontBold = tabellaProdotti.Cells[iComplessita, h].FontBold = tabellaProdotti.Cells[iLiquidita, h].FontBold = Convert.ToBoolean(pr["FontBold"]); } else { tabellaProdotti.Cells[iImmagine, h].BackgroundColor = tabellaProdotti.Cells[iCodicecontratto, h].BackgroundColor = tabellaProdotti.Cells[iDescrizione, h].BackgroundColor = tabellaProdotti.Cells[iSavingMap, h].BackgroundColor = tabellaProdotti.Cells[iControvaloreproposto, h].BackgroundColor = tabellaProdotti.Cells[iRischiomercato, h].BackgroundColor = tabellaProdotti.Cells[iRischiocredito, h].BackgroundColor = tabellaProdotti.Cells[iComplessita, h].BackgroundColor = tabellaProdotti.Cells[iLiquidita, h].BackgroundColor = Convert.ToBoolean(pr["BackgroundGray"]) ? ColorPDF.ConsulenzaUnica_Grigio_SfondoColonnaHeaderFooterTabella : ColorPDF.Bianco; tabellaProdotti.Cells[iImmagine, h].FontBold = tabellaProdotti.Cells[iCodicecontratto, h].FontBold = tabellaProdotti.Cells[iDescrizione, h].FontBold = tabellaProdotti.Cells[iControvaloreproposto, h].FontBold = tabellaProdotti.Cells[iRischiomercato, h].FontBold = tabellaProdotti.Cells[iRischiocredito, h].FontBold = tabellaProdotti.Cells[iComplessita, h].FontBold = tabellaProdotti.Cells[iLiquidita, h].FontBold = Convert.ToBoolean(pr["FontBold"]); } tabellaProdotti.Cells[ iControvaloreproposto,h].HorizontalAlignment = HorizontalAlignmentType.Destra; tabellaProdotti.Cells[ iRischiomercato,h].HorizontalAlignment = HorizontalAlignmentType.Destra; tabellaProdotti.Cells[ iRischiocredito,h].HorizontalAlignment = HorizontalAlignmentType.Destra; tabellaProdotti.Cells[iComplessita, h].HorizontalAlignment = HorizontalAlignmentType.Destra; tabellaProdotti.Cells[iLiquidita, h].HorizontalAlignment = HorizontalAlignmentType.Destra; } tabellaProdotti.FooterColumns.Add(new ColumnPDF("spazio", 15, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo) { FontSize = 6 }); tabellaProdotti.FooterColumns.Add(new ColumnPDF("Totale", 205, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo) { FontSize = 7 }); tabellaProdotti.FooterColumns.Add(new ColumnPDF("controvalore", 80, HorizontalAlignmentType.Destra, false, true, 7, ColumnType.Testo) { PaddingRight = 4, FontSize = 7 }); tabellaProdotti.FooterColumns.Add(new ColumnPDF("var", 40, HorizontalAlignmentType.Destra, false, true, 7, ColumnType.Testo) { PaddingRight = 10, FontSize = 7 }); tabellaProdotti.FooterColumns.Add(new ColumnPDF("risc", 55, HorizontalAlignmentType.Destra, false, true, 7, ColumnType.Testo) { PaddingRight = 4, FontSize = 7 }); tabellaProdotti.FooterColumns.Add(new ColumnPDF("compl", 60, HorizontalAlignmentType.Destra, false, true, 7, ColumnType.Testo) { PaddingRight = 5, FontSize = 7 }); tabellaProdotti.FooterColumns.Add(new ColumnPDF("liq", 60, HorizontalAlignmentType.Destra, false, true, 7, ColumnType.Testo) { FontSize = 7 }); DataRow drProdottifooter = dati.Tables["prodottifooter"].Rows[0]; tabellaProdotti.FooterCells[0, 0].Value = ""; tabellaProdotti.FooterCells[1, 0].Value = drProdottifooter["patrimonio"].ToString(); tabellaProdotti.FooterCells[2, 0].Value = Helper.FormatCurrency(drProdottifooter["Complessivo"].ToString()); tabellaProdotti.FooterCells[3, 0].Value = drProdottifooter["varDecodificato"].ToString(); tabellaProdotti.FooterCells[4, 0].Value = drProdottifooter["rischioCreditoDecodificato"].ToString(); tabellaProdotti.FooterCells[5, 0].Value = drProdottifooter["descrizioneClasseComplessita"].ToString(); ; tabellaProdotti.FooterCells[6, 0].Value = "-"; //NOTA 40.2 - 40.9 if (getNota1().Length > 0) { AddElement(new SpacePDF(15)); tabellaProdotti.Notes.Add( new TableNotePDF(TableNotePDF.TableNotePositionType.PièDiTabella, getNota1(), new[] { "compl" }, "", TableNotePDF.TableNoteAsteriskPositionType.PieDiTabella) { DeltaY = 5, FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify } ); } AddElement(tabellaProdotti); #endregion } #endregion #region focus emittenti if (dati.Tables["emittentiObb"].Rows.Count >0 || dati.Tables["emittentiAz"].Rows.Count > 0 || dati.Tables["fondi"].Rows.Count > 0) { if (saltoPagina) AddElement(new PagePDF(PagePDF.PagePDFType.Generic)); saltoPagina = true; var intestazioneEmittenti = new ChapterHeadingPDF( getCapitolo4(), getTesto4(), EnvironmentFacade.RendererFacade.XLeftLimit, EnvironmentFacade.RendererFacade.YUpperLimit, EnvironmentFacade.ReportEnvironment.FontFamily); AddElement(intestazioneEmittenti.ToElement()); } #region emittenti obbligazionari //Adriano 07/09/2017: Per i Clienti Professionali bisogna fare modifiche sulla tabellaEmittentiObb per la Soglia di Concentrazione = 50 (Colonna 4) e Adeguatezza = "Adeguato" (Colonna 5) if (dati.Tables["emittentiObb"].Rows.Count > 0) { var tabellaEmittentiObb = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["emittentiObb"], dati.Tables["emittentiObbfooter"]) { Style = Style.ConsulenzaUnica, Footer = true, AlternateRow = false, ShowBorderLastLine = false, HeaderHeight = 30, HeaderFontSize = 7, AutoIncrementYWritable=true, ShowSeparationLines = true, ShowFooterSeparationLines = true }; tabellaEmittentiObb.Columns.Add(new ColumnPDF("Emittente", 185, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Testo, "Emittenti", "Emittenti obbligazionari") { HeaderFontSize = 6, BackgroundColor = ColorPDF.Bianco, PaddingRight = 5 }); tabellaEmittentiObb.Columns.Add(new ColumnPDF("Controvaloreproposto", 65, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Decimale, "Controvaloreproposto", "Controvalore attuale (€)") { PaddingRight = 5, HeaderFontSize =6, BackgroundColor = ColorPDF.Bianco }); tabellaEmittentiObb.Columns.Add(new ColumnPDF("Franchigia", 65, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Testo, "Franchigia", "Franchigia (€)") { PaddingRight = 5, HeaderFontSize = 6, BackgroundColor = ColorPDF.Bianco }); tabellaEmittentiObb.Columns.Add(new ColumnPDF("Concentrazione", 70, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Decimale, "Concentrazione", "Concentrazione (%)") { PaddingRight = 5, HeaderFontSize = 6, BackgroundColor = ColorPDF.Bianco }); tabellaEmittentiObb.Columns.Add(new ColumnPDF("Soglia", 70, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Decimale, "Sogliaconcentrazione", "Soglia di concentrazione (%)") { PaddingRight = 5, HeaderFontSize = 6, BackgroundColor = ColorPDF.Bianco }); tabellaEmittentiObb.Columns.Add(new ColumnPDF("Adeguatezza", 65, HorizontalAlignmentType.Centrato, false, false, 6, ColumnType.Testo, "Adeguatezza", "Adeguatezza") { HeaderFontSize = 6, BackgroundColor = ColorPDF.Bianco }); tabellaEmittentiObb.FooterColumns.Add(new ColumnPDF("Emittente", 185, HorizontalAlignmentType.Sinistra, true, true, 6, ColumnType.Testo) ); tabellaEmittentiObb.FooterColumns.Add(new ColumnPDF("Controvaloreproposto", 65, HorizontalAlignmentType.Destra, true, true, 6, ColumnType.Decimale) { PaddingRight = 4 }); tabellaEmittentiObb.FooterColumns.Add(new ColumnPDF("Franchigia", 65, HorizontalAlignmentType.Destra, true, true, 6, ColumnType.Decimale) { PaddingRight = 4 }); tabellaEmittentiObb.FooterColumns.Add(new ColumnPDF("Concentrazione", 70, HorizontalAlignmentType.Destra, true, true, 6, ColumnType.Decimale) { PaddingRight = 4 }); tabellaEmittentiObb.FooterColumns.Add(new ColumnPDF("Soglia", 70, HorizontalAlignmentType.Destra, true, true, 6, ColumnType.Decimale) { PaddingRight = 4 }); tabellaEmittentiObb.FooterColumns.Add(new ColumnPDF("Adeguatezza", 65, HorizontalAlignmentType.Centrato, true, true, 6, ColumnType.Testo) { PaddingRight = 4 }); for (int l = 0; l < dati.Tables["emittentiObb"].Rows.Count; l++) { DataRow concetrazione = dati.Tables["emittentiObb"].Rows[l]; int indexEmittente = 0; int indexAdeguatezza = 5; tabellaEmittentiObb.Cells[0, l].Value =concetrazione["Emittenti"].ToString().ToLower().Contains("titoli") ? " "+concetrazione["Emittenti"].ToString()+"" : concetrazione["Emittenti"].ToString() ; switch (concetrazione["Adeguatezza"].ToString()) { case "Adeguato": concetrazione["Adeguatezza"] = "Adeguato"; tabellaEmittentiObb.Cells[indexAdeguatezza, l].FontColor = ColorPDF.Verde; break; case "Non adeguato": concetrazione["Adeguatezza"] = "Non adeguato"; tabellaEmittentiObb.Cells[indexAdeguatezza, l].FontColor = ColorPDF.Rosso; break; default: concetrazione["Adeguatezza"] = "n.a."; tabellaEmittentiObb.Cells[indexAdeguatezza, l].FontColor = ColorPDF.Nero; break; } tabellaEmittentiObb.Cells[1, l].HorizontalAlignment = tabellaEmittentiObb.Cells[2, l].HorizontalAlignment = tabellaEmittentiObb.Cells[3, l].HorizontalAlignment = tabellaEmittentiObb.Cells[4, l].HorizontalAlignment = HorizontalAlignmentType.Destra; } AddElement(tabellaEmittentiObb); if (flagFiduciariaPlurimandato) { string testoobbligazionarie = "In tabella sono riportati gli emittenti relativi a tutte le obbligazioni detenute dai mandati fiduciari associati al medesimo fiduciante a cui appartiene il mandato " + datiSeiUnico.getClienteReport().codiceMandato+"."; AddElement(new SpacePDF(10)); AddElement(new FormattedTextAreaPDF("(*) " + testoobbligazionarie, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); } AddElement(new SpacePDF(25)); } #endregion #region emittenti azionari //Adriano 07/09/2017: Per i Clienti Professionali bisogna fare modifiche sulla tabellaEmittentiAz per la Soglia di Concentrazione = 50 (Colonna 4) e Adeguatezza = "Adeguato" (Colonna 5) if (dati.Tables["emittentiAz"].Rows.Count > 0) { var tabellaEmittentiAz = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["emittentiAz"], dati.Tables["emittentiAzfooter"]) { Style = Style.ConsulenzaUnica, Footer = true, AlternateRow = false, ShowBorderLastLine = false, HeaderHeight = 30, HeaderFontSize = 7, ShowSeparationLines = true, ShowFooterSeparationLines = true }; tabellaEmittentiAz.Columns.Add(new ColumnPDF("Emittente", 185, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Testo, "Emittenti", "Emittenti azionari") { HeaderFontSize = 6, BackgroundColor = ColorPDF.Bianco, PaddingRight = 5 }); tabellaEmittentiAz.Columns.Add(new ColumnPDF("Controvaloreproposto", 65, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Decimale, "Controvaloreproposto", "Controvalore attuale (€)") {PaddingRight=5, HeaderFontSize = 6, BackgroundColor = ColorPDF.Bianco }); tabellaEmittentiAz.Columns.Add(new ColumnPDF("Franchigia", 65, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Testo, "Franchigia", "Franchigia (€)") { PaddingRight = 5, HeaderFontSize = 6, BackgroundColor = ColorPDF.Bianco }); tabellaEmittentiAz.Columns.Add(new ColumnPDF("Concentrazione", 70, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Decimale, "Concentrazione", "Concentrazione (%)") { PaddingRight = 5, HeaderFontSize = 6, BackgroundColor = ColorPDF.Bianco }); tabellaEmittentiAz.Columns.Add(new ColumnPDF("Soglia", 70, HorizontalAlignmentType.Sinistra, false, false, 6, ColumnType.Decimale, "Sogliaconcentrazione", "Soglia di concentrazione (%)") { PaddingRight = 5, HeaderFontSize = 6, BackgroundColor = ColorPDF.Bianco }); tabellaEmittentiAz.Columns.Add(new ColumnPDF("Adeguatezza", 65, HorizontalAlignmentType.Centrato, false, false, 6, ColumnType.Testo, "Adeguatezza", "Adeguatezza") { HeaderFontSize = 6, BackgroundColor = ColorPDF.Bianco }); tabellaEmittentiAz.FooterColumns.Add(new ColumnPDF("Emittente", 185, HorizontalAlignmentType.Sinistra, true, true, 6, ColumnType.Testo)); tabellaEmittentiAz.FooterColumns.Add(new ColumnPDF("Controvaloreproposto", 65, HorizontalAlignmentType.Destra, true, true,6, ColumnType.Decimale) { PaddingRight=4}); tabellaEmittentiAz.FooterColumns.Add(new ColumnPDF("Franchigia", 65, HorizontalAlignmentType.Destra, true, true, 6, ColumnType.Decimale){ PaddingRight=4}); tabellaEmittentiAz.FooterColumns.Add(new ColumnPDF("Concentrazione", 70, HorizontalAlignmentType.Destra, true, true, 6, ColumnType.Decimale){ PaddingRight=4}); tabellaEmittentiAz.FooterColumns.Add(new ColumnPDF("Soglia", 70, HorizontalAlignmentType.Destra, true, true, 6, ColumnType.Decimale){ PaddingRight=4}); tabellaEmittentiAz.FooterColumns.Add(new ColumnPDF("Adeguatezza", 65, HorizontalAlignmentType.Centrato, true, true, 6, ColumnType.Testo) { PaddingRight = 4 }); for (int l = 0; l < dati.Tables["emittentiAz"].Rows.Count; l++) { DataRow concetrazione = dati.Tables["emittentiAz"].Rows[l]; int indexEmittente = 0; int indexAdeguatezza = 5; tabellaEmittentiAz.Cells[0, l].Value = concetrazione["Emittenti"].ToString().ToLower().Contains("titoli") ? " " + concetrazione["Emittenti"].ToString() + "" : concetrazione["Emittenti"].ToString(); switch (concetrazione["Adeguatezza"].ToString()) { case "Adeguato": concetrazione["Adeguatezza"] = "Adeguato"; tabellaEmittentiAz.Cells[indexAdeguatezza, l].FontColor = ColorPDF.Verde; break; case "Non adeguato": concetrazione["Adeguatezza"] = "Non adeguato"; tabellaEmittentiAz.Cells[indexAdeguatezza, l].FontColor = ColorPDF.Rosso; break; default: concetrazione["Adeguatezza"] = "n.a."; tabellaEmittentiAz.Cells[indexAdeguatezza, l].FontColor = ColorPDF.Nero; break; } tabellaEmittentiAz.Cells[1, l].HorizontalAlignment = tabellaEmittentiAz.Cells[2, l].HorizontalAlignment = tabellaEmittentiAz.Cells[3, l].HorizontalAlignment = tabellaEmittentiAz.Cells[4, l].HorizontalAlignment = HorizontalAlignmentType.Destra; } AddElement(tabellaEmittentiAz); if (flagFiduciariaPlurimandato) { string testoazionarie = "In tabella sono riportati gli emittenti relativi a tutte le azioni detenute dai mandati fiduciari associati al medesimo fiduciante a cui appartiene il mandato " + datiSeiUnico.getClienteReport().codiceMandato + "."; AddElement(new SpacePDF(10)); AddElement(new FormattedTextAreaPDF("(*) " + testoazionarie, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); } AddElement(new SpacePDF(25)); } #endregion #region fondi speculativi if (dati.Tables["fondi"].Rows.Count > 0) { var tabellaFondi = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["fondi"], dati.Tables["fondifooter"]) { Style = Style.ConsulenzaUnica, Footer = true, AlternateRow = false, ShowBorderLastLine = false, HeaderHeight = 30, HeaderFontSize = 7, RowHeight = 25, ShowSeparationLines = true, ShowFooterSeparationLines = true }; tabellaFondi.Columns.Add(new ColumnPDF("Emittente", 150, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Emittenti", "Fondi speculativi") { HeaderFontSize = 7, PaddingRight = 5, BackgroundColor = ColorPDF.Bianco, FontSize = 7 }); tabellaFondi.Columns.Add(new ColumnPDF("Controvaloreproposto", 110, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Controvaloreproposto", "Controvalore attuale (€)") { DeltaYContent=4, PaddingRight = 5, HeaderFontSize = 7, BackgroundColor = ColorPDF.Bianco }); //tabellaFondi.Columns.Add(new ColumnPDF("Franchigia", 65, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "Franchigia", "Franchigia
controvalore (€)") { BackgroundColor = ColorPDF.Bianco }); tabellaFondi.Columns.Add(new ColumnPDF("Concentrazione", 100, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Concentrazione", "Concentrazione (%)") { DeltaYContent=4, PaddingRight = 5, HeaderFontSize = 7, BackgroundColor = ColorPDF.Bianco }); tabellaFondi.Columns.Add(new ColumnPDF("Soglia", 90, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Decimale, "Sogliaconcentrazione", "Soglia di concentrazione (%)") { PaddingRight = 5, HeaderFontSize = 7, BackgroundColor = ColorPDF.Bianco }); tabellaFondi.Columns.Add(new ColumnPDF("Adeguatezza", 70, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Testo, "Adeguatezza", "Adeguatezza") { PaddingRight = 5, HeaderFontSize = 7, BackgroundColor = ColorPDF.Bianco }); tabellaFondi.FooterColumns.Add(new ColumnPDF("Emittente", 150, HorizontalAlignmentType.Sinistra, true, true, 7, ColumnType.Testo)); tabellaFondi.FooterColumns.Add(new ColumnPDF("Controvaloreproposto", 110, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 }); //tabellaFondi.FooterColumns.Add(new ColumnPDF("Franchigia", 65, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Testo)); tabellaFondi.FooterColumns.Add(new ColumnPDF("Concentrazione", 100, HorizontalAlignmentType.Destra, true, true,7, ColumnType.Decimale) { PaddingRight = 4 }); tabellaFondi.FooterColumns.Add(new ColumnPDF("Soglia", 90, HorizontalAlignmentType.Destra, true, true, 7, ColumnType.Decimale) { PaddingRight = 4 }); tabellaFondi.FooterColumns.Add(new ColumnPDF("Adeguatezza", 70, HorizontalAlignmentType.Centrato, true, true, 7, ColumnType.Testo) { PaddingRight = 4 }); for (int l = 0; l < dati.Tables["fondi"].Rows.Count; l++) { DataRow concetrazione = dati.Tables["fondi"].Rows[l]; int indexEmittente = 0; int indexAdeguatezza = 4; tabellaFondi.Cells[0, l].Value = concetrazione["Emittenti"].ToString().ToLower().Contains("titoli") ? " " + concetrazione["Emittenti"].ToString() + "" : concetrazione["Emittenti"].ToString(); tabellaFondi.Cells[3, l].Value = "n.a."; tabellaFondi.Cells[indexAdeguatezza, l].Value = "n.a."; tabellaFondi.Cells[indexAdeguatezza, l].FontColor = ColorPDF.Nero; tabellaFondi.Cells[1, l].HorizontalAlignment = tabellaFondi.Cells[2, l].HorizontalAlignment = tabellaFondi.Cells[3, l].HorizontalAlignment = HorizontalAlignmentType.Destra; } //switch (dati.Tables["fondiFooter"].Rows[0]["Adeguatezza"].ToString()) //{ // case "Adeguato": // tabellaFondi.FooterCells[4, 0].FontColor = ColorPDF.Verde; // break; // case "Non adeguato": // tabellaFondi.FooterCells[4, 0].FontColor = ColorPDF.Rosso; // break; // default: // tabellaFondi.FooterCells[4, 0].FontColor = ColorPDF.Nero; // break; //} AddElement(tabellaFondi); if (flagFiduciariaPlurimandato) { string testofondi = "In tabella sono riportati tutti i fondi speculativi detenuti dai mandati fiduciari associati al medesimo fiduciante a cui appartiene il mandato " + datiSeiUnico.getClienteReport().codiceMandato + "."; AddElement(new SpacePDF(10)); AddElement(new FormattedTextAreaPDF("(*) " + testofondi, EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); } AddElement(new SpacePDF(25)); } #endregion #endregion #region Orizzonete Temporale Liquidità / Liquidabilità if (dati.Tables["orizzonte"].Rows.Count == 5) { if (saltoPagina) AddElement(new PagePDF(PagePDF.PagePDFType.Generic)); saltoPagina = true; var intestazioneLiquidita = new ChapterHeadingPDF( Helper.ReplaceVariables(getCapitolo5(), base.EnvironmentFacade.ReportEnvironment), Helper.ReplaceVariables(getTesto6(), base.EnvironmentFacade.ReportEnvironment), EnvironmentFacade.RendererFacade.XLeftLimit, EnvironmentFacade.RendererFacade.YUpperLimit, EnvironmentFacade.ReportEnvironment.FontFamily); AddElement(intestazioneLiquidita.ToElement()); #region Grafico var series = new List(); var coloreSerieAreaAdeguata = new ColorPDF(228, 235, 238); var coloreSerieAreaNonAdeguata = new ColorPDF(204, 217, 222); var graficoCombination = new CombinationPDF(EnvironmentFacade.RendererFacade.XLeftLimit+80, 1F) { Name = "comb", Height = 200, Width = 400, MinorGridAxisY = false, BackColor = coloreSerieAreaNonAdeguata, MarginAxisY = 0, ShowLineAxisY = true, ShowLabelAxisY = true, StartFromZeroAxisY = true, MaximumValueAxisY = 100, // valore fisso IntervalNumberAxisY = 6, CustomLabelAxisY = new List(){ new CombinationPDFCustomLabel{Text = "0,00%", Value = 0d}, new CombinationPDFCustomLabel{Text = "20,00%", Value = 20d}, new CombinationPDFCustomLabel{Text = "40,00%", Value = 40d}, new CombinationPDFCustomLabel{Text = "60,00%", Value = 60d}, new CombinationPDFCustomLabel{Text = "80,00%", Value = 80d}, new CombinationPDFCustomLabel{Text = "100,00%", Value = 100d} }, ShowLineAxisX = true, ShowLabelAxisX = true, StartFromZeroAxisX = true, MaximumValueAxisX = 5, // valore fisso IntervalNumberAxisX = 5, CustomLabelAxisX = new List(){ new CombinationPDFCustomLabel{Text = "", Value = 1d}, new CombinationPDFCustomLabel{Text = "", Value = 2d}, new CombinationPDFCustomLabel{Text = "", Value = 3d}, new CombinationPDFCustomLabel{Text = "", Value = 4d}, new CombinationPDFCustomLabel{Text = "", Value = 5d} } }; series.Add( new Serie { Name = "AreaDiAdeguatezza", Type = Dundas.Charting.WebControl.SeriesChartType.Area, Color = coloreSerieAreaAdeguata, BorderColor = ColorPDF.Nero, BorderWidth = 1, Points = new List() { new Point {Values = new ValuesPointXY(0d, Convert.ToDouble(dati.Tables["orizzonte"].Rows[4]["AdegOT"])),ShowLabelAxisY = false,ShowLabelAxisX = false,Color = coloreSerieAreaAdeguata}, new Point {Values = new ValuesPointXY(1d, Convert.ToDouble(dati.Tables["orizzonte"].Rows[4]["AdegOT"])),ShowLabelAxisY = false,ShowLabelAxisX = false,Color = coloreSerieAreaAdeguata}, new Point {Values = new ValuesPointXY(1d, Convert.ToDouble(dati.Tables["orizzonte"].Rows[3]["AdegOT"])),ShowLabelAxisY = false,ShowLabelAxisX = false,Color = coloreSerieAreaAdeguata}, new Point {Values = new ValuesPointXY(2d, Convert.ToDouble(dati.Tables["orizzonte"].Rows[3]["AdegOT"])),ShowLabelAxisY = false,ShowLabelAxisX = false,Color = coloreSerieAreaAdeguata}, new Point {Values = new ValuesPointXY(2d, Convert.ToDouble(dati.Tables["orizzonte"].Rows[2]["AdegOT"])),ShowLabelAxisY = false,ShowLabelAxisX = false,Color = coloreSerieAreaAdeguata}, new Point {Values = new ValuesPointXY(3d, Convert.ToDouble(dati.Tables["orizzonte"].Rows[2]["AdegOT"])),ShowLabelAxisY = false,ShowLabelAxisX = false,Color = coloreSerieAreaAdeguata}, new Point {Values = new ValuesPointXY(3d, Convert.ToDouble(dati.Tables["orizzonte"].Rows[1]["AdegOT"])),ShowLabelAxisY = false,ShowLabelAxisX = false,Color = coloreSerieAreaAdeguata}, new Point {Values = new ValuesPointXY(4d, Convert.ToDouble(dati.Tables["orizzonte"].Rows[1]["AdegOT"])),ShowLabelAxisY = false,ShowLabelAxisX = false,Color = coloreSerieAreaAdeguata}, new Point {Values = new ValuesPointXY(4d, Convert.ToDouble(dati.Tables["orizzonte"].Rows[0]["AdegOT"])),ShowLabelAxisY = false,ShowLabelAxisX = false,Color = coloreSerieAreaAdeguata}, new Point {Values = new ValuesPointXY(5d, Convert.ToDouble(dati.Tables["orizzonte"].Rows[0]["AdegOT"])),ShowLabelAxisY = false,ShowLabelAxisX = false,Color = coloreSerieAreaAdeguata} } } ); graficoCombination.SeriesCollection = series; AddElement(graficoCombination); var wx = graficoCombination.Width / graficoCombination.IntervalNumberAxisX; bool mostraAdeguatezza = dati.Tables["orizzonte"].AsEnumerable().FirstOrDefault(x => x.Field("Adeguatezza").Equals("Adeguato")) != null ? true : false; bool mostraNonAdeguatezza = dati.Tables["orizzonte"].AsEnumerable().FirstOrDefault(x => x.Field("Adeguatezza").Equals("Non adeguato")) != null ? true : false; if(mostraAdeguatezza) AddElement(new FormattedTextAreaPDF("Area di adeguatezza", graficoCombination.X + 20) { DeltaY = -20, FontSize = 7, AutoIncrementYWritable = false }); if (mostraNonAdeguatezza) AddElement(new FormattedTextAreaPDF("Area di non adeguatezza", graficoCombination.X + 300) { DeltaY = -190, FontSize = 7, AutoIncrementYWritable = false }); AddElement(new FormattedTextAreaPDF(dati.Tables["orizzonte"].Rows[4]["Orizzonte"].ToString(), graficoCombination.X + 18 + wx * 0) {DeltaY=5, FontSize = 7, AutoIncrementYWritable = false }); AddElement(new FormattedTextAreaPDF(dati.Tables["orizzonte"].Rows[3]["Orizzonte"].ToString(), graficoCombination.X + 18 + wx * 1) { DeltaY = 5, FontSize = 7, AutoIncrementYWritable = false }); AddElement(new FormattedTextAreaPDF(dati.Tables["orizzonte"].Rows[2]["Orizzonte"].ToString(), graficoCombination.X + 18 + wx * 2) { DeltaY = 5, FontSize = 7, AutoIncrementYWritable = false }); AddElement(new FormattedTextAreaPDF(dati.Tables["orizzonte"].Rows[1]["Orizzonte"].ToString(), graficoCombination.X + 18 + wx * 3) { DeltaY = 5, FontSize = 7, AutoIncrementYWritable = false }); AddElement(new FormattedTextAreaPDF(dati.Tables["orizzonte"].Rows[0]["Orizzonte"].ToString(), graficoCombination.X + 18 + wx * 4) { DeltaY = 5, FontSize = 7, AutoIncrementYWritable = false }); float allocOT = Convert.ToSingle(dati.Tables["orizzonte"].Rows[4]["AllocOT"]); allocOT = allocOT > 97 ? 97 : allocOT < 4 ? 4 : allocOT; float deltaY = allocOT * -2; float iDeltaY0 = Convert.ToSingle(dati.Tables["orizzonte"].Rows[0]["AllocOT"]) == 0 ? -2.5F : Convert.ToSingle(dati.Tables["orizzonte"].Rows[0]["AllocOT"]) == 100 ? 11 : 4; float iDeltaY1 = Convert.ToSingle(dati.Tables["orizzonte"].Rows[1]["AllocOT"]) == 0 ? -2.5F : Convert.ToSingle(dati.Tables["orizzonte"].Rows[1]["AllocOT"]) == 100 ? 11 : 4; float iDeltaY2 = Convert.ToSingle(dati.Tables["orizzonte"].Rows[2]["AllocOT"]) == 0 ? -2.5F : Convert.ToSingle(dati.Tables["orizzonte"].Rows[2]["AllocOT"]) == 100 ? 11 : 4; float iDeltaY3 = Convert.ToSingle(dati.Tables["orizzonte"].Rows[3]["AllocOT"]) == 0 ? -2.5F : Convert.ToSingle(dati.Tables["orizzonte"].Rows[3]["AllocOT"]) == 100 ? 11 : 4; float iDeltaY4 = Convert.ToSingle(dati.Tables["orizzonte"].Rows[4]["AllocOT"]) == 0 ? -2.5F : Convert.ToSingle(dati.Tables["orizzonte"].Rows[4]["AllocOT"]) == 100 ? 11 : 4; float xg = graficoCombination.X + wx / 2 + wx * 0; //AddElement(new RectanglePDF(xg, 7.000f, 7.000f, new ColorPDF(4, 112, 190)) { DeltaY = deltaY - 4, AutoIncrementYWritable = false, Angle = 45 }); AddElement(new RectanglePDF(xg, 7.000f, 7.000f, new ColorPDF(4, 112, 190)) { DeltaY = deltaY - iDeltaY4, AutoIncrementYWritable = false, Angle = 45 }); AddElement(new FormattedTextAreaPDF(dati.Tables["orizzonte"].Rows[4]["AllocOTDesc"].ToString(), xg + 10) { DeltaY = deltaY - 3, FontSize = 7, AutoIncrementYWritable = false }); allocOT = Convert.ToSingle(dati.Tables["orizzonte"].Rows[3]["AllocOT"]); allocOT = allocOT > 97 ? 97 : allocOT < 4 ? 4 : allocOT; deltaY = allocOT * -2; xg = graficoCombination.X + wx / 2 + wx * 1; AddElement(new RectanglePDF(xg, 7.000f, 7.000f, new ColorPDF(4, 112, 190)) { DeltaY = deltaY - iDeltaY3, AutoIncrementYWritable = false, Angle = 45 }); AddElement(new FormattedTextAreaPDF(dati.Tables["orizzonte"].Rows[3]["AllocOTDesc"].ToString(), xg + 10) { DeltaY = deltaY - 3, FontSize = 7, AutoIncrementYWritable = false }); allocOT = Convert.ToSingle(dati.Tables["orizzonte"].Rows[2]["AllocOT"]); allocOT = allocOT > 97 ? 97 : allocOT < 4 ? 4 : allocOT; deltaY = allocOT * -2; xg = graficoCombination.X + wx / 2 + wx * 2; AddElement(new RectanglePDF(xg, 7.000f, 7.000f, new ColorPDF(4, 112, 190)) { DeltaY = deltaY - iDeltaY2, AutoIncrementYWritable = false, Angle = 45 }); AddElement(new FormattedTextAreaPDF(dati.Tables["orizzonte"].Rows[2]["AllocOTDesc"].ToString(), xg + 10) { DeltaY = deltaY - 3, FontSize = 7, AutoIncrementYWritable = false }); allocOT = Convert.ToSingle(dati.Tables["orizzonte"].Rows[1]["AllocOT"]); allocOT = allocOT > 97 ? 97 : allocOT < 4 ? 4 : allocOT; deltaY = allocOT * -2; xg = graficoCombination.X + wx / 2 + wx * 3; AddElement(new RectanglePDF(xg, 7.000f, 7.000f, new ColorPDF(4, 112, 190)) { DeltaY = deltaY - iDeltaY1, AutoIncrementYWritable = false, Angle = 45 }); AddElement(new FormattedTextAreaPDF(dati.Tables["orizzonte"].Rows[1]["AllocOTDesc"].ToString(), xg + 10) { DeltaY = deltaY - 3, FontSize = 7, AutoIncrementYWritable = false }); allocOT = Convert.ToSingle(dati.Tables["orizzonte"].Rows[0]["AllocOT"]); allocOT = allocOT > 97 ? 97 : allocOT < 4 ? 4 : allocOT; deltaY = allocOT * -2; xg = graficoCombination.X + wx / 2 + wx * 4; AddElement(new RectanglePDF(xg, 7.000f, 7.000f, new ColorPDF(4, 112, 190)) { DeltaY = deltaY - iDeltaY0, AutoIncrementYWritable = false, Angle = 45 }); AddElement(new FormattedTextAreaPDF(dati.Tables["orizzonte"].Rows[0]["AllocOTDesc"].ToString(), xg + 10) { DeltaY = deltaY - 3, FontSize = 7, AutoIncrementYWritable = false }); AddElement(new SpacePDF(30)); #endregion #region ADEGUATEZZA CAP ultimo var tabellaProgetti = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["orizzonte"]) { Style = Style.ConsulenzaUnica, HeaderHeight = 30, AlternateRow = false, ShowSeparationLines = true, Footer = false, ShowFooterSeparationLines = true }; tabellaProgetti.Columns.Add(new ColumnPDF("Oriztemp", 120, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Orizzonte", "Orizzonte
temporale") { HeaderFontSize = 7, FontSize=7}); tabellaProgetti.Columns.Add(new ColumnPDF("Quest", 90, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Questionario", "Questionario
MiFID (%)") { HeaderFontSize = 7, PaddingRight = 10, FontSize = 7 }); tabellaProgetti.Columns.Add(new ColumnPDF("Port", 90, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "Portafoglioattuale", "Portafoglio
attuale (%)") { HeaderFontSize = 7, PaddingRight = 10, FontSize = 7 }); tabellaProgetti.Columns.Add(new ColumnPDF("Adeg", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "AdegOTString", "Adeguatezza per OT (%)") { HeaderFontSize = 7, PaddingRight = 10, FontSize = 7 }); tabellaProgetti.Columns.Add(new ColumnPDF("Alloc", 70, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "AllocOTDesc", "Alloc. attuale per OT (%)") { HeaderFontSize = 7, PaddingRight = 10, FontSize = 7 }); tabellaProgetti.Columns.Add(new ColumnPDF("Adeguatezza", 80, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Testo, "Adeguatezza", "Adeguatezza") { HeaderFontSize = 7, FontSize = 7 }); int z = 0; foreach (DataRow r in dati.Tables["orizzonte"].Rows) { switch (r["Adeguatezza"].ToString()) { case "S": r["Adeguatezza"] = "Adeguato"; tabellaProgetti.Cells[5, z].FontColor = ColorPDF.Verde; break; case "N": r["Adeguatezza"] = "Non adeguato"; tabellaProgetti.Cells[5, z].FontColor = ColorPDF.Rosso; break; default: r["Adeguatezza"] = "n.a."; tabellaProgetti.Cells[5, z].FontColor = ColorPDF.Nero; break; } //tabellaProgetti.Cells[5, z].Value = r["Adeguatezza"] == null ? "n.a." : r["Adeguatezza"].ToString().Equals("S") ? "Adeguato" : r["Adeguatezza"].ToString().Equals("N") ? "Non adeguato" : r["Adeguatezza"].ToString(); // tabellaProgetti.Cells[5, z].FontColor = r["Adeguatezza"] == null ? ColorPDF.Nero : r["Adeguatezza"].ToString().Equals("S") ? ColorPDF.Verde : r["Adeguatezza"].ToString().Equals("N") ? ColorPDF.Rosso : ColorPDF.Nero; tabellaProgetti.Cells[1, z].HorizontalAlignment = tabellaProgetti.Cells[2, z].HorizontalAlignment = tabellaProgetti.Cells[3, z].HorizontalAlignment = tabellaProgetti.Cells[4, z].HorizontalAlignment = HorizontalAlignmentType.Destra; z++; } AddElement(tabellaProgetti); if (flagFiduciariaPlurimandato) { string testoorizzonte = "La ripartizione del patrimonio $/Banca/$ sui diversi orizzonti temporali prende in considerazione tutti i prodotti detenuti dai mandati fiduciari associati al medesimo fiduciante a cui appartiene il mandato " + datiSeiUnico.getClienteReport().codiceMandato + "."; AddElement(new SpacePDF(10)); AddElement(new FormattedTextAreaPDF("(*) " + datiSeiUnico.FormatBanca(testoorizzonte), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); } #endregion } #endregion } protected sealed override DataTable GetDataTable() { return null; } protected sealed override DataSet GetDataSet() { //Adriano #region Cliente professionale var cliente = datiSeiUnico.clienteUnit().anagrafica; bool profiloProfessionale; bool profiloAggressivo; bool profiloProfessionaleAggressivo; Profiler profiler; profiler = new Profiler(cliente); profiloProfessionale = profiler.ProfiloProfessionale; profiloAggressivo = profiler.ProfiloAggressivo; profiloProfessionaleAggressivo = profiler.ProfiloProfessionaleAggressivo; #endregion //--Adriano //Adriano: inserito var notaContrazioneProdottiComplessi da sostituire a chiamata diretta della getNota407() nel Draw(), da valorizzare solo in caso di Clienti retail // essendo richiesta l'omissione della suddetta nota per i Clienti Professionali notagradoCoperturaComplessita = ""; notaConcentrazioneProdottiComplessi = ""; if (!profiloProfessionale) notaConcentrazioneProdottiComplessi = getNota407(); //--Adriano #region datatable var ds = new DataSet(); ds.Tables.Add(new DataTable("patrimoni")); ds.Tables.Add(new DataTable("indicatori")); ds.Tables.Add(new DataTable("prodotti")); ds.Tables.Add(new DataTable("prodottifooter")); ds.Tables.Add(new DataTable("emittentiObb")); ds.Tables.Add(new DataTable("emittentiObbfooter")); ds.Tables.Add(new DataTable("emittentiAz")); ds.Tables.Add(new DataTable("emittentiAzfooter")); ds.Tables.Add(new DataTable("fondi")); ds.Tables.Add(new DataTable("fondifooter")); ds.Tables.Add(new DataTable("orizzonte")); ds.Tables["patrimoni"].Columns.Add(new DataColumn("Descrizione", typeof(string))); ds.Tables["patrimoni"].Columns.Add(new DataColumn("Valore", typeof(string))); ds.Tables["indicatori"].Columns.Add(new DataColumn("Indicatore", typeof(string))); ds.Tables["indicatori"].Columns.Add(new DataColumn("Patrimonio", typeof(string))); ds.Tables["indicatori"].Columns.Add(new DataColumn("Sogliamassima", typeof(string))); ds.Tables["indicatori"].Columns.Add(new DataColumn("Gradocopertura", typeof(string))); ds.Tables["indicatori"].Columns.Add(new DataColumn("Adeguatezza", typeof(string))); ds.Tables["prodotti"].Columns.Add(new DataColumn("Area", typeof(string))); ds.Tables["prodotti"].Columns.Add(new DataColumn("Progetto", typeof(string))); ds.Tables["prodotti"].Columns.Add(new DataColumn("CodiceContratto", typeof(string))); ds.Tables["prodotti"].Columns.Add(new DataColumn("Descrizione", typeof(string))); // Modifica per Saving Map ds.Tables["prodotti"].Columns.Add(new DataColumn("SavingMap", typeof(string))); // Fine Modifica ds.Tables["prodotti"].Columns.Add(new DataColumn("Controvalore", typeof(decimal))); ds.Tables["prodotti"].Columns.Add(new DataColumn("Rischiomercato", typeof(string))); ds.Tables["prodotti"].Columns.Add(new DataColumn("Rischiocredito", typeof(string))); ds.Tables["prodotti"].Columns.Add(new DataColumn("Complessita", typeof(string))); ds.Tables["prodotti"].Columns.Add(new DataColumn("Liquidita", typeof(string))); ds.Tables["prodotti"].Columns.Add(new DataColumn("Ordinamento", typeof(int))); ds.Tables["prodotti"].Columns.Add(new DataColumn("FontBold", typeof(bool))); ds.Tables["prodotti"].Columns.Add(new DataColumn("BackgroundGray", typeof(bool))); ds.Tables["prodottifooter"].Columns.Add(new DataColumn("patrimonio", typeof(string))); ds.Tables["prodottifooter"].Columns.Add(new DataColumn("Complessivo", typeof(string))); ds.Tables["prodottifooter"].Columns.Add(new DataColumn("varDecodificato", typeof(string))); ds.Tables["prodottifooter"].Columns.Add(new DataColumn("rischioCreditoDecodificato", typeof(string))); ds.Tables["prodottifooter"].Columns.Add(new DataColumn("descrizioneClasseComplessita", typeof(string))); ds.Tables["prodottifooter"].Columns.Add(new DataColumn("FontBold", typeof(bool))); ds.Tables["prodottifooter"].Columns.Add(new DataColumn("BackgroundGray", typeof(bool))); #endregion #region profilo finanziario bool visualizzaTabellaIndicatoriSintesi = GetOption().Valore; bool visualizzaTabellaProdotti = GetOption().Valore; bool visualizzaSchedaEmittenti = GetOption().Valore; bool visualizzaSchedaLiquidita = GetOption().Valore; bool visualizzaDelegato = (String.IsNullOrEmpty(GetOption().Valore)) ? false : true; var adeguatezza = datiSeiUnico.rischioUnit().adeguatezza; var dataprofilo = adeguatezza.adeguatezzaTopBean.caratteristicheCliente.dtInizioValiditaProfilo; var dataProfiloEC = adeguatezza.adeguatezzaTopBean.caratteristicheCliente.dtInizioValiditaProfiloEC; var delegato = getDelegato(); //var listaDelegati = adeguatezza.adeguatezzaTopBean.delegati; //int idxDelegato = -1; //if (visualizzaDelegato) //{ // string cfDelegato = GetOption().Valore; // foreach ( var delegato in listaDelegati ) // { // if (delegato.codiceFiscale.Equals(cfDelegato)) // { // idxDelegato++; // } // } //} string profiloFinanziario = (adeguatezza.adeguatezzaTopBean.caratteristicheCliente.profilo.Equals(0) ? "" : adeguatezza.adeguatezzaTopBean.caratteristicheCliente.profilo + " - ") + adeguatezza.adeguatezzaTopBean.profile; ds.Tables["patrimoni"].Rows.Add( "Profilo finanziario", profiloFinanziario ); ds.Tables["patrimoni"].Rows.Add( "Data inizio validità", dataprofilo != DateTime.MinValue ? dataprofilo.ToShortDateString().Substring(0, 10) : "n.a." ); ds.Tables["patrimoni"].Rows.Add( "Profilo esperienza e conoscenza", adeguatezza.adeguatezzaTopBean.caratteristicheCliente.descrizioneEsperienzaConoscenza ); ds.Tables["patrimoni"].Rows.Add( "Data inizio validità", dataProfiloEC != DateTime.MinValue ? dataProfiloEC.ToShortDateString().Substring(0, 10) : "n.a." ); //if (!visualizzaDelegato) //{ // ds.Tables["patrimoni"].Rows.Add( // string.Format("Patrimonio {0}", Helper.ReplaceVariables("$/Banca/$", base.EnvironmentFacade.ReportEnvironment)), // dataprofilo == DateTime.MinValue // ? "n.a." : adeguatezza.adeguatezzaTopBean.isAdeguato ? "Adeguato" : "Non adeguato" // ); //} //else //{ // ds.Tables["patrimoni"].Rows.Add( // string.Format("Patrimonio {0}", Helper.ReplaceVariables("$/Banca/$", base.EnvironmentFacade.ReportEnvironment)), // dataprofilo == DateTime.MinValue // ? "n.a." : adeguatezza.adeguatezzaTopBean.isAdeguato ? "Adeguato" : "Non adeguato" // ); //} //ds.Tables["patrimoni"].Rows.Add( // string.Format("Patrimonio {0}", Helper.ReplaceVariables("$/Banca/$", base.EnvironmentFacade.ReportEnvironment)), // dataprofilo == DateTime.MinValue // ? "n.a." : adeguatezza.adeguatezzaTopBean.isAdeguato ? "Adeguato" : "Non adeguato" //); // ds.Tables["patrimoni"].Rows.Add( // string.Format("Patrimonio {0}", Helper.ReplaceVariables("$/Banca/$", base.EnvironmentFacade.ReportEnvironment)), // dataprofilo == DateTime.MinValue // ? "n.a." : adeguatezza.adeguatezzaTopBean.isAdeguato ? "Adeguato" : "n.a." //); ds.Tables["patrimoni"].Rows.Add( string.Format("Patrimonio {0}", Helper.ReplaceVariables("$/Banca/$", base.EnvironmentFacade.ReportEnvironment)), //adeguatezza.adeguatezzaTopBean.isAdeguatoSpecified == false ? "n.a." : adeguatezza.adeguatezzaTopBean.isAdeguato ? "Adeguato" : "n.a." //20180906 AC: adeguatezza.adeguatezzaTopBean.isAdeguatoSpecified == false ? "Non Adeguato" : adeguatezza.adeguatezzaTopBean.isAdeguato ? "Adeguato" : "Non Adeguato" ); #endregion #region indicatore di sintesi if (visualizzaTabellaIndicatoriSintesi) { try { gradoCoperturaRM = Convert.ToDouble(adeguatezza.adeguatezzaTopBean.listaAdeguatezza.AsEnumerable().FirstOrDefault(o => o.id == "RM").copertura.Replace(".", ",")) > 0 && Convert.ToDouble(adeguatezza.adeguatezzaTopBean.listaAdeguatezza.AsEnumerable().FirstOrDefault(o => o.id == "RM").copertura.Replace(".", ",")) < 90; gradoCoperturaRC = Convert.ToDouble(adeguatezza.adeguatezzaTopBean.listaAdeguatezza.AsEnumerable().FirstOrDefault(o => o.id == "RC").copertura.Replace(".", ",")) > 0 && Convert.ToDouble(adeguatezza.adeguatezzaTopBean.listaAdeguatezza.AsEnumerable().FirstOrDefault(o => o.id == "RC").copertura.Replace(".", ",")) < 90; } catch {} foreach (var item in from a in adeguatezza.adeguatezzaTopBean.listaAdeguatezza orderby a.criterioOrdinamento select a) { //string adeguato = dataprofilo == DateTime.MinValue ? "n.a." : item.isAdeguato.ToString().ToLower() == "true" ? "Adeguato" : "Non adeguato"; string adeguato = item.isAdeguatoSpecified == false ? "Non adeguato" : item.isAdeguato.ToString().ToLower() == "true" ? "Adeguato" : "Non adeguato"; //string indicatore = item.descrizioneFlag; //BugFix #2398 Aggiunto controllo per mettere la lettera maiuscola al patrimonio e alla Sogliamassima DataRow ro = ds.Tables["indicatori"].NewRow(); if (item.id == "CM" && profiloProfessionale == false) notagradoCoperturaComplessita = getNota6(item.copertura); ro["Indicatore"] = item.id=="CC" ? "Concentrazione prodotti
complessi (%)" : item.id=="CM" ? item.descrizioneFlag + "*" : (item.id=="RM" && gradoCoperturaRM) ? item.descrizioneFlag+"*" : item.id=="RC" && gradoCoperturaRC ? item.descrizioneFlag+"*" : item.descrizioneFlag; ro["Patrimonio"] = item.descrizioneFlag.ToLower().Contains("emittenti") || item.descrizioneFlag.ToLower().Contains("liq") ? "-" : item.patrimonioFideuram.ToLower().Contains("n.a.") || item.patrimonioFideuram.ToLower().Contains("n.d.") || item.patrimonioFideuram.ToLower().Contains("n.c.") ? item.patrimonioFideuram.ToLower() : Helper.CapitalizeWords(item.patrimonioFideuram).Replace(".", ","); #region gestione errata delegato //if (visualizzaDelegato) //{ // switch (item.descrizioneFlag.ToLower()) // { // case "complessità": // ro["Sogliamassima"] = delegato.desProfiloEC; // ro["Adeguatezza"] = adeguato; // break; // case "frequenza": // ro["Sogliamassima"] = item.soglia.ToLower().Contains("-") || item.soglia.ToLower().Contains("n.a.") || item.soglia.ToLower().Contains("n.d.") || item.soglia.ToLower().Contains("n.c.") ? item.soglia.ToLower() : item.soglia.ToLower().Contains("classe") || item.soglia.ToLower().Contains("alta") || item.soglia.ToLower().Contains("minima") || item.soglia.ToLower().Contains("bassa") || item.soglia.ToLower().Contains("media") || item.soglia.ToLower().Contains("rischio") ? Helper.CapitalizeWords(item.soglia) : item.soglia.Length == 2 ? item.soglia + ",00" : item.soglia.Contains(".") ? item.soglia.Replace(".", ",") : item.soglia; // ro["Adeguatezza"] = adeguato; // break; // default: // ro["Sogliamassima"] = item.soglia.ToLower().Contains("-") || item.soglia.ToLower().Contains("n.a.") || item.soglia.ToLower().Contains("n.d.") || item.soglia.ToLower().Contains("n.c.") ? item.soglia.ToLower() : item.soglia.ToLower().Contains("classe") || item.soglia.ToLower().Contains("alta") || item.soglia.ToLower().Contains("minima") || item.soglia.ToLower().Contains("bassa") || item.soglia.ToLower().Contains("media") || item.soglia.ToLower().Contains("rischio") ? Helper.CapitalizeWords(item.soglia) : item.soglia.Length == 2 ? item.soglia + ",00" : item.soglia.Contains(".") ? item.soglia.Replace(".", ",") : item.soglia; // ro["Adeguatezza"] = adeguato; // break; // } //} //else //{ // ro["Sogliamassima"] = item.soglia.ToLower().Contains("-") || item.soglia.ToLower().Contains("n.a.") || item.soglia.ToLower().Contains("n.d.") || item.soglia.ToLower().Contains("n.c.") ? item.soglia.ToLower() : item.soglia.ToLower().Contains("classe") || item.soglia.ToLower().Contains("alta") || item.soglia.ToLower().Contains("minima") || item.soglia.ToLower().Contains("bassa") || item.soglia.ToLower().Contains("media") || item.soglia.ToLower().Contains("rischio") ? Helper.CapitalizeWords(item.soglia) : item.soglia.Length == 2 ? item.soglia + ",00" : item.soglia.Contains(".") ? item.soglia.Replace(".", ",") : item.soglia; // ro["Adeguatezza"] = adeguato; //} #endregion gestione errata delegato ro["Sogliamassima"] = item.soglia.ToLower().Contains("-") || item.soglia.ToLower().Contains("n.a.") || item.soglia.ToLower().Contains("n.d.") || item.soglia.ToLower().Contains("n.c.") ? item.soglia.ToLower() : item.soglia.ToLower().Contains("classe") || item.soglia.ToLower().Contains("alta") || item.soglia.ToLower().Contains("minima") || item.soglia.ToLower().Contains("bassa") || item.soglia.ToLower().Contains("media") || item.soglia.ToLower().Contains("rischio") ? Helper.CapitalizeWords(item.soglia) : item.soglia.Length == 2 ? item.soglia + ",00" : item.soglia.Contains(".") ? item.soglia.Replace(".", ",") : item.soglia; ro["Adeguatezza"] = adeguato; ro["Gradocopertura"] = item.copertura.Contains("-") ? item.copertura : item.copertura !="n.c." ? item.copertura.Replace(".",",") : item.copertura; ds.Tables["indicatori"].Rows.Add(ro); } } #endregion #region prodotti if (visualizzaTabellaProdotti) { switch (raggruppaProdotti()) { case RaggruppaProdotti.Categoria: foreach (var item in from l in adeguatezza.listaProdottiCategoria.items orderby l.ordinamento, l.currentEquivalent descending select l) { ds.Tables["prodotti"].Rows.Add( item.name, "",//item.name, prova "", "", // SavingMap "", // Fine item.currentEquivalent, getFormat(item.marketRisk), "-", "-", "-", item.ordinamento, true, true ); ElencoProdotti(ds.Tables["prodotti"], item, item.ordinamento); } TotaleRisorseCategoria(ds.Tables["prodotti"], adeguatezza.listaProdottiCategoria, int.MaxValue); break; case RaggruppaProdotti.Contratto: foreach (var item in from l in adeguatezza.listaProdottiContratti.items orderby l.currentEquivalent descending select l) { ds.Tables["prodotti"].Rows.Add( item.name, "", "", "", // SavingMap "", // Fine item.currentEquivalent, getFormat(item.marketRisk), "-", "-", "-", item.ordinamento, true, true ); ElencoProdotti(ds.Tables["prodotti"], item, item.ordinamento); } TotaleRisorseContratto(ds.Tables["prodotti"], adeguatezza.listaProdottiContratti, int.MaxValue); break; default: foreach (var item in from l in adeguatezza.listaProdottiArea.items orderby l.ordinamento, l.currentEquivalent select l) { if (item.currentEquivalent > 0) { ds.Tables["prodotti"].Rows.Add( item.name, "", "", "", // SavingMap "", // Fine item.currentEquivalent, getFormat(item.marketRisk), "-", "-", "-", item.ordinamento, true, true ); ElencoProdotti(ds.Tables["prodotti"], item, item.ordinamento); } } TotaleRisorseAreaBisogno(ds.Tables["prodotti"], adeguatezza.listaProdottiArea, int.MaxValue); break; } DataRow rf = ds.Tables["prodottifooter"].NewRow(); rf["patrimonio"] = string.Format("Patrimonio {0}", Helper.ReplaceVariables("$/Banca/$", base.EnvironmentFacade.ReportEnvironment)); rf["Complessivo"] = datiSeiUnico.CASA_TOTALE; rf["varDecodificato"] = adeguatezza.listaProdottiArea.total.marketRisk; rf["rischioCreditoDecodificato"] = adeguatezza.listaProdottiArea.total.creditRisk.Equals("n.a.") ? adeguatezza.listaProdottiArea.total.creditRisk : adeguatezza.listaProdottiArea.total.creditRisk.Substring(0, 1).ToUpper() + adeguatezza.listaProdottiArea.total.creditRisk.Substring(1, adeguatezza.listaProdottiArea.total.creditRisk.Length - 2) + adeguatezza.listaProdottiArea.total.creditRisk.Substring(adeguatezza.listaProdottiArea.total.creditRisk.Length - 1).ToUpper(); rf["descrizioneClasseComplessita"] = adeguatezza.listaProdottiArea.total.complexity.Substring(0, 1).ToUpper() + adeguatezza.listaProdottiArea.total.complexity.Substring(1); rf["FontBold"] = true; rf["BackgroundGray"] = true; //rf["descrizioneClasseComplessita"] += getNota1().Length > 0 ? "*" : ""; ds.Tables["prodottifooter"].Rows.Add(rf); } #endregion #region focus emittenti obbligazionari if (visualizzaSchedaEmittenti) { ElencoConcentrazioneTitoli( ds.Tables["emittentiObb"], adeguatezza.adeguatezzaTopBean.elencoConcentrazioneTitoli.obbligazionari, 0 ); TotaleConcentrazioneTitoli(ds.Tables["emittentiObbfooter"], "Totale emittenti obbligazionari", adeguatezza.adeguatezzaTopBean.elencoConcentrazioneTitoli.ctvTotaleObbligazionari, adeguatezza.adeguatezzaTopBean.elencoConcentrazioneTitoli.concentrazioneTotObbligazionari); } #endregion #region focus emittenti azionari if (visualizzaSchedaEmittenti) { ElencoConcentrazioneTitoli( ds.Tables["emittentiAz"], adeguatezza.adeguatezzaTopBean.elencoConcentrazioneTitoli.azionari, 0 ); TotaleConcentrazioneTitoli( ds.Tables["emittentiAzfooter"], "Totale emittenti azionari", adeguatezza.adeguatezzaTopBean.elencoConcentrazioneTitoli.ctvTotaleAzionari, adeguatezza.adeguatezzaTopBean.elencoConcentrazioneTitoli.concentrazioneTotAzionari ); } #endregion #region focus fondi speculativi if (visualizzaSchedaEmittenti) { ElencoConcentrazioneTitoli( ds.Tables["fondi"], adeguatezza.adeguatezzaTopBean.elencoConcentrazioneTitoli.speculativi, 0 ); if(ds.Tables["fondi"].AsEnumerable().FirstOrDefault(o => o.Field("Emittenti").ToLower().Contains("fondi speculativi")) != null) ds.Tables["fondi"].Rows.Remove(ds.Tables["fondi"].AsEnumerable().FirstOrDefault(o => o.Field("Emittenti").ToLower().Contains("fondi speculativi"))); TotaleConcentrazioneTitoli( ds.Tables["fondifooter"], "Totale fondi speculativi", adeguatezza.adeguatezzaTopBean.elencoConcentrazioneTitoli.ctvTotaleSpeculativi, adeguatezza.adeguatezzaTopBean.elencoConcentrazioneTitoli.concentrazioneTotSpeculativi); } #endregion #region Orizzonte Temporale Liquidità / Liquidabilità ds.Tables["orizzonte"].Columns.Add(new DataColumn("Orizzonte", typeof(string))); ds.Tables["orizzonte"].Columns.Add(new DataColumn("Questionario", typeof(string))); ds.Tables["orizzonte"].Columns.Add(new DataColumn("Portafoglioattuale", typeof(string))); ds.Tables["orizzonte"].Columns.Add(new DataColumn("AdegOT", typeof(decimal))); ds.Tables["orizzonte"].Columns.Add(new DataColumn("AdegOTString", typeof(string))); ds.Tables["orizzonte"].Columns.Add(new DataColumn("AllocOT", typeof(string))); ds.Tables["orizzonte"].Columns.Add(new DataColumn("AllocOTDesc", typeof(string))); ds.Tables["orizzonte"].Columns.Add(new DataColumn("Adeguatezza", typeof(string))); if (adeguatezza.adeguatezzaTopBean.elencoOrizzontiTemporali != null) { if (visualizzaSchedaLiquidita) { foreach (var item in adeguatezza.adeguatezzaTopBean.elencoOrizzontiTemporali) { ds.Tables["orizzonte"].Rows.Add( //Orizzonte item.timeHorizon, //Questionario item.questionnaireMiFIDSpecified ? Convert.ToDecimal(item.questionnaireMiFID).ToString() : "n.a.", //Portafoglioattuale Convert.ToDecimal(item.currentPortfolio), //Adeguatezza OT !adeguatezza.adeguatezzaTopBean.caratteristicheCliente.profilo.Equals(0) ? Convert.ToDecimal(item.adequacyForHorizon) : 0, //Adeguatezza OT stringa !adeguatezza.adeguatezzaTopBean.caratteristicheCliente.profilo.Equals(0) ? Convert.ToDecimal(item.adequacyForHorizon).ToString() : "n.a.", //Allocazione OT Convert.ToDecimal( item.locationToHorizon), //Allocazione OT DESC datiSeiUnico.FormatDecimal("{0}",item.locationToHorizon), //Adeguatezza !item.questionnaireMiFIDSpecified ? "n.a." : item.adequacy ); } //dtProfilo.Rows.Add("Oltre 10 anni", "10.82", "27.00","100.00","10.82", true); //dtProfilo.Rows.Add("Tra 7 e 10 anni", "25.00", "25.00", "100.00","25.00", false); } } #endregion return ds; } private void ElencoProdotti(DataTable dt, Consulenza.DataServices.fideuram.data.service.prodottiAdeguatezzaBean item, int ordinamento) { if (item.items == null) return; var items = !item.name.Contains("Previdenza") ? from o in item.items orderby o.currentEquivalent descending select o : from o in item.items orderby o.name select o ; foreach (var it in from o in item.items orderby o.currentEquivalent descending select o) { string progetto = it.name; string codiceContratto = ""; string descrizione = ""; string imageSaving = ""; if (it.contractId != null) { progetto = ""; codiceContratto = it.contractId; descrizione = it.name; if (it.savingMap) //if (descrizione.Substring(0, 2).ToString().ToUpper() == "FV") imageSaving = "SavingMap.png"; } if (it.currentEquivalent > 0) { dt.Rows.Add( "", progetto, codiceContratto, descrizione, imageSaving, it.currentEquivalent, it.marketRisk != null ? getFormat(it.marketRisk) : "-", progetto.Equals("") && it.creditRisk != null ? getFormat(it.creditRisk) : "-", progetto.Equals("") && it.complexity != null ? getFormat(it.complexity) : "-", progetto.Equals("") && it.liquidity != null ? it.liquidity : "-", ordinamento, progetto.Equals("") ? false : true, progetto.Equals("") ? false : true ); } ElencoProdotti(dt, it, item.ordinamento); } } private void ElencoProdotti(DataTable dt, Consulenza.DataServices.fideuram.data.service.prodottoAdeguatezzaBean item, int ordinamento) { if (item.items == null) return; foreach (var it in from o in item.items orderby o.currentEquivalent descending select o) { string progetto = it.name; string codiceContratto = ""; string descrizione = ""; string imageSaving = ""; if (it.contractId != null) { progetto = ""; codiceContratto = it.contractId; descrizione = it.name; if (it.savingMap) //if (descrizione.Substring(0, 2).ToString().ToUpper() == "FV") imageSaving = "SavingMap.png"; } dt.Rows.Add( "", progetto, codiceContratto, descrizione, imageSaving, it.currentEquivalent, it.marketRisk != null ? getFormat(it.marketRisk) : "-", progetto.Equals("") && it.creditRisk != null ? getFormat(it.creditRisk) : "-", progetto.Equals("") && it.complexity != null ? getFormat(it.complexity) : "-", progetto.Equals("") && it.liquidity != null ? it.liquidity : "-", ordinamento, false, false ); ElencoProdotti(dt, it, ordinamento); } } // AC private void TotaleRisorseAreaBisogno(DataTable dt, listaProdottiAdeguatezza lPro, int ordinamento) { prodottoAdeguatezzaBean other = lPro.other; decimal CASA_OC = datiSeiUnico.CASA_OC; decimal CASA_CCN = datiSeiUnico.CASA_CCN; decimal CASA_GPELIGO = datiSeiUnico.CASA_GPELIGO; decimal CASA_FOGLIO = datiSeiUnico.CASA_TUOFOGLIO; if (CASA_OC != 0 || CASA_CCN != 0 || CASA_GPELIGO != 0 || CASA_FOGLIO!=0) { DataRow ro = dt.NewRow(); ro["Area"] = "Totale risorse finanziarie";//"Totale risorse allocate"; ro["Progetto"] = ""; ro["CodiceContratto"] = ""; ro["Descrizione"] = ""; ro["Controvalore"] = datiSeiUnico.CASA_SUBTOTALE; ro["Rischiomercato"] = lPro.financialResources.marketRisk; ro["Rischiocredito"] = lPro.financialResources.creditRisk.Equals("n.a.") ? lPro.financialResources.creditRisk : lPro.financialResources.creditRisk.Substring(0, 1).ToUpper() + lPro.financialResources.creditRisk.Substring(1, lPro.financialResources.creditRisk.Length - 2) + lPro.financialResources.creditRisk.Substring(lPro.financialResources.creditRisk.Length - 1).ToUpper(); ro["Complessita"] = lPro.financialResources.complexity.Substring(0, 1).ToUpper() + lPro.financialResources.complexity.Substring(1); ro["Liquidita"] = "-"; ro["Ordinamento"] = ordinamento; ro["FontBold"] = true; ro["BackgroundGray"] = true; dt.Rows.Add(ro); if (CASA_OC != 0) { dt.Rows.Add( "", "Operazioni in corso", "", "", // SavingMap "", // Fine CASA_OC, "n.c.", "n.c.", "n.c.", "n.c.", ordinamento, false, false ); } foreach (var ccn in from o in other.items where o.area == "Cc" && o.currentEquivalent < 0 orderby o.currentEquivalent select o) { dt.Rows.Add( "", ccn.name, "", "", // SavingMap "", // Fine ccn.currentEquivalent, "n.c.", "n.c.", "n.c.",//ccn.complexity, ccn.liquidity != null ? ccn.liquidity : "Entro 12 mesi", ordinamento, false, false ); } foreach (var self in from o in other.items where o.area == "Self" && o.codiceSottoProdotto.Equals("L191") orderby o.currentEquivalent select o) { dt.Rows.Add( "", self.name, "", "", // SavingMap "", // Fine self.currentEquivalent, "n.c.", "n.c.", "n.c.", self.liquidity, ordinamento, false, false ); } foreach (var self in from o in other.items where o.area == "Self" && o.codiceSottoProdotto.Equals("L192") orderby o.currentEquivalent select o) { dt.Rows.Add( "", self.name, "", "", // SavingMap "", // Fine self.currentEquivalent, "n.c", "n.c", "n.c", self.liquidity, ordinamento, false, false ); } foreach (var self in from o in other.items where o.area == "Self" && o.codiceSottoProdotto.Equals("V301") orderby o.currentEquivalent select o) { dt.Rows.Add( "", self.name, "", "", // SavingMap "", // Fine self.currentEquivalent, "n.c", "n.c", "n.c", self.liquidity, ordinamento, false, false ); } } } //private void TotaleRisorseAreaBisogno(DataTable dt, listaProdottiAdeguatezza lPro, int ordinamento) //{ // prodottoAdeguatezzaBean other = lPro.other; // decimal CASA_OC = datiSeiUnico.CASA_OC; // decimal CASA_CCN = datiSeiUnico.CASA_CCN; // decimal CASA_GPELIGO = datiSeiUnico.CASA_GPELIGO; // if (CASA_OC != 0 || CASA_CCN != 0 || CASA_GPELIGO != 0) // { // DataRow ro = dt.NewRow(); // ro["Area"] = "Totale risorse finanziarie";//"Totale risorse allocate"; // ro["Progetto"] = ""; // ro["CodiceContratto"] = ""; // ro["Descrizione"] = ""; // ro["Controvalore"] = datiSeiUnico.CASA_SUBTOTALE; // ro["Rischiomercato"] = lPro.financialResources.marketRisk; // ro["Rischiocredito"] = lPro.financialResources.creditRisk.Equals("n.a.")? lPro.financialResources.creditRisk : lPro.financialResources.creditRisk.Substring(0, 1).ToUpper() + lPro.financialResources.creditRisk.Substring(1, lPro.financialResources.creditRisk.Length - 2) + lPro.financialResources.creditRisk.Substring(lPro.financialResources.creditRisk.Length - 1).ToUpper(); // ro["Complessita"] = lPro.financialResources.complexity.Substring(0, 1).ToUpper() + lPro.financialResources.complexity.Substring(1); // ro["Liquidita"] = "-"; // ro["Ordinamento"] = ordinamento; // ro["FontBold"] = true; // ro["BackgroundGray"] = true; // dt.Rows.Add(ro); // if (CASA_OC != 0) // { // dt.Rows.Add( // "", // "Operazioni in corso", // "", // "", // CASA_OC, // "n.c.", // "n.c.", // "n.c.", // "n.c.", // ordinamento, // false, // false // ); // } // foreach (var ccn in from o in other.items where o.area == "Cc" && o.currentEquivalent < 0 orderby o.currentEquivalent select o) // { // dt.Rows.Add( // "", // ccn.name, // "", // "", // ccn.currentEquivalent, // "n.c.", // "n.c.", // "n.c.",//ccn.complexity, // ccn.liquidity != null ? ccn.liquidity : "Entro 12 mesi", // ordinamento, // false, // false // ); // } // foreach (var self in from o in other.items where o.area == "Self" && o.codiceSottoProdotto.Equals("L191") orderby o.currentEquivalent select o) // { // dt.Rows.Add( // "", // self.name, // "", // "", // self.currentEquivalent, // "n.c.", // "n.c.", // "n.c.", // self.liquidity, // ordinamento, // false, // false // ); // } // foreach (var self in from o in other.items where o.area == "Self" && o.codiceSottoProdotto.Equals("L192") orderby o.currentEquivalent select o) // { // dt.Rows.Add( // "", // self.name, // "", // "", // self.currentEquivalent, // "n.c", // "n.c", // "n.c", // self.liquidity, // ordinamento, // false, // false // ); // } // } //} // AC private void TotaleRisorseContratto(DataTable dt, listaProdottiAdeguatezza lPro, int ordinamento) { prodottoAdeguatezzaBean other = lPro.other; decimal CASA_OC = datiSeiUnico.CASA_OC; decimal CASA_CCN = datiSeiUnico.CASA_CCN; decimal CASA_GPELIGO = 0; decimal CASA_FOGLIO = 0; if (CASA_OC != 0 || CASA_CCN != 0 || CASA_GPELIGO != 0 || CASA_FOGLIO!=0) { DataRow ro = dt.NewRow(); ro["Area"] = "Totale risorse finanziarie"; ro["Progetto"] = ""; ro["CodiceContratto"] = ""; ro["Descrizione"] = ""; ro["Controvalore"] = datiSeiUnico.CASA_SUBTOTALE + datiSeiUnico.CASA_GPELIGO + datiSeiUnico.CASA_TUOFOGLIO; ro["Rischiomercato"] = lPro.financialResources.marketRisk; ; ro["Rischiocredito"] = lPro.financialResources.creditRisk.Equals("n.a.") ? lPro.financialResources.creditRisk : lPro.financialResources.creditRisk.Substring(0, 1).ToUpper() + lPro.financialResources.creditRisk.Substring(1, lPro.financialResources.creditRisk.Length - 2) + lPro.financialResources.creditRisk.Substring(lPro.financialResources.creditRisk.Length - 1).ToUpper(); ro["Complessita"] = lPro.financialResources.complexity.Substring(0, 1).ToUpper() + lPro.financialResources.complexity.Substring(1); ro["Liquidita"] = "-"; ro["Ordinamento"] = ordinamento; ro["FontBold"] = true; ro["BackgroundGray"] = true; dt.Rows.Add(ro); if (CASA_OC != 0) { dt.Rows.Add( "", "Operazioni in corso", "", "", CASA_OC, "n.c.", "n.c.", "n.c.", "n.c.", ordinamento, false, false ); } foreach (var ccn in from o in other.items where o.area == "Cc" && o.currentEquivalent < 0 orderby o.currentEquivalent select o) { dt.Rows.Add( "", ccn.name, "", "", ccn.currentEquivalent, "n.c.", "n.c.", "n.c.",//ccn.complexity, ccn.liquidity != null ? ccn.liquidity : "Entro 12 mesi", ordinamento, false, false ); } } } //private void TotaleRisorseContratto(DataTable dt, listaProdottiAdeguatezza lPro, int ordinamento) //{ // prodottoAdeguatezzaBean other = lPro.other; // decimal CASA_OC = datiSeiUnico.CASA_OC; // decimal CASA_CCN = datiSeiUnico.CASA_CCN; // decimal CASA_GPELIGO = 0; // if (CASA_OC != 0 || CASA_CCN != 0 || CASA_GPELIGO != 0) // { // DataRow ro = dt.NewRow(); // ro["Area"] = "Totale risorse finanziarie"; // ro["Progetto"] = ""; // ro["CodiceContratto"] = ""; // ro["Descrizione"] = ""; // ro["Controvalore"] = datiSeiUnico.CASA_SUBTOTALE + datiSeiUnico.CASA_GPELIGO; // ro["Rischiomercato"] = lPro.financialResources.marketRisk; ; // ro["Rischiocredito"] = lPro.financialResources.creditRisk.Equals("n.a.") ? lPro.financialResources.creditRisk : lPro.financialResources.creditRisk.Substring(0, 1).ToUpper() + lPro.financialResources.creditRisk.Substring(1, lPro.financialResources.creditRisk.Length - 2) + lPro.financialResources.creditRisk.Substring(lPro.financialResources.creditRisk.Length - 1).ToUpper(); // ro["Complessita"] = lPro.financialResources.complexity.Substring(0, 1).ToUpper() + lPro.financialResources.complexity.Substring(1); // ro["Liquidita"] = "-"; // ro["Ordinamento"] = ordinamento; // ro["FontBold"] = true; // ro["BackgroundGray"] = true; // dt.Rows.Add(ro); // if (CASA_OC != 0) // { // dt.Rows.Add( // "", // "Operazioni in corso", // "", // "", // CASA_OC, // "n.c.", // "n.c.", // "n.c.", // "n.c.", // ordinamento, // false, // false // ); // } // foreach (var ccn in from o in other.items where o.area == "Cc" && o.currentEquivalent < 0 orderby o.currentEquivalent select o) // { // dt.Rows.Add( // "", // ccn.name, // "", // "", // ccn.currentEquivalent, // "n.c.", // "n.c.", // "n.c.",//ccn.complexity, // ccn.liquidity != null ? ccn.liquidity : "Entro 12 mesi", // ordinamento, // false, // false // ); // } // } //} //AC private void TotaleRisorseCategoria(DataTable dt, listaProdottiAdeguatezza lPro, int ordinamento) { prodottoAdeguatezzaBean other = lPro.other; decimal CASA_OC = datiSeiUnico.CASA_OC; decimal CASA_CCN = datiSeiUnico.CASA_CCN; decimal CASA_GPELIGO = 0; decimal CASA_FOGLIO = 0; if (CASA_OC != 0 || CASA_CCN != 0 || CASA_GPELIGO != 0|| CASA_FOGLIO!=0) { DataRow ro = dt.NewRow(); ro["Area"] = "Totale risorse finanziarie"; ro["Progetto"] = ""; ro["CodiceContratto"] = ""; ro["Descrizione"] = ""; ro["Controvalore"] = datiSeiUnico.CASA_SUBTOTALE + datiSeiUnico.CASA_GPELIGO +datiSeiUnico.CASA_TUOFOGLIO; ro["Rischiomercato"] = lPro.financialResources.marketRisk; ; ro["Rischiocredito"] = lPro.financialResources.creditRisk.Equals("n.a.") ? lPro.financialResources.creditRisk : lPro.financialResources.creditRisk.Substring(0, 1).ToUpper() + lPro.financialResources.creditRisk.Substring(1, lPro.financialResources.creditRisk.Length - 2) + lPro.financialResources.creditRisk.Substring(lPro.financialResources.creditRisk.Length - 1).ToUpper(); ro["Complessita"] = lPro.financialResources.complexity.Substring(0, 1).ToUpper() + lPro.financialResources.complexity.Substring(1); ro["Liquidita"] = "-"; ro["Ordinamento"] = ordinamento; ro["FontBold"] = true; ro["BackgroundGray"] = true; dt.Rows.Add(ro); if (CASA_OC != 0) { dt.Rows.Add( "", "Operazioni in corso", "", "", CASA_OC, "n.c.", "n.c.", "n.c.", "n.c.", ordinamento, false, false ); } foreach (var ccn in from o in other.items where o.area == "Cc" && o.currentEquivalent < 0 orderby o.currentEquivalent select o) { dt.Rows.Add( "", ccn.name, "", "", ccn.currentEquivalent, "n.c.", "n.c.", "n.c.",//ccn.complexity, ccn.liquidity != null ? ccn.liquidity : "Entro 12 mesi", ordinamento, false, false ); } } } // private void TotaleRisorseCategoria(DataTable dt, listaProdottiAdeguatezza lPro, int ordinamento) //{ // prodottoAdeguatezzaBean other = lPro.other; // decimal CASA_OC = datiSeiUnico.CASA_OC; // decimal CASA_CCN = datiSeiUnico.CASA_CCN; // decimal CASA_GPELIGO = 0; // if (CASA_OC != 0 || CASA_CCN != 0 || CASA_GPELIGO != 0) // { // DataRow ro = dt.NewRow(); // ro["Area"] = "Totale risorse finanziarie"; // ro["Progetto"] = ""; // ro["CodiceContratto"] = ""; // ro["Descrizione"] = ""; // ro["Controvalore"] = datiSeiUnico.CASA_SUBTOTALE + datiSeiUnico.CASA_GPELIGO; // ro["Rischiomercato"] = lPro.financialResources.marketRisk; ; // ro["Rischiocredito"] = lPro.financialResources.creditRisk.Equals("n.a.") ? lPro.financialResources.creditRisk : lPro.financialResources.creditRisk.Substring(0, 1).ToUpper() + lPro.financialResources.creditRisk.Substring(1, lPro.financialResources.creditRisk.Length - 2) + lPro.financialResources.creditRisk.Substring(lPro.financialResources.creditRisk.Length - 1).ToUpper(); // ro["Complessita"] = lPro.financialResources.complexity.Substring(0, 1).ToUpper() + lPro.financialResources.complexity.Substring(1); // ro["Liquidita"] = "-"; // ro["Ordinamento"] = ordinamento; // ro["FontBold"] = true; // ro["BackgroundGray"] = true; // dt.Rows.Add(ro); // if (CASA_OC != 0) // { // dt.Rows.Add( // "", // "Operazioni in corso", // "", // "", // CASA_OC, // "n.c.", // "n.c.", // "n.c.", // "n.c.", // ordinamento, // false, // false // ); // } // foreach (var ccn in from o in other.items where o.area == "Cc" && o.currentEquivalent < 0 orderby o.currentEquivalent select o) // { // dt.Rows.Add( // "", // ccn.name, // "", // "", // ccn.currentEquivalent, // "n.c.", // "n.c.", // "n.c.",//ccn.complexity, // ccn.liquidity != null ? ccn.liquidity : "Entro 12 mesi", // ordinamento, // false, // false // ); // } // } //} private void ElencoConcentrazioneTitoli(DataTable dt, Consulenza.DataServices.fideuram.data.service.itemConcentrazioneBean[] items,int livello) { livello++; if (dt.Columns.Count == 0) { if (dt.TableName == "fondi") { dt.Columns.Add(new DataColumn("Livello", typeof(int))); dt.Columns.Add(new DataColumn("Emittenti", typeof(string))); dt.Columns.Add(new DataColumn("Controvaloreproposto", typeof(decimal))); dt.Columns.Add(new DataColumn("Concentrazione", typeof(string))); dt.Columns.Add(new DataColumn("Sogliaconcentrazione", typeof(string))); dt.Columns.Add(new DataColumn("Adeguatezza", typeof(string))); } else { dt.Columns.Add(new DataColumn("Livello", typeof(int))); dt.Columns.Add(new DataColumn("Emittenti", typeof(string))); dt.Columns.Add(new DataColumn("Controvaloreproposto", typeof(decimal))); dt.Columns.Add(new DataColumn("Franchigia", typeof(string))); dt.Columns.Add(new DataColumn("Concentrazione", typeof(string))); dt.Columns.Add(new DataColumn("Sogliaconcentrazione", typeof(string))); dt.Columns.Add(new DataColumn("Adeguatezza", typeof(string))); } } if (items != null) { foreach (var concentrazione in from e in items orderby e.currentEquivalent descending select e) { string fra = ""; string Threshold=""; if (concentrazione.franchise.ToString() != "n.a.") { fra = concentrazione.franchise.Contains(".") ? Helper.FormatCurrency(concentrazione.franchise.Replace(".", ",")) : Helper.FormatCurrency(concentrazione.franchise); Threshold = concentrazione.concentrationThreshold.ToString(); } else { fra = concentrazione.franchise.ToString(); Threshold = fra; } if (dt.TableName == "fondi") { dt.Rows.Add( livello, concentrazione.name, concentrazione.currentEquivalent, concentrazione.concentration, Threshold, !concentrazione.adequacySpecified ? "n.a." : concentrazione.adequacy ? "Adeguato" : "Non adeguato" ); } else { dt.Rows.Add( livello, concentrazione.name, concentrazione.currentEquivalent, fra, concentrazione.concentration, Threshold, !concentrazione.adequacySpecified ? "n.a." : concentrazione.adequacy ? "Adeguato" : "Non adeguato" ); } ElencoConcentrazioneTitoli(dt, concentrazione.items, livello); } } } private void TotaleConcentrazioneTitoli(DataTable dt,string descrizione, decimal controvaloreTotale,decimal concentrazioneTotale) { if (dt.Columns.Count == 0) { if (descrizione.ToLower().Contains("fondi")) { dt.Columns.Add(new DataColumn("Emittenti", typeof(string))); dt.Columns.Add(new DataColumn("Controvaloreproposto", typeof(decimal))); dt.Columns.Add(new DataColumn("Concentrazione", typeof(string))); dt.Columns.Add(new DataColumn("Sogliaconcentrazione", typeof(string))); dt.Columns.Add(new DataColumn("Adeguatezza", typeof(string))); } else { dt.Columns.Add(new DataColumn("Emittenti", typeof(string))); dt.Columns.Add(new DataColumn("Controvaloreproposto", typeof(decimal))); dt.Columns.Add(new DataColumn("Franchigia", typeof(string))); dt.Columns.Add(new DataColumn("Concentrazione", typeof(string))); dt.Columns.Add(new DataColumn("Sogliaconcentrazione", typeof(string))); dt.Columns.Add(new DataColumn("Adeguatezza", typeof(string))); } } if (!descrizione.ToLower().Contains("fondi")) dt.Rows.Add(descrizione, controvaloreTotale, "-", concentrazioneTotale, "-", ""); else{ if (controvaloreTotale != 0) dt.Rows.Add(descrizione, controvaloreTotale, concentrazioneTotale, "20,00", datiSeiUnico.rischioUnit().adeguatezza.adeguatezzaTopBean.elencoConcentrazioneTitoli.speculativi[0].adequacy ? "Adeguato" : "Non adeguato"); else dt.Rows.Add(descrizione, controvaloreTotale, concentrazioneTotale, "20,00", ""); } } private string getFormat(string _valore) { string valore = ""; try { if (_valore.ToLower().Contains("classe") || _valore.ToLower().Contains("alta") || _valore.ToLower().Contains("bassa") || _valore.ToLower().Contains("media") || _valore.ToLower().Contains("rischio") || _valore.ToLower().Contains("minima")) valore = Helper.CapitalizeWords(_valore); else if (_valore.ToLower().Contains("n.c.") || _valore.ToLower().Contains("n.a.") || _valore.ToLower().Contains("n.d.")) valore = _valore.ToLower(); else { valore = Helper.FormatDecimal(_valore, 2); valore.Replace(".", ",");//le aree principali hanno punto, altri virgola } } catch { valore = _valore; } return valore; } public virtual RaggruppaProdotti raggruppaProdotti() { return GetOption().RaggruppaProdotti; } public virtual string getNota1() { var flagFiduciariaPlurimandato = datiSeiUnico.rischioUnit().adeguatezza.adeguatezzaTopBean.flagfiduciariaPluriMandato; string nota = ""; if (!flagFiduciariaPlurimandato) { nota += "Complessità massima dei prodotti che lei attualmente detiene presso $/Banca/$."; } else nota += "Complessità massima dei prodotti detenuti dai mandati fiduciari associati al medesimo fiduciante a cui appartiene il mandato " + datiSeiUnico.getClienteReport().codiceMandato + "."; return datiSeiUnico.FormatBanca(nota); } public virtual string getTesto1() { return datiSeiUnico.FormatBanca("Di seguito sono riportati i risultati della valutazione di adeguatezza del patrimonio che lei detiene presso $/Banca/$, in riferimento a tutti gli indicatori di rischio che $/Banca/$ utilizza per valutare l'adeguatezza degli investimenti. Per ogni indicatore, ove previsti, sono riportati il livello massimo associato al suo profilo finanziario e il valore relativo al patrimonio che lei detiene presso $/Banca/$, con indicazione del corrispondente grado di copertura."); } //public virtual bool getIndicatoricomplessita(string copertura) //{ // var grado = copertura.Replace(".", ","); // if (Convert.ToDouble(grado) != 100) // { // notaindicatoricomplessitafe = true; // return true; // } // else // return false; //} //public virtual string getNotaIndicatori() //{ // string nota = ""; // if (notaindicatoricomplessitafe) // nota = " Alcuni dei prodotti del patrimonio $/Banca/$ non sono coperti in termini di Complessità. In questa casistica, a prescindere dai singoli indicatori di rischio, il patrimonio Fideuram viene considerato sempre come «Non Adeguato»."; // return datiSeiUnico.FormatBanca(nota); //} //indicatore di sintesi public virtual string getNoteTabellaIndicatori() { var adeguatezzaFlag = datiSeiUnico.rischioUnit().adeguatezza.adeguatezzaTopBean; var flagSoggettoAdeguatezzaMifid = adeguatezzaFlag.flagSoggettoAdeguatezzaMifid; flagFiduciariaPlurimandato = adeguatezzaFlag.flagfiduciariaPluriMandato; string codicemandato = datiSeiUnico.getClienteReport().codiceMandato; var flagEccessivaAdeguatezza = adeguatezzaFlag.flagVarAdeguatoExcessively; //datiSeiUnico.rischioUnit().rischio.rischioMercatoCredito.eccessivamenteAdeguato; var delegato = getDelegato(); string nota = ""; string token = ""; if (!flagFiduciariaPlurimandato) { nota += "Complessità massima dei prodotti che lei attualmente detiene presso $/Banca/$."; if (delegato.codiceFiscale != null) { nota += "

La soglia massima relativa all’indicatore di Complessità fa riferimento al profilo di Esperienza e Conoscenza del Legale Rappresentante/Delegato $/CognomeDelegato/$ $/NomeDelegato/$."; } } else nota += "Complessità massima dei prodotti detenuti dai mandati fiduciari associati al medesimo fiduciante a cui appartiene il mandato " + codicemandato + "."; token = " "; //da fare quella sotto 40.2 e 40.9 per fiduciarie: mancano dati anche su fe if (flagFiduciariaPlurimandato) nota += token + "La valutazione di adeguatezza del patrimonio $/Banca/$ prende in considerazione il patrimonio detenuto presso $/Banca/$ da tutti i mandati fiduciari associati al medesimo fiduciante a cui appartiene il mandato <" + codicemandato + ">. Pertanto, gli indicatori di rischio presenti in questa scheda relativi al patrimonio Fideuram sono calcolati considerando tutti i prodotti detenuti dai mandati fiduciari associati al medesimo fiduciante a cui appartiene il mandato " + codicemandato + "."; token = " "; if (flagSoggettoAdeguatezzaMifid) //40.3 { nota += token + "


La valutazione di adeguatezza del patrimonio che lei detiene presso $/Banca/$ non è necessaria in quanto tutti i prodotti da lei detenuti presso $/Banca/$ non sono soggetti alla valutazione di adeguatezza MiFID."; token = " "; } if (flagEccessivaAdeguatezza) {//40.4 nota += token + "


Il patrimonio che lei detiene presso $/Banca/$ risulta adeguato al suo profilo finanziario. Le segnaliamo, tuttavia, che il livello di Rischio Mercato (VaR) del patrimonio che lei detiene presso $/Banca/$ si posiziona su un valore sensibilmente inferiore rispetto alla soglia minima attribuita al suo profilo finanziario."; token = " "; } token = " "; if (delegato != null) nota = datiSeiUnico.FormatDelegato(nota,delegato.nome,delegato.cognome); return datiSeiUnico.FormatBanca(nota); } public virtual string getNota407() //40.7 { var gradoCopertura = (datiSeiUnico.rischioUnit().adeguatezza.listaProdottiArea.total.complexity.ToLower() == "alta" || datiSeiUnico.rischioUnit().adeguatezza.listaProdottiArea.total.complexity.ToLower() == "molto alta") && datiSeiUnico.rischioUnit().adeguatezza.listaProdottiArea.total.currentEquivalent < 100000m; string nota = ""; //string rm = gradoCoperturaRM ? "Rischio Mercato (VaR)" : ""; //string rc = gradoCoperturaRM && gradoCoperturaRC ? " e di Rischio Credito" : !gradoCoperturaRM && gradoCoperturaRC ? " Rischio Credito" : ""; if (gradoCopertura) { nota += "Il patrimonio che lei detiene presso $/Banca/$ risulta non adeguato al suo profilo finanziario in quanto non è possibile detenere prodotti a complessità \"Alta\" o \"Molto Alta\" all'interno di un patrimonio inferiore a 100.000 Euro."; } return datiSeiUnico.FormatBanca(nota); } public virtual string getNota5RMRC() //40.5 copertura rischio mercato var e rischio credito { //gradoCoperturaRM =Convert.ToDecimal(datiSeiUnico.rischioUnit().adeguatezza.adeguatezzaTopBean.listaAdeguatezza.AsEnumerable().FirstOrDefault(o=>o.id=="RM").copertura) > 0 && Convert.ToDecimal(datiSeiUnico.rischioUnit().adeguatezza.adeguatezzaTopBean.listaAdeguatezza.AsEnumerable().FirstOrDefault(o=>o.id=="RM").copertura) < 90; //gradoCoperturaRC = Convert.ToDecimal(datiSeiUnico.rischioUnit().adeguatezza.adeguatezzaTopBean.listaAdeguatezza.AsEnumerable().FirstOrDefault(o => o.id == "RC").copertura) > 0 && Convert.ToDecimal(datiSeiUnico.rischioUnit().adeguatezza.adeguatezzaTopBean.listaAdeguatezza.AsEnumerable().FirstOrDefault(o => o.id == "RC").copertura) < 90; string nota = ""; string rm =gradoCoperturaRM ? "Rischio Mercato (VaR)" : ""; string rc=gradoCoperturaRM && gradoCoperturaRC ? " e di Rischio Credito" : !gradoCoperturaRM && gradoCoperturaRC ? " Rischio Credito" : ""; if (gradoCoperturaRM || gradoCoperturaRC) { nota += "Il patrimonio che lei detiene presso $/Banca/$ risulta non adeguato al suo profilo finanziario in quanto alcuni prodotti non sono coperti in termini di " + rm + rc + ", determinando un grado di copertura inferiore a 90%: in questo caso, a prescindere dai singoli indicatori di rischio, il patrimonio $/Banca/$ viene considerato sempre come non adeguato."; } return datiSeiUnico.FormatBanca(nota); } public virtual string getNota6(string copertura) //40.6 copertura complessità { var coperturagrado =copertura=="n.c." ? 0 : Convert.ToDouble(copertura.Replace(".",",")); string nota = ""; if (coperturagrado > 0 && coperturagrado < 100) nota += "Il patrimonio che lei detiene presso $/Banca/$ risulta non adeguato al suo profilo finanziario in quanto alcuni prodotti non sono coperti in termini di Complessità: in questo caso, a prescindere dai singoli indicatori di rischio, il patrimonio $/Banca/$ viene considerato sempre come non adeguato."; return datiSeiUnico.FormatBanca(nota); } //prodotti public virtual string getTesto3() { string nota = "Nella tabella sottostante sono riportati i prodotti che lei detiene presso $/Banca/$, con evidenza dei principali indicatori di rischio."; string token = ""; switch (raggruppaProdotti()) { case RaggruppaProdotti.AreaBisogno: nota+= token +" I prodotti sono raggruppati per area di bisogno e, dove necessario, per progetto di investimento."; token = " "; break; case RaggruppaProdotti.Categoria: nota+= token + " I prodotti sono raggruppati secondo la categoria di appartenenza."; token = " "; break; case RaggruppaProdotti.Contratto: nota+= token + " I prodotti sono raggruppati secondo il contratto di appartenenza."; token = " "; break; } return datiSeiUnico.FormatBanca(nota); } //focus emittenti public virtual string getCapitolo4() { return datiSeiUnico.FormatBanca("Adeguatezza: focus su concentrazione emittenti"); } //focus emittenti public virtual string getTesto4() { return datiSeiUnico.FormatBanca("In questa scheda sono riportati i risultati della valutazione di adeguatezza del patrimonio che lei detiene presso $/Banca/$, in riferimento all'indicatore di concentrazione. Per gli emittenti e i fondi speculativi del patrimonio che lei detiene presso $/Banca/$ sono riportati, ove previsti, il confronto tra il controvalore \"attuale\" e il controvalore sotto il quale non si applica il controllo di concentrazione (\"franchigia\"), e il confronto tra la concentrazione \"attuale\" e la soglia massima definita dal modello di adeguatezza."); } //Orizzonete Temporale Liquidità / Liquidabilità public virtual string getCapitolo5() { return "Adeguatezza: focus su liquidità/liquidabilità"; } //Orizzonete Temporale Liquidità / Liquidabilità public virtual string getTesto6() { return datiSeiUnico.FormatBanca("In questa scheda sono riportati i risultati della valutazione di adeguatezza del patrimonio che lei detiene presso $/Banca/$, in riferimento all'indicatore di liquidità/liquidabilità. Nel grafico sono indicate l'area di adeguatezza e l'area di non adeguatezza: la prima individua le situazioni in cui le caratteristiche di durata e di liquidità dei prodotti che lei detiene presso $/Banca/$ sono coerenti con i suoi orizzonti temporali di investimento, derivanti dalle risposte che lei ha fornito alla domanda 9 del questionario di profilatura."); } public dettDelegatoBean getDelegato() { var listaDelegati = datiSeiUnico.rischioUnit().adeguatezza.adeguatezzaTopBean.delegati; bool visualizzaDelegato = (String.IsNullOrEmpty(GetOption().Valore)) ? false : true; string cfDelegato = GetOption().Valore; dettDelegatoBean delegato = new dettDelegatoBean(); if ( listaDelegati != null) delegato = (from o in listaDelegati where o.codiceFiscale == cfDelegato select o).LastOrDefault(); return delegato; } } }