using System; using System.Data; using PDFGenerator.BusinessLayer.DataSection; using PDFGenerator.BusinessLayer; using System.Collections.Generic; using PDFGenerator; /// /// Summary description for DSS6PatrimonioFinanziario /// public class DSS6PatrimonioFinanziario : IDataSection { #region IDataSection Members public StructColor toBeFound = new StructColor(); public DataSectionResult getDataSection(List tabelleSessione, string querySql, DataThread dataThread) { DataSectionResult dsr = new DataSectionResult(); Decimal ctvTotale = 0; DataTable dt = SectionManager.GetDataSection(tabelleSessione,querySql,dataThread); DataSetS6 ds6 = new DataSetS6(); DataRow dr; if (dataThread.TotalNegativeCurrentAccountValue != 0) { ds6.Intermediario.Columns["Controvalore"].Caption = "Controvalore *
(€)        "; } else { ds6.Intermediario.Columns["Controvalore"].Caption = "Controvalore
(€)        "; } //ds6.Intermediario.Columns["Controvalore"].Caption = "Controvalore
(€)        "; ds6.Intermediario.Columns["Percentuale"].Caption = "Peso
(%)  "; toBeFound.Tipo = "Intermediario"; int i = 1; string banca = string.Empty; decimal cc = 0; foreach (DataRow row in dt.Rows) { dr = ds6.Intermediario.NewRow(); dr["Descrizione"] = row["Intermediario"]; dr["Controvalore"] = row["Controvalore"]; dr["Percentuale"] = row["Percentuale"]; if (banca == string.Empty) { banca = (string)row["Banca"]; //V dr["Controvalore"] = (Convert.ToDecimal(dr["Controvalore"]) + dataThread.PartiteViaggiantiInvestimento + dataThread.PartiteViaggiantiDisinvestimento).ToString(); } if(cc == 0) cc = dataThread.ContoCorrente; toBeFound.Codice = row["Intermediario"].ToString(); int foundIdx = ClsFunzioniGeneriche.findRightColors(toBeFound); if(foundIdx == 0) foundIdx = i; dr["Red"] = ClsFunzioniGeneriche.Colors[foundIdx].Red; dr["Green"] = ClsFunzioniGeneriche.Colors[foundIdx].Green; dr["Blue"] = ClsFunzioniGeneriche.Colors[foundIdx].Blue; ctvTotale += Convert.ToDecimal(dr["Controvalore"]); ds6.Intermediario.Rows.Add(dr); i+=2; } //V Ricalcolo delle percentuali foreach (DataRow row in ds6.Intermediario.Rows) { decimal temp = Convert.ToDecimal(row["Controvalore"]); decimal perc = temp / ctvTotale; perc = decimal.Round(perc,4); perc *= 100; row["Percentuale"] = perc.ToString(); } //V Quadratura a 100 delle percentuali decimal residuo = 100M; string descrizioneMaggiore = null; decimal percMaggiore = 0; foreach (DataRow row in ds6.Intermediario.Rows) { decimal temp = Convert.ToDecimal(row["Percentuale"]); if (temp > percMaggiore) { percMaggiore = temp; descrizioneMaggiore = row["Descrizione"].ToString(); } residuo -= temp; } if (residuo != 0) { foreach (DataRow row in ds6.Intermediario.Rows) { if (row["Descrizione"].ToString() == descrizioneMaggiore) { decimal temp = Convert.ToDecimal(row["Percentuale"]); temp += residuo; row["Percentuale"] = temp.ToString(); } } } //DataSetS6.ContoCorrenteBancaFideuramRow drContoCorrenteBancaFideuramRow; //drContoCorrenteBancaFideuramRow = ds6.ContoCorrenteBancaFideuram.NewContoCorrenteBancaFideuramRow(); //drContoCorrenteBancaFideuramRow.Descrizione = "c/c " + banca; //drContoCorrenteBancaFideuramRow.ControValore = cc;//(decimal)dataSectionParameter.DatiComuni.ContoCorrente.Rows[0][0]; //if (drContoCorrenteBancaFideuramRow.ControValore < 0) // ds6.ContoCorrenteBancaFideuram.Rows.Add(drContoCorrenteBancaFideuramRow); DataRow drTot = ds6.IntermediarioTotale.NewRow(); //if(drContoCorrenteBancaFideuramRow.ControValore<0) // drTot["Totale"] = "TOTALE RAPPRESENTATO"; //else drTot["Totale"] = "TOTALE"; //V drTot["Controvalore"] = ctvTotale; dataThread.TotaleS6 = ctvTotale; // if(ctvTotale >= 0) drTot["Percentuale"] = 100.00; else drTot["Percentuale"] = 0.00; ds6.IntermediarioTotale.Rows.Add(drTot); //DataSetS6.TotaleRow drTotale; //drTotale = ds6.Totale.NewTotaleRow(); //drTotale.Descrizione = "TOTALE"; //drTotale.ControValore = (ctvTotale + drContoCorrenteBancaFideuramRow.ControValore); //drTotale.ControValore = ctvTotale; // Aggiungo la riga di totale solo se il la riga del cc deve essere stampata. (cc<0) //if(drContoCorrenteBancaFideuramRow.ControValore<0) // ds6.Totale.Rows.Add(drTotale); //Normalizzo le percentuali if (ds6.Intermediario.Rows.Count > 0) { FormatNum conv = new FormatNum(); conv.NormalizePerc(ds6.Intermediario, "Percentuale"); dataThread.DtDSS6Intermediari = ds6.Intermediario; } else { dataThread.DtDSS6Intermediari = new DataSetS6.IntermediarioDataTable(); } //======================================================== dsr.DatiSezione = ds6; dsr.Esito = dt.Rows.Count; return dsr; } #endregion }