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 PDFGenerator.BusinessLayer; using System.Collections.Generic; namespace PDFGenerator.BusinessLayer.DataSection { public class DSFD147SintesiValute : IDataSection { private const int NUM_VALUTE = 6; public DSFD147SintesiValute() { } //public DataSectionResult getDataSection(IDataSectionParameter dsp) //{ #region IDataSection Members public DataSectionResult getDataSection(List tabelleSessione, string querySql, DataThread dataThread) { DataSectionResult dsr = new DataSectionResult(); //DataSectionParameter dataSectionParameter = (DataSectionParameter)dsp; //DSS118RappresentazionePerValuta dss118 = new DSS118RappresentazionePerValuta(); //DataSectionResult output118 = dss118.getDataSection(dsp); //DataTable totalePatrimoni = output118.DatiSezione.Tables["Patrimoni"]; //if (totalePatrimoni == null) // return dsr; //DataView dw = new DataView(totalePatrimoni); //dw.RowFilter = "CodicePatrimonio='BF'"; //totalePatrimoni = dw.ToTable(); FormatNum conv = new FormatNum(); DataSetS147 ds147 = new DataSetS147(); DataSetS147.PesiValutePositiveRow rowGraficoPositiva = ds147.PesiValutePositive.NewPesiValutePositiveRow(); DataSetS147.PesiValuteNegativeRow rowGraficoNegativa = ds147.PesiValuteNegative.NewPesiValuteNegativeRow(); DataSetS147.PesiValuteTotaliRow rowTotali = ds147.PesiValuteTotali.NewPesiValuteTotaliRow(); //V Se il cliente ha solo cc negativo la sezione non deve uscire if (dataThread.PatrimonioBancaFideuramCtvAlNettoContoCorrente == 0) return dsr; DataTable datiValute = SectionManager.GetDataSection(tabelleSessione, querySql, dataThread); if (datiValute.Rows.Count == 0) return dsr; int k = 0; decimal pesoAltreValute100 = 100; decimal pesoAltreValute0 = 0; double copertura = 1.00; foreach (DataRow dr in datiValute.Rows) { decimal peso = Decimal.Round(Convert.ToDecimal(dr["percentuale"].ToString()), 2, MidpointRounding.AwayFromZero); pesoAltreValute100 -= peso; if (k < NUM_VALUTE) { string codiceValuta = "PesoPercentualeValuta" + (k + 1).ToString(); //double peso = Convert.ToDouble(dr["percentuale"].ToString());// Convert.ToDouble(totalePatrimoni.Rows[0][codiceValuta]); // Il peso lo prendo dalla dss118 Math.Round(Convert.ToDouble(dr["PESO"]),2); rowTotali.Peso = (double)peso; rowTotali.Valuta = dr["DIVISA"].ToString(); rowTotali.Bandiera = ""; rowTotali.Pallino = ""; //pesoAltreValute -= rowGrafico.Peso; rowTotali.Copertura = Convert.ToDouble(dr["COPERTURA"]); copertura = rowTotali.Copertura; ds147.PesiValuteTotali.Rows.Add(rowTotali); rowTotali = ds147.PesiValuteTotali.NewPesiValuteTotaliRow(); if (peso >= 0) { rowGraficoPositiva.Peso = (double)peso; rowGraficoNegativa.Peso = 0; } else { rowGraficoPositiva.Peso = 0; rowGraficoNegativa.Peso = (double)-peso; } //Parte positiva rowGraficoPositiva.Valuta = dr["DIVISA"].ToString(); rowGraficoPositiva.Bandiera = ""; rowGraficoPositiva.Pallino = ""; //pesoAltreValute -= rowGrafico.Peso; rowGraficoPositiva.Copertura = Convert.ToDouble(dr["COPERTURA"]); copertura = rowGraficoPositiva.Copertura; ds147.PesiValutePositive.Rows.Add(rowGraficoPositiva); rowGraficoPositiva = ds147.PesiValutePositive.NewPesiValutePositiveRow(); rowGraficoNegativa.Valuta = dr["DIVISA"].ToString(); rowGraficoNegativa.Bandiera = ""; rowGraficoNegativa.Pallino = ""; //pesoAltreValute -= rowGrafico.Peso; rowGraficoNegativa.Copertura = Convert.ToDouble(dr["COPERTURA"]); copertura = rowGraficoNegativa.Copertura; ds147.PesiValuteNegative.Rows.Add(rowGraficoNegativa); rowGraficoNegativa = ds147.PesiValuteNegative.NewPesiValuteNegativeRow(); ++k; } else { pesoAltreValute0 += peso; } } pesoAltreValute0 += pesoAltreValute100; if (pesoAltreValute0 != 0) { //pesoAltreValute = 0.0;// Convert.ToDouble(totalePatrimoni.Rows[0]["PesoPercentualeAltre"]); // Se ho peso altre valute lo prendo corretto dalla s118 Math.Round(pesoAltreValute, 2); if (pesoAltreValute0 > 0) { rowGraficoPositiva.Peso = (double)pesoAltreValute0; rowGraficoNegativa.Peso = 0; } else { rowGraficoPositiva.Peso = 0; rowGraficoNegativa.Peso = (double)-pesoAltreValute0; } rowTotali.Peso = (double)pesoAltreValute0; rowTotali.Valuta = "ALTRE"; rowTotali.Bandiera = ""; rowTotali.Pallino = ""; //pesoAltreValute -= rowGrafico.Peso; rowTotali.Copertura = copertura; copertura = rowTotali.Copertura; ds147.PesiValuteTotali.Rows.Add(rowTotali); rowTotali = ds147.PesiValuteTotali.NewPesiValuteTotaliRow(); rowGraficoPositiva.Valuta = "ALTRE"; rowGraficoPositiva.Bandiera = ""; rowGraficoPositiva.Pallino = ""; //pesoAltreValute -= rowGrafico.Peso; rowGraficoPositiva.Copertura = copertura; copertura = rowGraficoPositiva.Copertura; ds147.PesiValutePositive.Rows.Add(rowGraficoPositiva); rowGraficoPositiva = ds147.PesiValutePositive.NewPesiValutePositiveRow(); rowGraficoNegativa.Valuta = "ALTRE"; rowGraficoNegativa.Bandiera = ""; rowGraficoNegativa.Pallino = ""; //pesoAltreValute -= rowGrafico.Peso; rowGraficoNegativa.Copertura = copertura; copertura = rowGraficoNegativa.Copertura; ds147.PesiValuteNegative.Rows.Add(rowGraficoNegativa); rowGraficoNegativa = ds147.PesiValuteNegative.NewPesiValuteNegativeRow(); } dsr.DatiSezione = ds147; dsr.Esito = ds147.PesiValutePositive.Rows.Count; try { if ((Convert.ToDouble(ds147.PesiValuteTotali.Rows[0]["Copertura"]) * 100) < 50) dsr.Esito = 0; } catch { } return dsr; } #endregion } }