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; }
}