using System; using Consulenza.ReportWriter.Business; using Consulenza.ReportWriter.Business.OBJ_PDF; using System.Data; using Consulenza.ReportCommon; using System.Linq; using Consulenza.DataServices.fideuram.data.service; using System.Collections.Generic; namespace Consulenza.ReportWriter.Manager.Section.Unica { /// /// S71.MonitoraggioEvoluzionePatrimonioERischio idSezione = 114 /// public class S71 : Entity.Section { private int _numeroFasiPresenti = 2; /// /// S71.MonitoraggioEvoluzionePatrimonioERischio idSezione = 114 /// public S71(EnvironmentFacade environmentFacade, int idSection) : base(environmentFacade, idSection) { try { Draw(); } catch (Exception ex) { SectionLogger.Write("S71", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment); } } protected override sealed void Draw() { var dati = GetDataSet(); var fase1Data = Convert.ToDateTime(dati.Tables[0].Select().Max(r => r["Fase1_Data"])); var sFase1Data = fase1Data.Equals(DateTime.MinValue) ? "-" : fase1Data.ToShortDateString(); var fase2Data = Convert.ToDateTime(dati.Tables[0].Select().Max(r => r["Fase2_Data"])); var sFase2Data = fase2Data.Equals(DateTime.MinValue) ? "-" : fase2Data.ToShortDateString(); var fase3Data = Convert.ToDateTime(dati.Tables[0].Select().Max(r => r["Fase3_Data"])); var sFase3Data = fase3Data.Equals(DateTime.MinValue) ? "-" : fase3Data.ToShortDateString(); // int larghezzaColonnaImmagine = 20; int larghezzaColonnaSingolaFase = 130; int larghezzaColonnaVariabile = 520 - (larghezzaColonnaSingolaFase * _numeroFasiPresenti); int larghezzaColonnaImmagine2 = 25; int larghezzaColonnaSingolaFase2 = 108; int larghezzaColonnaVariabile2 = 520 - (larghezzaColonnaSingolaFase2 * _numeroFasiPresenti) - (larghezzaColonnaImmagine2 * _numeroFasiPresenti); #region Tabella Evoluzione del Controvalore if (evoluzionePatrimonio()) { AddElement(new SpacePDF(20)); AddElement(new FormattedTextAreaPDF(GetTesto1(), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize=7, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); AddElement(new SpacePDF(15)); var tabellaEvoluzioneControvalore = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["EvoluzioneControvalore"], dati.Tables["FooterEvoluzioneControvalore"]) { Style = Style.ConsulenzaUnica, AlternateRow = false, ShowSeparationLines = false, RowsPadding = 10, HeaderHeight = 30, HeaderMargin = 5 }; tabellaEvoluzioneControvalore.Columns.Add(new ColumnPDF("Area2", larghezzaColonnaVariabile, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Objectpdf, "Area", "Area di bisogno") { DeltaYContent = -1, ScaleColumnTypeImage = 0.5F, HeaderFontSize = 7, FontSize = 7 }); tabellaEvoluzioneControvalore.Columns.Add(new ColumnPDF("Fase1", larghezzaColonnaSingolaFase, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale, "Fase1_Controvalore", string.Format("Avvio monitoraggio
({0})", sFase1Data)) { HeaderVerticalAlignment = VerticalAlignmentType.Centrato, HeaderGroupWidth = larghezzaColonnaSingolaFase, HeaderGroupPathImage ="freccia71b.png", HeaderGroupScaleImage = 0.30F, HeaderGroupTextDeltaX = larghezzaColonnaSingolaFase,//-4, // HeaderGroupTextDeltaY = 35, HeaderGroupBorderLine = true, DeltaYContent = 3, HeaderFontSize = 7, FontSize = 7 }); if (_numeroFasiPresenti.Equals(3)) tabellaEvoluzioneControvalore.Columns.Add(new ColumnPDF("Fase2", larghezzaColonnaSingolaFase, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale, "Fase2_Controvalore", string.Format("Precedente invio report
({0})", sFase2Data)) { // HeaderPaddingRight = 2, HeaderVerticalAlignment = VerticalAlignmentType.Centrato, HeaderGroupWidth = larghezzaColonnaSingolaFase, HeaderGroupPathImage = "freccia71b.png", HeaderGroupScaleImage = 0.30F, HeaderGroupTextDeltaX = larghezzaColonnaSingolaFase,//-4, // HeaderGroupTextDeltaY = 35, HeaderGroupBorderLine = true, DeltaYContent = 3, HeaderFontSize = 7, FontSize = 7 }); tabellaEvoluzioneControvalore.Columns.Add(new ColumnPDF("Fase3", larghezzaColonnaSingolaFase, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale, "Fase3_Controvalore", string.Format("Situazione corrente
({0})", sFase3Data)) { DeltaYContent = 3, HeaderFontSize = 7, FontSize = 7 }); tabellaEvoluzioneControvalore.FooterColumns.Add(new ColumnPDF("Area", larghezzaColonnaVariabile, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo) { FontSize = 7 }); tabellaEvoluzioneControvalore.FooterColumns.Add(new ColumnPDF("Fase1", larghezzaColonnaSingolaFase, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale) { FontSize = 7 }); if (_numeroFasiPresenti.Equals(3)) tabellaEvoluzioneControvalore.FooterColumns.Add(new ColumnPDF("Fase2", larghezzaColonnaSingolaFase, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale) { FontSize = 7 }); tabellaEvoluzioneControvalore.FooterColumns.Add(new ColumnPDF("Fase3", larghezzaColonnaSingolaFase, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale) { FontSize = 7 }); for (int a = 0; a < dati.Tables["EvoluzioneControvalore"].Rows.Count; a++) { tabellaEvoluzioneControvalore.Cells[0, a].ValueObjectList.Add(new ImagePDF(0, 1, dati.Tables["EvoluzioneControvalore"].Rows[a].ItemArray[0].ToString()) { DeltaX = 3, DeltaY = 0, Scale = 0.66f, Height = 27, Width = 145 }); var textArea = new FormattedTextAreaPDF(dati.Tables["EvoluzioneControvalore"].Rows[a].ItemArray[1].ToString(), 0) { DeltaY = 8f, FontSize = 8f }; var labelSize = Helper.GetNumericStringWidth(textArea.Text); float addition = 0; switch (textArea.Text) { case "Investimento": case "Previdenza": addition = 3; break; case "Riserva": addition = 2; break; case "Liquidità": addition = 1; break; case "Extra Rendimento": addition = 6; break; } textArea.DeltaX = 76 + addition - labelSize; textArea.Text = Helper.FirstCharToUpper(textArea.Text); tabellaEvoluzioneControvalore.Cells[0, a].ValueObjectList.Add(textArea); } AddElement(tabellaEvoluzioneControvalore); } #endregion #region Tabella Evoluzione del Rischio if (evoluzioneRischio()) { // Testo introduttivo AddElement(new SpacePDF(20)); AddElement(new FormattedTextAreaPDF(Helper.ReplaceVariables(GetTesto2(), EnvironmentFacade.ReportEnvironment), EnvironmentFacade.RendererFacade.XLeftLimit, 520) { TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify, FontSize = 7 }); AddElement(new SpacePDF(15)); // Tabella var tabellaEvoluzioneRischio = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables["EvoluzioneRischio"]) { Style = Style.ConsulenzaUnica, AlternateRow = true, ShowSeparationLines = false, RowHeight = 30, HeaderHeight = 30 }; tabellaEvoluzioneRischio.Columns.Add(new ColumnPDF("Descrizione", larghezzaColonnaVariabile2, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo, "Descrizione", "") { HeaderFontSize = 7, FontSize = 7 }); tabellaEvoluzioneRischio.Columns.Add(new ColumnPDF("Fase1", larghezzaColonnaSingolaFase2, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale, "Fase1_sValore", string.Format("Avvio monitoraggio
({0})", sFase1Data)) { HeaderVerticalAlignment = VerticalAlignmentType.Centrato, HeaderGroupWidth = larghezzaColonnaSingolaFase, // HeaderGroupPathImage = "freccia71b.png", // HeaderGroupScaleImage = 0.30F, HeaderGroupTextDeltaX = larghezzaColonnaSingolaFase,//-4, // HeaderGroupTextDeltaY = 35, HeaderGroupBorderLine = true, // DeltaYContent = 35, HeaderFontSize = 7, FontSize = 7 }); tabellaEvoluzioneRischio.Columns.Add(new ColumnPDF("Fase1_Immagine", larghezzaColonnaImmagine2, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Immagine, "Fase1_Immagine", "") { DeltaYContent = 8, ScaleColumnTypeImage = 0.15F, HeaderGroupScaleImage = 0.30F, HeaderGroupPathImage = "freccia71b.png" }); if (_numeroFasiPresenti.Equals(3)) { tabellaEvoluzioneRischio.Columns.Add(new ColumnPDF("Fase2", larghezzaColonnaSingolaFase2, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale, "Fase2_sValore", string.Format("Precedente invio report
({0})", sFase2Data)) { HeaderVerticalAlignment = VerticalAlignmentType.Centrato, HeaderGroupWidth = larghezzaColonnaSingolaFase, //HeaderGroupPathImage = "freccia71b.png", //HeaderGroupScaleImage = 0.30F, HeaderGroupTextDeltaX = larghezzaColonnaSingolaFase,//-4, // HeaderGroupTextDeltaY = 35, HeaderGroupBorderLine = true, // DeltaYContent = 35, HeaderFontSize = 7, FontSize = 7 }); tabellaEvoluzioneRischio.Columns.Add(new ColumnPDF("Fase2_Immagine", larghezzaColonnaImmagine2, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Immagine, "Fase2_Immagine", "") { HeaderFontSize = 7, FontSize = 7, DeltaYContent = 8, HeaderGroupScaleImage = 0.30F, ScaleColumnTypeImage = 0.15F, HeaderGroupPathImage = "freccia71b.png" }); } tabellaEvoluzioneRischio.Columns.Add(new ColumnPDF("Fase3", larghezzaColonnaSingolaFase2, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Decimale, "Fase3_sValore", string.Format("Situazione corrente
({0})", sFase3Data)) { HeaderFontSize = 7, FontSize = 7, HeaderPaddingRight = 5, PaddingRight = 5 }); tabellaEvoluzioneRischio.Columns.Add(new ColumnPDF("Fase3_Immagine", larghezzaColonnaImmagine2, HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Immagine, "Fase3_Immagine", "") { HeaderFontSize = 7, FontSize = 7, DeltaYContent = 8, ScaleColumnTypeImage = 0.15F }); AddElement(tabellaEvoluzioneRischio); } #endregion } protected sealed override DataTable GetDataTable() { return null; } protected sealed override DataSet GetDataSet() { //Adriano #region Cliente/Nucleo professionale bool profiloProfessionale; bool profiloAggressivo; bool profiloProfessionaleAggressivo; Profiler profiler; if (EnvironmentFacade.ReportEnvironment.ReportId == 6) //nuclei { DataServices.fideuram.data.service.rsAnagraficaNucleo nucleo = datiSeiUnico.nucleiUnit().anagrafica; profiler = new Profiler(nucleo); } else { DataServices.fideuram.data.service.rsClienteAnagrafica cliente = datiSeiUnico.clienteUnit().anagrafica; profiler = new Profiler(cliente); } profiloProfessionale = profiler.ProfiloProfessionale; profiloAggressivo = profiler.ProfiloAggressivo; profiloProfessionaleAggressivo = profiler.ProfiloProfessionaleAggressivo; #endregion //--Adriano var ds = new DataSet(); ds.Tables.Add("EvoluzioneControvalore"); ds.Tables.Add("FooterEvoluzioneControvalore"); ds.Tables.Add("EvoluzioneRischio"); ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("Area", typeof(string))); ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("Description", typeof(string))); ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("Fase1_Controvalore", typeof(decimal))); ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("Fase1_Data", typeof(DateTime))); ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("Fase2_Controvalore", typeof(decimal))); ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("Fase2_Data", typeof(DateTime))); ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("Fase3_Controvalore", typeof(decimal))); ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("Fase3_Data", typeof(DateTime))); ds.Tables["EvoluzioneControvalore"].Columns.Add(new DataColumn("ReplaceIfZero", typeof(string))); ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Descrizione", typeof(string))); ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase1_Valore", typeof(decimal))); ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase1_sValore", typeof(string))); ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase1_Data", typeof(DateTime))); ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase1_Immagine", typeof(string))); ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase2_Valore", typeof(decimal))); ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase2_sValore", typeof(string))); ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase2_Data", typeof(DateTime))); ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase2_Immagine", typeof(string))); ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase3_Valore", typeof(decimal))); ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase3_sValore", typeof(string))); ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase3_Data", typeof(DateTime))); ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("Fase3_Immagine", typeof(string))); ds.Tables["EvoluzioneRischio"].Columns.Add(new DataColumn("ReplaceIfZero", typeof(string))); areaMon areaRiferimento; fase fase1; fase fase2; fase fase3; var piramideModello = datiSeiUnico.piramideModelloUnit() .piramideModello.areaModello.ToList() .OrderBy(o => o.ordinamento).ToList().FindAll(o => o.visible); decimal fase2NA = 0; var areeMonotorate = datiSeiUnico.monitoraggioUnit().monitoraggio.ToList(); #region Tabella evoluzione controvalore foreach (var item in piramideModello) { areaRiferimento = areeMonotorate.FirstOrDefault(o => o.area.Equals(item.area)); if (areaRiferimento != null) { fase1 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(1)); fase2 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(2)); fase3 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(3)); _numeroFasiPresenti = _numeroFasiPresenti != areaRiferimento.fasi.Count() && _numeroFasiPresenti < areaRiferimento.fasi.Count() ? areaRiferimento.fasi.Count() : _numeroFasiPresenti; if (areaRiferimento.fasi.Count().Equals(3) && fase2 != null && fase2NA == 0) fase2NA += fase2.risorseNA + fase2.risorseAllocate; } else { fase1 = null; fase2 = null; fase3 = null; } var row = ds.Tables["EvoluzioneControvalore"].NewRow(); row["Area"] = string.Format("{0}.png", new AreaBisogno(item.area).NomePerImmagine); row["Description"] = item.descrizioneArea; row["Fase1_Controvalore"] = fase1 != null ? fase1.ctv : 0; row["Fase1_Data"] = fase1 != null ? fase1.dtFase : DateTime.MinValue; row["Fase2_Controvalore"] = fase2 != null ? fase2.ctv : 0; row["Fase2_Data"] = fase2 != null ? fase2.dtFase : DateTime.MinValue; row["Fase3_Controvalore"] = fase3 != null ? fase3.ctv : 0; row["Fase3_Data"] = fase3 != null ? fase3.dtFase : DateTime.MinValue; row["ReplaceIfZero"] = "0,00"; ds.Tables["EvoluzioneControvalore"].Rows.Add(row); } if (!sintesiMovimento()) _numeroFasiPresenti--; #region Footer della tabella Aree ds.Tables["FooterEvoluzioneControvalore"].Columns.Add(new DataColumn("DescrizioneProgetto", typeof(string))); ds.Tables["FooterEvoluzioneControvalore"].Columns.Add(new DataColumn("VaR", typeof(decimal))); if (_numeroFasiPresenti.Equals(3)) ds.Tables["FooterEvoluzioneControvalore"].Columns.Add(new DataColumn("ControvaloreAttuale", typeof(decimal))); ds.Tables["FooterEvoluzioneControvalore"].Columns.Add(new DataColumn("AllocazioneAttuale", typeof(decimal))); ds.Tables["FooterEvoluzioneControvalore"].Columns.Add(new DataColumn("ReplaceIfZero", typeof(string))); ds.Tables["FooterEvoluzioneControvalore"].Columns.Add(new DataColumn("FontBold", typeof(bool))); ds.Tables["FooterEvoluzioneControvalore"].Columns.Add(new DataColumn("BackgroundGray", typeof(bool))); areaRiferimento = areeMonotorate.FirstOrDefault(o => o.area.Equals("Liq")); if (areaRiferimento != null) { fase1 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(1)); fase2 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(2)); fase3 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(3)); } else { fase1 = null; fase2 = null; fase3 = null; } DataRow dr = ds.Tables["FooterEvoluzioneControvalore"].NewRow(); bool risorseNA = fase2 != null ? fase2.risorseNA == 0 && fase1.risorseNA == 0 && fase3.risorseNA == 0 : fase1.risorseNA == 0 && fase3.risorseNA == 0; // Fase2 rimane valorizzata per l'ultima area presa; dato che no nsempre presente, ricontrollo ne esista una. if (_numeroFasiPresenti.Equals(3) && fase2 == null){ foreach (var item in piramideModello) { areaRiferimento = areeMonotorate.FirstOrDefault(o => o.area.Equals(item.area)); if (areaRiferimento != null) if (areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(2)) != null) { fase2 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(2)); break; } } } if (risorseNA) { //bisogna inserire le non allocate: qualora sianopresenti il footer totale allocate diventerà 1 tot risorse allocate, 2 risorse non allocate, 3 totale risorse finanziarie" //altrimenti resta così com'è: totale risorse allocate. if (fase1.investimentiInCorso != 0 || (_numeroFasiPresenti.Equals(3) && fase2 != null && fase2.investimentiInCorso != 0) || fase3.investimentiInCorso != 0 || fase1.contoCorrente != 0 || (_numeroFasiPresenti.Equals(3) && fase2 != null && fase2.contoCorrente != 0) || fase3.contoCorrente != 0 || fase1.lineaself != 0 || (_numeroFasiPresenti.Equals(3) && fase2 != null && fase2.lineaself != 0) || fase3.lineaself != 0) { dr["DescrizioneProgetto"] = datiSeiUnico.FormatBanca("Totale risorse allocate"); dr["VaR"] = Convert.ToDecimal(fase1.risorseAllocate); if (_numeroFasiPresenti.Equals(3)) dr["ControvaloreAttuale"] = fase2.risorseAllocate; dr["AllocazioneAttuale"] = fase3.risorseAllocate; dr["ReplaceIfZero"] = "-"; dr["FontBold"] = true; dr["BackgroundGray"] = true; ds.Tables["FooterEvoluzioneControvalore"].Rows.Add(dr); } } else { dr["DescrizioneProgetto"] = datiSeiUnico.FormatBanca("Totale risorse allocate"); dr["VaR"] = Convert.ToDecimal(fase1.risorseAllocate); if (_numeroFasiPresenti.Equals(3)) dr["ControvaloreAttuale"] = fase2.risorseAllocate; dr["AllocazioneAttuale"] = fase3.risorseAllocate; dr["ReplaceIfZero"] = "-"; dr["FontBold"] = true; dr["BackgroundGray"] = true; ds.Tables["FooterEvoluzioneControvalore"].Rows.Add(dr); dr = ds.Tables["FooterEvoluzioneControvalore"].NewRow(); dr["DescrizioneProgetto"] = "Risorse non allocate"; dr["VaR"] = fase1.risorseNA; if (_numeroFasiPresenti.Equals(3)) dr["ControvaloreAttuale"] = fase2.risorseNA; dr["AllocazioneAttuale"] = fase3.risorseNA; dr["ReplaceIfZero"] = "-"; dr["FontBold"] = false; dr["BackgroundGray"] = false; ds.Tables["FooterEvoluzioneControvalore"].Rows.Add(dr); if (fase1.investimentiInCorso != 0 || (_numeroFasiPresenti.Equals(3) && fase2.investimentiInCorso != 0) || fase3.investimentiInCorso != 0 || fase1.contoCorrente != 0 || (_numeroFasiPresenti.Equals(3) && fase2.contoCorrente != 0) || fase3.contoCorrente != 0 || fase1.lineaself != 0 || (_numeroFasiPresenti.Equals(3) && fase2.lineaself != 0) || fase3.lineaself != 0) { dr = ds.Tables["FooterEvoluzioneControvalore"].NewRow(); dr["DescrizioneProgetto"] = datiSeiUnico.FormatBanca("Totale risorse finanziarie"); dr["VaR"] = Convert.ToDecimal(fase1.risorseAllocate+ fase1.risorseNA); if (_numeroFasiPresenti.Equals(3)) dr["ControvaloreAttuale"] = fase2.risorseAllocate + fase2.risorseNA; dr["AllocazioneAttuale"] = fase3.risorseAllocate; //per fase 3 le risorseNA non esistono perchè non contemplate nel nuovo sei dr["ReplaceIfZero"] = "-"; dr["FontBold"] = true; dr["BackgroundGray"] = true; ds.Tables["FooterEvoluzioneControvalore"].Rows.Add(dr); } } if (fase1.investimentiInCorso != 0 || (_numeroFasiPresenti.Equals(3) && fase2 != null && fase2.investimentiInCorso != 0) || fase3.investimentiInCorso != 0) { dr = ds.Tables["FooterEvoluzioneControvalore"].NewRow(); dr["DescrizioneProgetto"] = "Operazioni in corso"; dr["VaR"] = fase1.investimentiInCorso; if (_numeroFasiPresenti.Equals(3)) dr["ControvaloreAttuale"] = fase2.investimentiInCorso; dr["AllocazioneAttuale"] = fase3.investimentiInCorso; dr["ReplaceIfZero"] = "-"; dr["FontBold"] = false; dr["BackgroundGray"] = false; ds.Tables["FooterEvoluzioneControvalore"].Rows.Add(dr); } if (fase1.contoCorrente != 0 || (_numeroFasiPresenti.Equals(3) && fase2 != null && fase2.contoCorrente != 0) || fase3.contoCorrente != 0) { dr = ds.Tables["FooterEvoluzioneControvalore"].NewRow(); dr["DescrizioneProgetto"] = "Conto corrente"; dr["VaR"] = fase1.contoCorrente; if (_numeroFasiPresenti.Equals(3)) dr["ControvaloreAttuale"] = fase2.contoCorrente; dr["AllocazioneAttuale"] = fase3.contoCorrente; dr["ReplaceIfZero"] = "-"; dr["FontBold"] = false; dr["BackgroundGray"] = false; ds.Tables["FooterEvoluzioneControvalore"].Rows.Add(dr); } if (fase1.lineaself != 0 || (_numeroFasiPresenti.Equals(3) && fase2 != null && fase2.lineaself != 0) || fase3.lineaself != 0) { dr = ds.Tables["FooterEvoluzioneControvalore"].NewRow(); dr["DescrizioneProgetto"] = " Liquidità negativa GP Eligo"; dr["VaR"] = fase1.lineaself; if (_numeroFasiPresenti.Equals(3)) dr["ControvaloreAttuale"] = fase2.lineaself; dr["AllocazioneAttuale"] = fase3.lineaself; dr["ReplaceIfZero"] = "-"; dr["FontBold"] = false; dr["BackgroundGray"] = false; ds.Tables["FooterEvoluzioneControvalore"].Rows.Add(dr); } var totfase1=fase1.risorseNA+fase1.lineaself+fase1.contoCorrente+fase1.investimentiInCorso+fase1.risorseAllocate; var totfase2 = fase2 != null ? fase2.risorseNA + fase2.lineaself + fase2.contoCorrente + fase2.investimentiInCorso + fase2.risorseAllocate : fase2NA; var totfase3 = fase3.risorseNA + fase3.lineaself + fase3.contoCorrente + fase3.investimentiInCorso + fase3.risorseAllocate; // Patrimonio Casa var rowFooter = ds.Tables["FooterEvoluzioneControvalore"].NewRow(); rowFooter["DescrizioneProgetto"] = string.Format("Patrimonio {0}", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment)); rowFooter["VaR"] = totfase1; if (_numeroFasiPresenti.Equals(3)) rowFooter["ControvaloreAttuale"] = totfase2; rowFooter["AllocazioneAttuale"] = totfase3; rowFooter["ReplaceIfZero"] = "-"; rowFooter["FontBold"] = true; rowFooter["BackgroundGray"] = true; ds.Tables["FooterEvoluzioneControvalore"].Rows.Add(rowFooter); #endregion #endregion #region Tabella evoluzione rischio areaRiferimento = areeMonotorate.FirstOrDefault(); foreach (var areaMon in areeMonotorate) { fase2 = areaMon.fasi.FirstOrDefault(o => o.fase1.Equals(2)); if (fase2 != null) { areaRiferimento = areaMon; break; } } if (areaRiferimento != null) { fase1 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(1)); fase2 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(2)); fase3 = areaRiferimento.fasi.FirstOrDefault(o => o.fase1.Equals(3)); } else { fase1 = null; fase2 = null; fase3 = null; } #region VaR massimo profilo finanziario (%) //Adriano: per i clienti professionali il varMaxProfilo è 50, ma solo per le fasi successive alla sottoscrizione di un contratto professionale // verificare che il valore sia fornito dal WS DateTime dtSottoscrizione = datiSeiUnico.clienteUnit().anagrafica.dtSottoscrizione; decimal varMaxProfilo = 50; string varMaxProfiloString = Helper.FormatDecimal(varMaxProfilo.ToString(), 2); bool fase1Successiva = fase1.dtFase.CompareTo(dtSottoscrizione) > 0; bool fase2Successiva = fase2 != null ? fase2.dtFase.CompareTo(dtSottoscrizione) > 0 : false; bool fase3Successiva = fase3.dtFase.CompareTo(dtSottoscrizione) > 0; if (profiloProfessionaleAggressivo) ds.Tables["EvoluzioneRischio"].Rows.Add( "VaR massimo profilo finanziario (%)", fase1 != null ? fase1Successiva ? varMaxProfilo : fase1.varMaxProfilo : 0, fase1 != null ? fase1Successiva ? varMaxProfiloString : Helper.FormatDecimal(fase1.varMaxProfilo.ToString(), 2) : "-", fase1 != null ? fase1.dtFase : DateTime.MinValue, string.Empty, fase2 != null ? fase2Successiva ? varMaxProfilo : fase2.varMaxProfilo : 0, fase2 != null ? fase2Successiva ? varMaxProfiloString : Helper.FormatDecimal(fase2.varMaxProfilo.ToString(), 2) : "-", fase2 != null ? fase2.dtFase : DateTime.MinValue, string.Empty, fase3 != null ? fase3Successiva ? varMaxProfilo : fase3.varMaxProfilo : 0, fase3 != null ? fase3Successiva ? varMaxProfiloString : Helper.FormatDecimal(fase3.varMaxProfilo.ToString(), 2) : "-", fase3 != null ? fase3.dtFase : DateTime.MinValue, string.Empty ); else ds.Tables["EvoluzioneRischio"].Rows.Add( "VaR massimo profilo finanziario (%)", fase1 != null ? fase1.varMaxProfilo : 0, fase1 != null ? Helper.FormatDecimal(fase1.varMaxProfilo.ToString(), 2) : "-", fase1 != null ? fase1.dtFase : DateTime.MinValue, string.Empty, fase2 != null ? fase2.varMaxProfilo : 0, fase2 != null ? Helper.FormatDecimal(fase2.varMaxProfilo.ToString(), 2) : "-", fase2 != null ? fase2.dtFase : DateTime.MinValue, string.Empty, fase3 != null ? fase3.varMaxProfilo : 0, fase3 != null ? Helper.FormatDecimal(fase3.varMaxProfilo.ToString(), 2) : "-", fase3 != null ? fase3.dtFase : DateTime.MinValue, string.Empty ); //--Adriano // originale: //ds.Tables["EvoluzioneRischio"].Rows.Add( // "VaR massimo profilo finanziario (%)", // fase1 != null ? fase1.varMaxProfilo : 0, // fase1 != null ? Helper.FormatDecimal(fase1.varMaxProfilo.ToString(), 2) : "-", // fase1 != null ? fase1.dtFase : DateTime.MinValue, // string.Empty, // fase2 != null ? fase2.varMaxProfilo : 0, // fase2 != null ? Helper.FormatDecimal(fase2.varMaxProfilo.ToString(), 2) : "-", // fase2 != null ? fase2.dtFase : DateTime.MinValue, // string.Empty, // fase3 != null ? fase3.varMaxProfilo : 0, // fase3 != null ? Helper.FormatDecimal(fase3.varMaxProfilo.ToString(), 2) : "-", // fase3 != null ? fase3.dtFase : DateTime.MinValue, // string.Empty // ); #endregion #region Rischio Mercato (VaR %) ds.Tables["EvoluzioneRischio"].Rows.Add( "Rischio Mercato
(VaR %)", fase1 != null ? fase1.varComplessivo : 0, fase1 != null ? Helper.FormatDecimal(fase1.varComplessivo.ToString(), 2) : "-", fase1 != null ? fase1.dtFase : DateTime.MinValue, fase1 != null ? fase1.varComplessivo <= fase1.varMaxProfilo ? "FlagOK.png" : "FlagNO.png" : string.Empty, fase2 != null ? fase2.varComplessivo : 0, fase2 != null ? Helper.FormatDecimal(fase2.varComplessivo.ToString(), 2) : "-", fase2 != null ? fase2.dtFase : DateTime.MinValue, fase2 != null ? fase2.varComplessivo <= fase2.varMaxProfilo ? "FlagOK.png" : "FlagNO.png" : string.Empty, fase3 != null ? fase3.varComplessivo : 0, fase3 != null ? Helper.FormatDecimal(fase3.varComplessivo.ToString(), 2) : "-", fase3 != null ? fase3.dtFase : DateTime.MinValue, fase3 != null ? fase3.varComplessivo <= fase3.varMaxProfilo ? "FlagOK.png" : "FlagNO.png" : string.Empty ); #endregion #region Rischio Credito massimo ds.Tables["EvoluzioneRischio"].Rows.Add( "Rischio Credito massimo", fase1 != null ? fase1.classeRischioMax : 0, fase1 != null ? fase1.classeRischioMaxDec.Contains("CLASSE") ? Helper.CapitalizeWords(fase1.classeRischioMaxDec) : fase1.classeRischioMaxDec : "-", fase1 != null ? fase1.dtFase : DateTime.MinValue, string.Empty, fase2 != null ? fase2.classeRischioMax : 0, fase2 != null ? fase2.classeRischioMaxDec.Contains("CLASSE") ? Helper.CapitalizeWords(fase2.classeRischioMaxDec) : fase2.classeRischioMaxDec : "-", fase2 != null ? fase2.dtFase : DateTime.MinValue, string.Empty, fase3 != null ? fase3.classeRischioMax : 0, fase3 != null ? fase3.classeRischioMaxDec.Contains("CLASSE") ? Helper.CapitalizeWords(fase3.classeRischioMaxDec) : fase3.classeRischioMaxDec : "-", fase3 != null ? fase3.dtFase : DateTime.MinValue, string.Empty ); #endregion #region Rischio Credito string value1 = fase1 != null ? fase1.classeRischioDec != null ? fase1.classeRischioDec.Contains("CLASSE") ? Helper.CapitalizeWords(fase1.classeRischioDec) : fase1.classeRischioDec : "n.a." : "n.a."; string value2 = fase2 != null ? fase2.classeRischioDec != null ? fase2.classeRischioDec.Contains("CLASSE") ? Helper.CapitalizeWords(fase2.classeRischioDec) : fase2.classeRischioDec : "n.a." : "n.a."; string value3 = fase3 != null ? fase3.classeRischioDec != null ? fase3.classeRischioDec.Contains("CLASSE") ? Helper.CapitalizeWords(fase3.classeRischioDec) : fase3.classeRischioDec : "n.a." : "n.a."; ds.Tables["EvoluzioneRischio"].Rows.Add( "Rischio Credito", fase1 != null ? Convert.ToInt32(fase1.classeRischio) : 0, value1, fase1 != null ? fase1.dtFase : DateTime.MinValue, fase1 != null ? value1.Equals("n.a.") ? string.Empty : Convert.ToInt32(fase1.classeRischio) <= fase1.classeRischioMax ? "FlagOK.png" : "FlagNO.png" : string.Empty, fase2 != null ? Convert.ToInt32(fase2.classeRischio) : 0, value2, fase2 != null ? fase2.dtFase : DateTime.MinValue, fase2 != null ? value2.Equals("n.a.") ? string.Empty : Convert.ToInt32(fase2.classeRischio) <= fase2.classeRischioMax ? "FlagOK.png" : "FlagNO.png" : string.Empty, fase3 != null ? Convert.ToInt32(fase3.classeRischio) : 0, value3, fase3 != null ? fase3.dtFase : DateTime.MinValue, fase3 != null ? value3.Equals("n.a.") ? string.Empty : Convert.ToInt32(fase3.classeRischio) <= fase3.classeRischioMax ? "FlagOK.png" : "FlagNO.png" : string.Empty ); #endregion #endregion return ds; } public virtual bool evoluzionePatrimonio() { return GetOption().Valore; } public virtual bool sintesiMovimento() { return true; } // tanto deve essere sempre vibile, ne caso gestire la Opzione X_2 che arriva dai vincoli public virtual bool evoluzioneRischio() { return GetOption().Valore; } public virtual string GetTesto1() { return datiSeiUnico.FormatBanca("Nella tabella sottostante è riportata l'evoluzione, in termini di controvalore, del patrimonio che lei detiene presso $/Banca/$ dall'avvio del monitoraggio alla situazione attuale."); } public virtual string GetTesto2() { return datiSeiUnico.FormatBanca("Nella tabella sottostante è riportata l'evoluzione, in termini di Rischio Mercato (VaR) e di Rischio Credito, del patrimonio che lei detiene presso $/Banca/$, dall'avvio del monitoraggio alla situazione attuale."); } public bool isAltro(List> l1, List> l2, List> l3, string type) { if (decimal.Parse(l1.FirstOrDefault(x => x.Key.Equals(type)).Value) != 0 || decimal.Parse(l3.FirstOrDefault(x => x.Key.Equals(type)).Value) != 0) if (l2 == null) return true; else if (decimal.Parse(l2.FirstOrDefault(x => x.Key.Equals(type)).Value) != 0) return true; return false; } public List> getListaProdotti(fase fase) { var listaProdotti = new List>(); { // listaProdotti.Add(new KeyValuePair("c/c negativo", pianificazione.altro.ToString())); listaProdotti.Add(new KeyValuePair("Operazioni in corso", fase.investimentiInCorso.ToString())); listaProdotti.Add(new KeyValuePair("Conto corrente", fase.contoCorrente.ToString())); listaProdotti.Add(new KeyValuePair("Liquidità negativa GP Eligo", fase.lineaself.ToString())); } return listaProdotti;//.FindAll(o => o.Value != "0"); } } }