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 ceTe.DynamicPDF; using ceTe.DynamicPDF.Text; using PDFGenerator.Presentation.Section.Tables; using PDFGenerator.BusinessLayer.DataSection; using PDFGenerator.BusinessLayer; using System.Threading; using System.Globalization; using System.Collections.Generic; using Dundas.Charting.WebControl; using NLog; using System.Linq; // Rappresentazione per valute: sintesi namespace PDFGenerator.Presentation.Section { public class FD147 : SIstogramma, ISezione // valute { private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); public FD147() { } private string _testointroduttivo; private string _testointroduttivoAlternativo; /// /// Testo introduttivo della sezione /// public string TestoIntroduttivo { get { return _testointroduttivo; } set { _testointroduttivo = value; } } /// /// Testo introduttivo della sezione /// public string TestoIntroduttivoAlternativo { get { return _testointroduttivoAlternativo; } set { _testointroduttivoAlternativo = value; } } public void writeSezione(DataThread dataThread) { dataThread.SETDATA(); DocumentPDF document = dataThread.DocumentPDF; Dictionary colori = this.getColorCurrencies(); System.Drawing.Color colore; document.addPage(); document.NumLastPage = document.NumPage; dataThread.SezioneReport.TestoIntroduttivo = dataThread.SezioneReport.TestoIntroduttivoAlternativo; //DataSectionParameter dataSectionParameter = paramSez.getParam(); FormatNum conv = new FormatNum(); DatiTabella datitab = new DatiTabella(); DataSetS147 set = (DataSetS147)dataThread.Data.DatiSezione; //*********************** Modifiche Andrea nuove valute****************************************** foreach (var item in set.PesiValuteTotali.AsEnumerable()) { if (item.Field("VALUTA").ToString() == "XX1") item.SetField("VALUTA", "Non Disp"); if (item.Field("VALUTA").ToString() == "AP1") item.SetField("VALUTA", "Altre PE"); if (item.Field("VALUTA").ToString() == "AP2") item.SetField("VALUTA", "Altre PS"); } foreach (var item1 in set.PesiValuteNegative.AsEnumerable()) { if (item1.Field("VALUTA").ToString() == "XX1") item1.SetField("VALUTA", "Non Disp"); if (item1.Field("VALUTA").ToString() == "AP1") item1.SetField("VALUTA", "Altre PE"); if (item1.Field("VALUTA").ToString() == "AP2") item1.SetField("VALUTA", "Altre PS"); } foreach (var item2 in set.PesiValutePositive.AsEnumerable()) { if (item2.Field("VALUTA").ToString() == "XX1") item2.SetField("VALUTA", "Non Disp"); if (item2.Field("VALUTA").ToString() == "AP1") item2.SetField("VALUTA", "Altre PE"); if (item2.Field("VALUTA").ToString() == "AP2") item2.SetField("VALUTA", "Altre PS"); } //***************************************************************************** /* Aggiungo colonne per i colori */ tabTortaTabella = set.Tables["PesiValuteTotali"]; tabTortaTabella.Columns.Add("Red",typeof(int)); tabTortaTabella.Columns.Add("Green", typeof(int)); tabTortaTabella.Columns.Add("Blue", typeof(int)); foreach (DataRow row in tabTortaTabella.Rows) { try { if (row["VALUTA"].ToString().ToUpper() == "EUR") { colore = colori[row["VALUTA"].ToString().ToUpper()]; } else { colore = colori["ALTRE"]; } } catch (Exception e) { logger.Error(String.Concat("colori", e.Message, dataThread.CodiceFiscale, dataThread.Rete)); colore = colori["ALTRE"]; } //RgbColor theColor = new RgbColor(colore.R, colore.G, colore.B); row["Red"] = (int)colore.R; row["Green"] = (int)colore.G; row["Blue"] = (int)colore.B; } base.DirectBanker = "S"; base.writeSezioneFD147(dataThread); } private Dictionary getColorCurrencies() { Dictionary colori = new Dictionary(); colori.Add("EUR", System.Drawing.Color.FromArgb(217, 81, 33)); //colori.Add("USD", System.Drawing.Color.FromArgb(82, 135, 197)); //colori.Add("CHF", System.Drawing.Color.FromArgb(255, 200, 0)); //colori.Add("GBP", System.Drawing.Color.FromArgb(255, 0, 255)); //colori.Add("CNY", System.Drawing.Color.FromArgb(255, 0, 0)); //colori.Add("JPY", System.Drawing.Color.FromArgb(0, 0, 0)); colori.Add("ALTRE", System.Drawing.Color.FromArgb(131, 188, 180)); return colori; } private void addNota1(DocumentPDF doc, int dim, DataThread dataThread, double copertura) { decimal totalNegativeCurrentAccountValue = dataThread.Periodico ? dataThread.ContoCorrente : 0; decimal GPEligoFondi = dataThread.GPEligoFondi; decimal GPEligoTitoli = dataThread.GPEligoTitoli; decimal ProdottiNonRapp = dataThread.PatrimonioNonRappresentabileFI; decimal PartiteViaggianti = dataThread.PartiteViaggiantiInvestimento; //double GradoCopertura = copertura; decimal valore = dataThread.PatrimonioBancaFideuramCtvAlNettoContoCorrente + dataThread.PartiteViaggiantiInvestimento + dataThread.PartiteViaggiantiDisinvestimento + dataThread.PatrimonioNonRappresentabileFI; decimal GradoCopertura = (dataThread.PatrimonioBancaFideuramCtvAlNettoContoCorrente - dataThread.PatrimonioNonRappresentabileFI) / valore * 100; List notes = new List(); string nota = string.Empty; string nota1 = ""; string token = ""; //totalNegativeCurrentAccountValue = -1000.00M; //totaleSelfNegFO = -1000.00M; //totalePartiteViaggianti = 1000.00M; //GPEligoFondi = -500.00M; //GPEligoTitoli = -500.00M; //PatrimonioTerzi = -400.00M; //GradoCopertura = 70.00M; //PatrimonioTerziNonRapp = 100.00M; //ProdottiNonRapp = 20.00M; if (totalNegativeCurrentAccountValue != 0 || GPEligoFondi < 0 || GPEligoTitoli < 0 || ((GradoCopertura >= 0 && GradoCopertura < 100) && (ProdottiNonRapp != 0 || PartiteViaggianti != 0))) { nota = "(*) "; } if (totalNegativeCurrentAccountValue != 0 || GPEligoFondi < 0 || GPEligoTitoli < 0) { notes.Add("Il controvalore esclude il saldo negativo"); token = " "; if (totalNegativeCurrentAccountValue < 0) { notes.Add(string.Format(token + "dei conti correnti ({0} €)", totalNegativeCurrentAccountValue.ToString("N"))); token = ", "; } if (GPEligoFondi < 0) { notes.Add(string.Format(token + "della liquidità sottostante GP Eligo Fondi ({0} €)", GPEligoFondi.ToString("N"))); token = ", "; } if (GPEligoTitoli < 0) { notes.Add(string.Format(token + "della liquidità sottostante GP Eligo Titoli ({0} €)", GPEligoTitoli.ToString("N"))); token = ", "; } token = ". "; } if (ProdottiNonRapp != 0 || PartiteViaggianti != 0) { if (GradoCopertura >= 0 && GradoCopertura < 100) { notes.Add(string.Format(token + "Grado di copertura (%) della rappresentazione grafica per esposizione valutaria pari a {0}", GradoCopertura.ToString("N"))); token = ": "; if (ProdottiNonRapp != 0 || PartiteViaggianti != 0) { notes.Add(string.Format(token + "non sono considerati")); token = " "; if (ProdottiNonRapp != 0 || PartiteViaggianti != 0) { if (ProdottiNonRapp != 0) { notes.Add(string.Format(token + "i prodotti non rappresentabili ({0} €)", ProdottiNonRapp.ToString("N"))); token = ", "; } if (PartiteViaggianti != 0) { notes.Add(string.Format(token + "gli importi relativi alle operazioni in corso ({0} €)", PartiteViaggianti.ToString("N"))); token = ", "; } } } notes.Add(string.Format(".")); } } nota1 += "."; token = " "; //int i = 0; nota += notes.FirstOrDefault(); if (notes.Count > 1) { foreach (var s in notes.Skip(1)) { nota += s; //if (i == 0) // nota += s; //if (i > 0 && i < notes.Count - 1) // nota += ", " + s; //if (i == notes.Count - 1) // nota += " e " + s; //i++; } } //else // nota += notes.FirstOrDefault(); if (!nota.Equals("")) //document.getCurrentPage().Elements.Add(new Label(nota, Xtable, Ytable, 512, 30F, Globals.OpenTypeFontVerdana, 7)); doc.setSezFooter(nota, dim - 15); } } }