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 ceTe.DynamicPDF.Merger; using PDFGenerator.BusinessLayer.DataSection; using PDFGenerator.Presentation.Section.Tables; using PDFGenerator.BusinessLayer; namespace PDFGenerator.Presentation.Section { public class S162 : ISezione { public S162() { // // TODO: Add constructor logic here // } DataSetS162 set; ImportedPage page; string notaGradoCopertura = string.Empty; public void writeSezioneOLD(DataThread dataThread) { DocumentPDF document = dataThread.DocumentPDF; DatiTabella datitab = new DatiTabella(); set = (DataSetS162)dataThread.Data.DatiSezione; datitab.table = set.Tables["Prodotti"]; // Modifica per Disclaimer Verticale string sVerticalText = ""; ceTe.DynamicPDF.PageElements.TextArea testoPaginaVerticale = null; if (datitab.table.Rows.Count > 0) { sVerticalText = "Le eventuali informazioni riguardanti investimenti da lei detenuti presso altri intermediari vengono elaborate secondo le indicazioni da lei "; //if (dataThread.Rete.Equals("F")) //{ // sVerticalText = sVerticalText + "fornite e/ o disponibili sul mercato, per le quali Fideuram non garantisce la completezza e la veridicità. "; // sVerticalText = sVerticalText + "La preghiamo di comunicare a Fideuram ogni successiva variazione a tali informazioni, al fine di consentire a Fideuram la correzione e l’aggiornamento dei dati contenuti "; // sVerticalText = sVerticalText + "nel presente report.Gli investimenti detenuti presso altri intermediari vengono utilizzati da Fideuram con finalità meramente informative e secondo le indicazioni da lei fornite, "; // sVerticalText = sVerticalText + "in modo da offrire una rappresentazione unitaria degli investimenti, senza con ciò formare oggetto di raccomandazioni personalizzate o di rendicontazione ufficiale."; //} //else //{ // sVerticalText = sVerticalText + "fornite e/ o disponibili sul mercato, per le quali Sanpaolo Invest SIM non garantisce la completezza e la veridicità. "; // sVerticalText = sVerticalText + "La preghiamo di comunicare a Sanpaolo Invest SIM ogni successiva variazione a tali informazioni, al fine di consentire a Sanpaolo Invest SIM la correzione e l’aggiornamento dei dati contenuti "; // sVerticalText = sVerticalText + "nel presente report.Gli investimenti detenuti presso altri intermediari vengono utilizzati da Sanpaolo Invest SIM con finalità meramente informative e secondo le indicazioni da lei fornite, "; // sVerticalText = sVerticalText + "in modo da offrire una rappresentazione unitaria degli investimenti, senza con ciò formare oggetto di raccomandazioni personalizzate o di rendicontazione ufficiale."; //} //************************************** Cecco modifiche dicitura IWBANK*********************************** switch (dataThread.Rete) { case "F": { sVerticalText = sVerticalText + "fornite e/ o disponibili sul mercato, per le quali Fideuram non garantisce la completezza e la veridicità. "; sVerticalText = sVerticalText + "La preghiamo di comunicare a Fideuram ogni successiva variazione a tali informazioni, al fine di consentire a Fideuram la correzione e l’aggiornamento dei dati contenuti "; sVerticalText = sVerticalText + "nel presente report.Gli investimenti detenuti presso altri intermediari vengono utilizzati da Fideuram con finalità meramente informative e secondo le indicazioni da lei fornite, "; sVerticalText = sVerticalText + "in modo da offrire una rappresentazione unitaria degli investimenti, senza con ciò formare oggetto di raccomandazioni personalizzate o di rendicontazione ufficiale."; break; } case "S": { sVerticalText = sVerticalText + "fornite e/ o disponibili sul mercato, per le quali Fideuram S.p.A. non garantisce la completezza e la veridicità. "; sVerticalText = sVerticalText + "La preghiamo di comunicare a Fideuram S.p.A. ogni successiva variazione a tali informazioni, al fine di consentire alla Banca la correzione e l’aggiornamento dei dati contenuti "; sVerticalText = sVerticalText + "nel presente report.Gli investimenti detenuti presso altri intermediari vengono utilizzati da Fideuram S.p.A., tramite la ‘‘rete di private banker Sanpaolo Invest’’ con finalità meramente informative e secondo le indicazioni da lei fornite, "; sVerticalText = sVerticalText + "in modo da offrire una rappresentazione unitaria degli investimenti, senza con ciò formare oggetto di raccomandazioni personalizzate o di rendicontazione ufficiale."; break; } case "W": { sVerticalText = sVerticalText + "fornite e/ o disponibili sul mercato, per le quali IW Private Investments non garantisce la completezza e la veridicità. "; sVerticalText = sVerticalText + "La preghiamo di comunicare a IW Private Investments ogni successiva variazione a tali informazioni, al fine di consentire a IW Private Investments la correzione e l’aggiornamento dei dati contenuti "; sVerticalText = sVerticalText + "nel presente report.Gli investimenti detenuti presso altri intermediari vengono utilizzati da IW Private Investments con finalità meramente informative e secondo le indicazioni da lei fornite, "; sVerticalText = sVerticalText + "in modo da offrire una rappresentazione unitaria degli investimenti, senza con ciò formare oggetto di raccomandazioni personalizzate o di rendicontazione ufficiale."; break; } } //********************************************************************************************* testoPaginaVerticale = new ceTe.DynamicPDF.PageElements.TextArea(sVerticalText, document.getMargineLeft() - 30, 750, 620, 100) { Angle = 270, Align = ceTe.DynamicPDF.TextAlign.Justify, FontSize = 5 }; //calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato if (document.checkMargin(datitab.GetRowDim() * 4)) document.addPage(); page = document.getCurrentPage(); page.Elements.Add(testoPaginaVerticale); } else { //calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato if (document.checkMargin(datitab.GetRowDim() * 4)) document.addPage(); } // Fine Modifica per Disclaimer Verticale //calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato if (document.checkMargin(datitab.GetRowDim() * 4)) document.addPage(); //if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") // document.setSezTitoloDiagnosi(dataThread.SezioneReport.Titolo); //else document.setTitolo(dataThread.SezioneReport.Titolo); DataView view = new DataView(datitab.table); view.RowFilter = ("TipoProdotto = 'Fondi'"); if (view.Count > 0) { if (document.checkMargin(datitab.GetRowDim() * 4)) document.addPage(); document.setSezTitoloWithoutNumber("Fondi"); this.writeArea(datitab, document, "Fondi", dataThread); } datitab.table = set.Tables["Prodotti"]; view = new DataView(datitab.table); view.RowFilter = ("TipoProdotto = 'Gestioni patrimoniali'"); if (view.Count > 0) { if (document.checkMargin(datitab.GetRowDim() * 4)) document.addPage(); document.setSezTitoloWithoutNumber("Gestioni patrimoniali"); this.writeArea(datitab, document, "Gestioni patrimoniali", dataThread); } datitab.table = set.Tables["Prodotti"]; view = new DataView(datitab.table); view.RowFilter = ("TipoProdotto = 'Prodotti di Tipo amministrato (escluso C/C)'"); if (view.Count > 0) { if (document.checkMargin(datitab.GetRowDim() * 4)) document.addPage(); document.setSezTitoloWithoutNumber("Titoli"); this.writeArea(datitab, document, "Prodotti di Tipo amministrato (escluso C/C)", dataThread); } datitab.table = set.Tables["Prodotti"]; view = new DataView(datitab.table); view.RowFilter = ("TipoProdotto = 'Assicurativi Unit/Index Linked'"); if (view.Count > 0) { if (document.checkMargin(datitab.GetRowDim() * 4)) document.addPage(); document.setSezTitoloWithoutNumber("Assicurativi Unit/Index Linked"); this.writeArea(datitab, document, "Assicurativi Unit/Index Linked", dataThread); } datitab.table = set.Tables["Prodotti"]; view = new DataView(datitab.table); view.RowFilter = ("TipoProdotto = 'Portafoglio Generico'"); if (view.Count > 0) { if (document.checkMargin(datitab.GetRowDim() * 4)) document.addPage(); document.setSezTitoloWithoutNumber("Portafoglio Generico"); this.writeArea(datitab, document, "Portafoglio Generico", dataThread); } // Aggiunta per Disclaimer Verticale //if (sVerticalText != "") //{ // page = document.getCurrentPage(); // page.Elements.Add(testoPaginaVerticale); //} // Fine Aggiunta } public void writeSezione(DataThread dataThread) { DocumentPDF document = dataThread.DocumentPDF; DatiTabella datitab = new DatiTabella(); set = (DataSetS162)dataThread.Data.DatiSezione; datitab.table = set.Tables["Prodotti"]; // Modifica per Disclaimer Verticale string sVerticalText = ""; bool bPass = false; ceTe.DynamicPDF.PageElements.TextArea testoPaginaVerticale = null; if (datitab.table.Rows.Count > 0) { sVerticalText = "Le eventuali informazioni riguardanti investimenti da lei detenuti presso altri intermediari vengono elaborate secondo le indicazioni da lei "; if (dataThread.Rete.Equals("F")) { sVerticalText = sVerticalText + "fornite e/ o disponibili sul mercato, per le quali Fideuram non garantisce la completezza e la veridicità. "; sVerticalText = sVerticalText + "La preghiamo di comunicare a Fideuram ogni successiva variazione a tali informazioni, al fine di consentire a Fideuram la correzione e l’aggiornamento dei dati contenuti "; sVerticalText = sVerticalText + "nel presente report.Gli investimenti detenuti presso altri intermediari vengono utilizzati da Fideuram con finalità meramente informative e secondo le indicazioni da lei fornite, "; sVerticalText = sVerticalText + "in modo da offrire una rappresentazione unitaria degli investimenti, senza con ciò formare oggetto di raccomandazioni personalizzate o di rendicontazione ufficiale."; } else { sVerticalText = sVerticalText + "fornite e/ o disponibili sul mercato, per le quali Fideuram S.p.A. non garantisce la completezza e la veridicità. "; sVerticalText = sVerticalText + "La preghiamo di comunicare a Fideuram S.p.A. ogni successiva variazione a tali informazioni, al fine di consentire alla Banca la correzione e l’aggiornamento dei dati contenuti "; sVerticalText = sVerticalText + "nel presente report.Gli investimenti detenuti presso altri intermediari vengono utilizzati da Fideuram S.p.A., tramite la ‘‘rete di private banker Sanpaolo Invest’’ con finalità meramente informative e secondo le indicazioni da lei fornite, "; sVerticalText = sVerticalText + "in modo da offrire una rappresentazione unitaria degli investimenti, senza con ciò formare oggetto di raccomandazioni personalizzate o di rendicontazione ufficiale."; } testoPaginaVerticale = new ceTe.DynamicPDF.PageElements.TextArea(sVerticalText, document.getMargineLeft() - 30, 750, 620, 100) { Angle = 270, Align = ceTe.DynamicPDF.TextAlign.Justify, FontSize = 5 }; //calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato //if (document.checkMargin(datitab.GetRowDim() * 4)) // document.addPage(); //if (sVerticalText != "") //{ // page = document.getCurrentPage(); // page.Elements.Add(testoPaginaVerticale); //} } // Fine Modifica per Disclaimer Verticale if (sVerticalText != "") { page = document.getCurrentPage(); page.Elements.Add(testoPaginaVerticale); } //calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato if (document.checkMargin(datitab.GetRowDim() * 4)) { document.addPage(); } //calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato //if (document.checkMargin(datitab.GetRowDim() * 4)) // document.addPage(); //if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") // document.setSezTitoloDiagnosi(dataThread.SezioneReport.Titolo); //else document.setTitolo(dataThread.SezioneReport.Titolo); DataView view = new DataView(datitab.table); view.RowFilter = ("TipoProdotto = 'Fondi'"); if (view.Count > 0) { if (document.checkMargin(datitab.GetRowDim() * 4)) { document.addPage(); if (sVerticalText != "" && !bPass) { page = document.getCurrentPage(); page.Elements.Add(testoPaginaVerticale); bPass = true; } } document.setSezTitoloWithoutNumber("Fondi"); this.writeArea(datitab, document, "Fondi", dataThread); if (sVerticalText != "" && view.Count > 8) { page = document.getCurrentPage(); page.Elements.Add(testoPaginaVerticale); bPass = true; } } datitab.table = set.Tables["Prodotti"]; view = new DataView(datitab.table); view.RowFilter = ("TipoProdotto = 'Gestioni patrimoniali'"); if (view.Count > 0) { if (document.checkMargin(datitab.GetRowDim() * 4)) { document.addPage(); if (sVerticalText != "") { page = document.getCurrentPage(); page.Elements.Add(testoPaginaVerticale); } } document.setSezTitoloWithoutNumber("Gestioni patrimoniali"); this.writeArea(datitab, document, "Gestioni patrimoniali", dataThread); } datitab.table = set.Tables["Prodotti"]; view = new DataView(datitab.table); view.RowFilter = ("TipoProdotto = 'Prodotti di Tipo amministrato (escluso C/C)'"); if (view.Count > 0) { if (document.checkMargin(datitab.GetRowDim() * 4)) { document.addPage(); if (sVerticalText != "") { page = document.getCurrentPage(); page.Elements.Add(testoPaginaVerticale); } } document.setSezTitoloWithoutNumber("Titoli"); this.writeArea(datitab, document, "Prodotti di Tipo amministrato (escluso C/C)", dataThread); if (sVerticalText != "" && view.Count > 8) { page = document.getCurrentPage(); page.Elements.Add(testoPaginaVerticale); page = document.getPageAt(document.CurrentPage - 2); page.Elements.Add(testoPaginaVerticale); } } datitab.table = set.Tables["Prodotti"]; view = new DataView(datitab.table); view.RowFilter = ("TipoProdotto = 'Assicurativi Unit/Index Linked'"); if (view.Count > 0) { if (document.checkMargin(datitab.GetRowDim() * 4)) { document.addPage(); if (sVerticalText != "") { page = document.getCurrentPage(); page.Elements.Add(testoPaginaVerticale); } } document.setSezTitoloWithoutNumber("Assicurativi Unit/Index Linked"); this.writeArea(datitab, document, "Assicurativi Unit/Index Linked", dataThread); } datitab.table = set.Tables["Prodotti"]; view = new DataView(datitab.table); view.RowFilter = ("TipoProdotto = 'Portafoglio Generico'"); if (view.Count > 0) { if (document.checkMargin(datitab.GetRowDim() * 4)) { document.addPage(); if (sVerticalText != "") { page = document.getCurrentPage(); page.Elements.Add(testoPaginaVerticale); } } document.setSezTitoloWithoutNumber("Portafoglio Generico"); this.writeArea(datitab, document, "Portafoglio Generico", dataThread); } } /// /// Verifica se nel datatable passato in input è presente almeno un campo della colonna VarProxato con valore 1. /// Se si aggiungo al documento un oggetto Nota di tipo VarProxato e aggiungo al valore del campo VaR gli *. /// La S48 può avere le note a fondo pagina solo per i var proxati. /// /// fonte dati /// id della tabella a cui andrà associata la nota /// documento private void ImpostaNote(DataTable dataTable, string idtabellaassociata, ref DocumentPDF document) { DataRow[] drVarProxato = dataTable.Select("VarProxato=1"); if (drVarProxato.Length > 0) if (!document.Note.Exists(delegate(Nota t) { return t.TipoNota == Nota.TipologiaNota.VarProxato; })) document.Note.Add(new Nota(Nota.TipologiaNota.VarProxato, idtabellaassociata, Resource.Nota_VarProxato)); //aggiungo al valore del campo VaR gli * foreach (DataRow row in drVarProxato) { if (row["VaR"].ToString().ToLower() != "n.c.") row["VaR"] += document.Note.Find(delegate(Nota nota) { return nota.TipoNota == Nota.TipologiaNota.VarProxato; }).ToString(); } } /// /// Stampa la tabella. /// /// /// /// /// private void writeArea(DatiTabella datitab, DocumentPDF document, string area, DataThread dataThread) { page = document.getCurrentPage(); #region Disegna Tabella //setta la datatable datitab.table = set.Tables["Prodotti"]; DataView view = new DataView(datitab.table); view.RowFilter = ("TipoProdotto = '" + area + "'"); datitab.table = view.ToTable(); //aggiungo una riga in più per fare posto alla scritta continua e uno per il totale Tabella tabellaDati = new Tabella(document.getMargineLeft(), document.getLastPos()); tabellaDati.HeaderFont = 8; tabellaDati.Header = true; tabellaDati.Datasource = datitab.table; tabellaDati.Id = "tabellaS48_" + area; #region Settaggio delle Note di piè di pagina, delle note a piedi della tabella e degli * per i varProxati //Imposto le nota a pie di pagina. ImpostaNote(datitab.table, tabellaDati.Id, ref document); //Nota a piedi della tabella // Imposto la nota a piedi della Tabella notaGradoCopertura = datitab.table.Rows[0]["Copertura"] == DBNull.Value ? string.Empty : datitab.table.Rows[0]["Copertura"].ToString(); if (notaGradoCopertura.Length > 0) { document.Note.Add(new Nota(Nota.TipologiaNota.GradoCopertura, tabellaDati.Id, notaGradoCopertura)); tabellaDati.NotaTabella.Add(document.Note.Find(Nota.TipologiaNota.GradoCopertura, tabellaDati.Id).Testo); } #endregion int dimfont = 7; tabellaDati.AltezzaCella = 30; if (dataThread.NumeroIntermediari > 1) { tabellaDati.Colonne.Add(new Colonna("Intermediario", "Intermediario", 75, TipoAllineamento.SINISTRA, false, dimfont, false)); tabellaDati.Colonne.Add(new Colonna("DataSottoscrizione", "Data sott.", 65, TipoAllineamento.SINISTRA, false, dimfont, false)); tabellaDati.Colonne.Add(new Colonna("Descrizione", "Descrizione", 116, TipoAllineamento.SINISTRA, false, dimfont, false)); tabellaDati.Colonne.Add(new Colonna("Controvalore", "Controvalore (€)", 80, TipoAllineamento.DESTRA, false, dimfont, false)); tabellaDati.Colonne.Add(new Colonna("Versato", "Versato netto (€)", 56, TipoAllineamento.DESTRA, false, dimfont, false)); //tabellaDati.Colonne.Add(new Colonna("MinusPlus", "Utile/
perdita €", 80, TipoAllineamento.DESTRA, false, 7, false)); tabellaDati.Colonne.Add(new Colonna("CreditRisk", "Rischio
Credito", 60, TipoAllineamento.DESTRA, false, dimfont, false)); tabellaDati.Colonne.Add(new Colonna("Var", "Rischio
(VaR %)", 60, TipoAllineamento.DESTRA, false, dimfont, false)); //tabellaDati.Colonne.Add(new Colonna("Var", "Rischio
(VaR %)", 50, TipoAllineamento.DESTRA, false, 7, false)); } else { tabellaDati.Colonne.Add(new Colonna("DataSottoscrizione", "Data sott.", 65, TipoAllineamento.SINISTRA, false, dimfont, false)); tabellaDati.Colonne.Add(new Colonna("Descrizione", "Descrizione", 157, TipoAllineamento.SINISTRA, false, dimfont, false)); tabellaDati.Colonne.Add(new Colonna("Controvalore", "Controvalore (€)", 80, TipoAllineamento.DESTRA, false, dimfont, false)); tabellaDati.Colonne.Add(new Colonna("Versato", "Versato netto (€)", 80, TipoAllineamento.DESTRA, false, dimfont, false)); //tabellaDati.Colonne.Add(new Colonna("MinusPlus", "Utile/perdita €", 80, TipoAllineamento.DESTRA, false, 7, false)); tabellaDati.Colonne.Add(new Colonna("CreditRisk", "Rischio
Credito", 65, TipoAllineamento.DESTRA, false, dimfont, false)); tabellaDati.Colonne.Add(new Colonna("Var", "Rischio
(VaR %)", 65, TipoAllineamento.DESTRA, false, dimfont, false)); //tabellaDati.Colonne.Add(new Colonna("Var", "Rischio
(VaR %)", 50, TipoAllineamento.DESTRA, false, 7, false)); } datitab.setCellSpace(0); tabellaDati.Draw(datitab, document); #endregion #region Scrivi Totale datitab = new DatiTabella(); datitab.table = set.Tables["ProdottiTotale"]; DataView view2 = new DataView(datitab.table); view2.RowFilter = ("TipoProdotto = '" + area + "'"); datitab.table = view2.ToTable(); //Imposto gli asterischi di rimando nel caso in cui sia presente la nota del grado copertura if (notaGradoCopertura.Length > 0) datitab.table.Rows[0]["Var"] = datitab.table.Rows[0]["Var"].ToString() + document.Note.Find(Nota.TipologiaNota.GradoCopertura, tabellaDati.Id).ToString(); Tabella tabellaTotale = new Tabella(document.getMargineLeft(), document.getLastPos() + tabellaDati.AltezzaTabella + 25); tabellaTotale.HeaderFont = 8; tabellaTotale.SaltoPagina = false; tabellaTotale.Header = false; if (dataThread.NumeroIntermediari > 1) { /***************************** Fix Allineamento - Pino **********************************************************/ tabellaTotale.Colonne.Add(new Colonna("Totale", "", 256, TipoAllineamento.SINISTRA, true, dimfont, true)); tabellaTotale.Colonne.Add(new Colonna("Controvalore", "", 80, TipoAllineamento.DESTRA, true, dimfont, true)); tabellaTotale.Colonne.Add(new Colonna("Var", "", 175, TipoAllineamento.DESTRA, true, dimfont, true)); //--- Originale //tabellaTotale.Colonne.Add(new Colonna("Totale", "", 256, TipoAllineamento.SINISTRA, true, dimfont, true)); //tabellaTotale.Colonne.Add(new Colonna("Controvalore", "", 80, TipoAllineamento.DESTRA, true, dimfont, true)); //tabellaTotale.Colonne.Add(new Colonna("Var", "", 186, TipoAllineamento.DESTRA, true, dimfont, true)); } else { tabellaTotale.Colonne.Add(new Colonna("Totale", "", 222, TipoAllineamento.SINISTRA, true, dimfont, true)); tabellaTotale.Colonne.Add(new Colonna("Controvalore", "", 80, TipoAllineamento.DESTRA, true, dimfont, true)); tabellaTotale.Colonne.Add(new Colonna("Var", "", 210, TipoAllineamento.DESTRA, true, dimfont, true)); } tabellaTotale.Draw(datitab, document); document.setLastPos(tabellaTotale.AltezzaTabella + tabellaDati.AltezzaTabella); #endregion } } }