using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Collections; using PDFGenerator.BusinessLayer.DataSection; using System.Collections.Generic; using PDFGenerator.BusinessLayer; using DataAccessLayer; /// /// Summary description for DSS76PatrimonioNonRappresentabileAssettClass /// public class DSS171PatrimonioNonRappresentabileAssettClass : IDataSection { private ArrayList _parametriFiltro; private bool _Filtra; private bool HasColumnCtvNonCoperto; private bool _flagS86; private bool _flagS86BIS; private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); /// /// Indica se è stato flaggato sull'albero la sezione S86 /// public bool FlagS86 { get { return _flagS86; } set { _flagS86 = value; } } /// /// Indica se è stato flaggato sull'albero la sezione S86BIS /// public bool FlagS86BIS { get { return _flagS86BIS; } set { _flagS86BIS = value; } } /// /// Costruttore /// public DSS171PatrimonioNonRappresentabileAssettClass() { _parametriFiltro = new ArrayList(); _Filtra = false; } /// /// Costruttore /// /// public DSS171PatrimonioNonRappresentabileAssettClass(EmodalitaRappresentazione modalitavisualizzazione) { _modalitaRappresentazione = modalitavisualizzazione; _parametriFiltro = new ArrayList(); _Filtra = false; } /// /// Modalità di visualizzazione: /// La modalità normale mostra la colonna Intermediario(S76 in modalità normale), /// La modalità alternativa mostra la colonna AreaProgetto(S76 in modalità alternativa). /// Se non specificato di default viene impostata la modalità normale. /// public enum EmodalitaRappresentazione { normale, alternativa } private EmodalitaRappresentazione _modalitaRappresentazione = EmodalitaRappresentazione.normale; /// /// Modalità di visualizzazione: /// La modalità normale mostra la colonna Intermediario(S76 in modalità normale), /// La modalità alternativa mostra la colonna AreaProgetto(S76 in modalità alternativa). /// Se non specificato di default viene impostata la modalità normale. /// public EmodalitaRappresentazione modalitaRappresentazione { get { return _modalitaRappresentazione; } set { _modalitaRappresentazione = value; } } public DataSectionResult getDataSection(List tabelleSessione, string querySql, DataThread dataThread) { DataSectionResult dsr = new DataSectionResult(); DataTable dt; logger.Info("DSS171PatrimonioNonRappresentabileAssetClass query" + querySql); logger.Info("DSS171PatrimonioNonRappresentabileAssetClass " + EmodalitaRappresentazione.normale); /*** ATTENZIONE Forzatura - Pino ***/ //dataThread.Periodico = false; //dataThread.CodiceFiscale = "GTNLCN70P01H769Y"; //dataThread.Rete = "S"; /***********************************/ if (_modalitaRappresentazione==EmodalitaRappresentazione.normale) { dt = SectionManager.GetDataSection(tabelleSessione, querySql, dataThread); } else { dt = SectionManager.GetDataSection(tabelleSessione, querySql, dataThread); if (_Filtra) { if (_parametriFiltro.Count > 0) { string parametriFiltro = "need_area in("; for (int i = 0; i < _parametriFiltro.Count; i++) { parametriFiltro += "'" + _parametriFiltro[i].ToString() + "',"; } parametriFiltro = parametriFiltro.Remove(parametriFiltro.Length - 1); parametriFiltro += ")"; DataView dtFiltrata = new DataView(dt); dtFiltrata.RowFilter = parametriFiltro; dt = dtFiltrata.ToTable(); } else { dt.Rows.Clear(); } } } /*** ATTENZIONE Forzatura - Pino ***/ //dataThread.Periodico = true; //dataThread.CodiceFiscale = "BBNCLD64R20D205D"; //dataThread.Rete = "F"; /***********************************/ DataRow dr; Decimal ctvTotale = 0; Decimal ctvTotaleNonCoperto = 0; DataSetS76 ds76 = new DataSetS76(); #region Nuovo Codice List contoCorrentes = new List(); ContoCorrente contoCorrente = new ContoCorrente(); foreach (DataRow r in dt.Rows) { contoCorrente.Contratto = r["Contratto"].ToString(); contoCorrente.Descrizione = r["Descrizione"].ToString(); contoCorrente.Tipo_Prodotto = r["Tipo_Prodotto"].ToString(); contoCorrente.isAPC = r["isAPC"].ToString(); // SavingMap New contoCorrente.IMAGE = string.Empty; if (contoCorrente.Contratto.ToString().IndexOf("VP") > 0 && contoCorrente.Tipo_Prodotto.ToString().Trim() == "CC") contoCorrente.IMAGE = WebConfigParameter.getParameter("SavingMap"); else { if (contoCorrente.Contratto.ToString().IndexOf("FO") > 0) { if (isSavingMap(dataThread.Rete, dataThread.CodiceFiscale.Trim(), contoCorrente.Contratto.ToString().Trim(), dataThread.Periodico)) contoCorrente.IMAGE = WebConfigParameter.getParameter("SavingMap"); } } // End SavingMap if (contoCorrente.isAPC.ToString() == "S") { contoCorrente.IMAGE = WebConfigParameter.getParameter("APC103"); dataThread.IsAPC103 = true; } switch (_modalitaRappresentazione) { case EmodalitaRappresentazione.normale: contoCorrente.Intermediario = r["Intermediario"].ToString(); break; case EmodalitaRappresentazione.alternativa: contoCorrente.AreaProgetto = r["Area"].ToString(); //V se il progetto è progetto investimento non deve apparire la riga / progetto string progetto = r["Progetto"].ToString(); if (r["Area"].ToString().ToUpper() == "INVESTIMENTO") if (progetto != "Progetto investimento") contoCorrente.AreaProgetto += " / " + progetto; // break; } contoCorrente.ControvaloreNonCoperto = r["Controvalore"].ToString(); contoCorrente.Controvalore = r["controvalore_contratto"].ToString(); contoCorrente.DataSottoscrizione = r["DataSottoscrizione"].ToString(); #region Gestione controvalore non coperto decimal ctv = 0; decimal ctvContratto = 0; if (r["Controvalore"] != DBNull.Value) ctv = Convert.ToDecimal(r["Controvalore"]); if (r["controvalore_contratto"] != DBNull.Value) ctvContratto = Convert.ToDecimal(r["controvalore_contratto"]); if (ctv != ctvContratto) HasColumnCtvNonCoperto = true; #endregion contoCorrentes.Add(contoCorrente); ctvTotale += (Decimal)r["controvalore_contratto"]; ctvTotaleNonCoperto += (Decimal)r["Controvalore"]; } // Trasformo la lista in un Datatable DataTable _dt = UtilityBusinessLayer.ToDataTable(contoCorrentes); // Aggiungo il nuovo DataTable al Dataset ds76 _dt.TableName = "ContoCorrente"; ds76.Tables["ContoCorrente"].TableName = "OLD"; ds76.Tables.Add(_dt); #endregion //foreach (DataRow r in dt.Rows) //{ // // attraverso il metodo ClsFunzioniGeneriche recupero la data del contartto // logger.Info("DSS171PatrimonioNonRappresentabileAssetClass ciclo sul datatable " + r["Contratto"]); // dr = ds76.ContoCorrente.NewRow(); // dr["Contratto"] = r["Contratto"]; // dr["Descrizione"] = r["Descrizione"]; // logger.Info("DSS171PatrimonioNonRappresentabileAssetClass ciclo sul datatable " + r["Tipo_Prodotto"]); // dr["Tipo_Prodotto"] = r["Tipo_Prodotto"]; // logger.Info("DSS171PatrimonioNonRappresentabileAssetClass ciclo sul datatable " + dr["Tipo_Prodotto"]); // logger.Info("DSS171PatrimonioNonRappresentabileAssetClass ciclo sul datatable " + r["isAPC"]); // dr["isAPC"] = r["isAPC"]; // logger.Info("DSS171PatrimonioNonRappresentabileAssetClass ciclo sul datatable " + dr["isAPC"]); // // SavingMap New // dr[""] = string.Empty; // if (dr["Contratto"].ToString().IndexOf("VP") > 0 && dr["Tipo_Prodotto"].ToString().Trim() == "CC") // dr[""] = WebConfigParameter.getParameter("SavingMap"); // else // { // if (dr["Contratto"].ToString().IndexOf("FO") > 0) // { // if (isSavingMap(dataThread.Rete, dataThread.CodiceFiscale.Trim(), dr["Contratto"].ToString().Trim(), dataThread.Periodico)) // dr[""] = WebConfigParameter.getParameter("SavingMap"); // } // } // // End SavingMap // if (dr["isAPC"].ToString() == "S") // { // dr[""] = WebConfigParameter.getParameter("APC103"); // dataThread.IsAPC103 = true; // } // switch (_modalitaRappresentazione) // { // case EmodalitaRappresentazione.normale: // dr["Intermediario"] = r["Intermediario"]; // break; // case EmodalitaRappresentazione.alternativa: // dr["AreaProgetto"] = r["Area"].ToString(); // //V se il progetto è progetto investimento non deve apparire la riga / progetto // string progetto = r["Progetto"].ToString(); // if (r["Area"].ToString().ToUpper() == "INVESTIMENTO") // if (progetto != "Progetto investimento") // dr["AreaProgetto"] += " / " + progetto; // // // break; // } // dr["ControvaloreNonCoperto"] = r["Controvalore"]; // dr["Controvalore"] = r["controvalore_contratto"]; // dr["DataSottoscrizione"] = r["DataSottoscrizione"]; // #region Gestione controvalore non coperto // decimal ctv = 0; // decimal ctvContratto = 0; // if (r["Controvalore"] != DBNull.Value) // ctv = Convert.ToDecimal(r["Controvalore"]); // if (r["controvalore_contratto"] != DBNull.Value) // ctvContratto = Convert.ToDecimal(r["controvalore_contratto"]); // if (ctv != ctvContratto) // HasColumnCtvNonCoperto = true; // #endregion // ds76.ContoCorrente.Rows.Add(dr); // ctvTotale += (Decimal)r["controvalore_contratto"]; // ctvTotaleNonCoperto += (Decimal)r["Controvalore"]; //} DataRow drTot = ds76.TotaleConti.NewRow(); drTot["Descrizione"] = "Totale Patrimonio non rappresentabile".ToUpper(); drTot["Valore"] = ctvTotale; drTot["ValoreNonCoperto"] = ctvTotaleNonCoperto; ds76.TotaleConti.Rows.Add(drTot); #region Nuovo Codice // Aggiungo l'informazione per la parte grafica if (ds76.Tables[2].ExtendedProperties.Contains("HasColumnCtvNonCoperto")) ds76.Tables[2].ExtendedProperties["HasColumnCtvNonCoperto"] = HasColumnCtvNonCoperto; else ds76.Tables[2].ExtendedProperties.Add("HasColumnCtvNonCoperto", HasColumnCtvNonCoperto); //Patrimonio non rappresentabile per asset class- //se presente patrimonio non rappresentabile ed è stata selezionata solo la vista a livello di portafoglio complessivo, //nella tabella non deve essere riportata la colonna Area/progetto if (_flagS86 == false && _flagS86BIS == false) ds76.Tables[2].Columns["AreaProgetto"].ExtendedProperties.Add("ToRemove", true); dsr.DatiSezione = ds76; dsr.Esito = ds76.Tables[2].Rows.Count; #endregion #region Old Codice //// Aggiungo l'informazione per la parte grafica //if (ds76.ContoCorrente.ExtendedProperties.Contains("HasColumnCtvNonCoperto")) // ds76.ContoCorrente.ExtendedProperties["HasColumnCtvNonCoperto"] = HasColumnCtvNonCoperto; //else // ds76.ContoCorrente.ExtendedProperties.Add("HasColumnCtvNonCoperto", HasColumnCtvNonCoperto); ////Patrimonio non rappresentabile per asset class- ////se presente patrimonio non rappresentabile ed è stata selezionata solo la vista a livello di portafoglio complessivo, ////nella tabella non deve essere riportata la colonna Area/progetto //if (_flagS86 == false && _flagS86BIS == false) // ds76.ContoCorrente.AreaProgettoColumn.ExtendedProperties.Add("ToRemove", true); //dsr.DatiSezione = ds76; //dsr.Esito = ds76.ContoCorrente.Rows.Count; #endregion return dsr; } public ArrayList ParametriFiltro { set { _Filtra = true; _parametriFiltro = value; } } public bool isSavingMap(string pRete, string pCodFis, string pContratto, bool pPeriodico) { //dataThread.Rete, dataThread.CodiceFiscale, dr.Contratto, dr.Tipo_Prodotto, dataThread.Periodico var parametri = new List { new Parametro { Direction = ParameterDirection.Input, DbType = DbType.String, ParameterName = "Rete", Value = pRete }, new Parametro { Direction = ParameterDirection.Input, DbType = DbType.String, ParameterName = "CodFis", Value = pCodFis }, new Parametro { Direction = ParameterDirection.Input, DbType = DbType.String, ParameterName = "CodConf", Value = pContratto } }; string sSql = ""; if (pPeriodico) sSql = "[C6MartPeriodico].[PL_SavingMap]"; else sSql = "[C6Mart].[PL_SavingMap]"; DataAccessDE dataAccess = new DataAccessDE(DBProvider.SqlServerStampeC6); DataTable dt = dataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerStampeC6, sSql, parametri); if ((dt == null) || (dt.Rows.Count == 0)) return false; else { if ((dt.Rows[0][0].ToString() == "0")) return false; else return true; } } } public class ContoCorrente { public string DataSottoscrizione { get; set; } public string Contratto { get; set; } public string Descrizione { get; set; } public string IMAGE { get; set; } public string Intermediario { get; set; } public string AreaProgetto { get; set; } public string Controvalore { get; set; } public string ControvaloreNonCoperto { get; set; } public string Tipo_Prodotto { get; set; } public string isAPC { get; set; } }