using System; using System.Collections.Generic; using System.Linq; using System.Text; using PDFGenerator.BusinessLayer.DataSection; using PDFGenerator.BusinessLayer; using PDFGenerator.Presentation.Section.Tables; using ceTe.DynamicPDF.PageElements; using ceTe.DynamicPDF.Text; using PDFGenerator.Presentation.Section.Charts; using System.Data; using ceTe.DynamicPDF; namespace PDFGenerator.Presentation.Section { class S331 : ISezione { private string _titolo = string.Empty; private string _testointroduttivo = string.Empty; float dim = 0; /// /// Titolo della sezione /// public string Titolo { get { return _titolo; } set { _titolo = value; } } /// /// Testo introduttivo della Sezione. /// public string TestoIntroduttivo { get { return _testointroduttivo; } set { _testointroduttivo = value; } } public S331() { // // TODO: Add constructor logic here // } public void writeSezione(DataThread dataThread) { //DocumentPDF document = dataThread.DocumentPDF; //document.setSezTitolo(dataThread.SezioneReport.Titolo); //string tempTesto = dataThread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", dataThread.NomeRete); //string tempTestoAlt = dataThread.SezioneReport.TestoIntroduttivoAlternativo.Replace("/$Banca$/", dataThread.NomeRete); ////if (dataThread.Rete.ToUpper() == "S") //// { //// tempTesto = tempTesto.Replace("Banca Fideuram", "Sanpaolo Invest"); //// tempTestoAlt = tempTesto.Replace("Banca Fideuram", "Sanpaolo Invest"); //// } ////setChapterHeader(string label, int x, int width, float font) //document.setChapterHeader(tempTesto, 0, 520, 8); //DataSetS331 set = (DataSetS331)dataThread.Data.DatiSezione; //document.setHeaderSpace(35); //document.writeText(document.getMargineLeft() - 5, document.getLastPos(), tempTestoAlt, 8, 520, ceTe.DynamicPDF.TextAlign.Justify); ////document.setHeaderSpace(60); //document.setLastPos(40); //ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage(); //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("(*) Grado di copertura: ",5,7,7,7)); //document.addPage(); decimal totalePatrimonioCalcolato = 0; decimal totaleControvaloreProtettoCalcolato = 0; //totalePatrimonioCalcolato += Convert.ToDecimal(row["ControvaloreAttuale"]); //totaleControvaloreProtettoCalcolato += Convert.ToDecimal(row["ControvaloreProtetto"]); FormatNum conv = new FormatNum(); DocumentPDF document = dataThread.DocumentPDF; DataSetS331 set = (DataSetS331)dataThread.Data.DatiSezione; document.setSezTitolo(dataThread.SezioneReport.Titolo); document.setChapterHeader(dataThread.SezioneReport.TestoIntroduttivo, 0, 520, 8); float YTable = document.getLastPos(); float XTable = document.getMargineLeft(); DatiTabella datitab = new DatiTabella(); datitab.table = set.Tables["GraficoPiramide"]; datitab.SetRowDim(15); Tabella tabellaDati = new Tabella(XTable, YTable); tabellaDati.DimensioneLinea = 0; tabellaDati.Header = true; tabellaDati.AltezzaCella = 15; tabellaDati.Datasource = datitab.table; tabellaDati.Colonne.Add(new Colonna("areaBisogno", "Area di bisogno", 172, TipoAllineamento.SINISTRA, false, 9, false)); tabellaDati.Colonne.Add(new Colonna("controvalore", "Controvalore (€)", 85, TipoAllineamento.DESTRA,false, 9, false)); tabellaDati.Colonne.Add(new Colonna("controvaloreProtetto", "Controvalore protetto (€)", 90, TipoAllineamento.DESTRA, false, 9, false)); tabellaDati.Colonne.Add(new Colonna("contributoAllaProtezione", "Contributo alla protezione (%)", 165, TipoAllineamento.DESTRA, false, 9, false)); tabellaDati.Draw(datitab, document); bool notaNeeded = false; if (notaNeeded) document.getCurrentPage().Elements.Add(new Label(Resource.Nota_TabellaEmittenti, XTable, YTable + tabellaDati.AltezzaTabella, 500F, 30F, Globals.OpenTypeFontVerdana, 8)); //document.addPage(); IEnumerable queryControvalore = from controvalore in datitab.table.AsEnumerable() select controvalore; foreach (DataRow p in queryControvalore) { Console.WriteLine("controvalore letto: " + Convert.ToDecimal(p.Field("controvalore"))); totalePatrimonioCalcolato += Convert.ToDecimal(p.Field("controvalore")); Console.WriteLine("totalePatrimonioCalcolato: " + totalePatrimonioCalcolato); } IEnumerable queryControvaloreProtetto = from controvaloreProtetto in datitab.table.AsEnumerable() select controvaloreProtetto; foreach (DataRow cp in queryControvaloreProtetto) { Console.WriteLine("controvaloreprotetto letto: " + Convert.ToDecimal(cp.Field("controvaloreProtetto"))); totaleControvaloreProtettoCalcolato += Convert.ToDecimal(cp.Field("controvaloreProtetto")); Console.WriteLine("totaleControvaloreProtettoCalcolato: " + totaleControvaloreProtettoCalcolato); } #region Piramide //disegno la parte della piramide Piramide modello = new Piramide(); modello.writeSezione(document); #endregion #region Grafico Istogramma DatiGrafico dati = new DatiGrafico(); //ripopolo la datitab perché in uscita dalla draw precedente non ha più la quarta colonna che mi serve qui //datitab.table = set.Tables["GraficoPiramide"]; DataView view = new DataView(datitab.table); dati.dataTab = view.ToTable(false, "contributoAllaProtezione"); dati.setHeight(185); //dati.setWidth(123); dati.setWidth(160); dati.ActLabelSeries(); //IstoDoppio isto = new IstoDoppio(); IstoDoppio331 isto = new IstoDoppio331(); //document.InsertGrafico(isto.getGrafico(dati), document.getMargineLeft() + 405, document.getLastPos() + 14); //Istogramma isto = new Istogramma(); document.InsertGrafico(isto.getGrafico(dati),400, document.getLastPos() - 12); //document.InsertGrafico(isto.getGrafico(dati), document.getMargineLeft() + 380, document.getLastPos() + 14); #endregion //intestazione grafico istogramma ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage(); this.headerChart(page, document.getMargineLeft() + 396, document.getLastPos()-6); #region Totale Patrimonio float marginePiramide = 37; float x = document.getMargineLeft(); float y = document.getLastPos() + tabellaDati.AltezzaTabella + marginePiramide + 5; page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("TOTALE PATRIMONIO", x, y, 120, 10, Globals.OpenTypeFontVerdanaB, 9, ceTe.DynamicPDF.TextAlign.Right)); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(totalePatrimonioCalcolato.ToString(), datitab.getX()+135, y, 120, 10, Globals.OpenTypeFontVerdanaB, 9, ceTe.DynamicPDF.TextAlign.Right)); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(totaleControvaloreProtettoCalcolato.ToString(), datitab.getX() + 225, y, 120, 10, Globals.OpenTypeFontVerdanaB, 9, ceTe.DynamicPDF.TextAlign.Right)); //DataSetS331.TotalePatrimonioRow rowDSS331TotalePatrimonio; //rowDSS331TotalePatrimonio = ds331.TotalePatrimonio.NewTotalePatrimonioRow(); //rowDSS331TotalePatrimonio.Descrizione = "TOTALE PATRIMONIO"; //decimal totalePatrimonio = totalePatrimonioCalcolato; //rowDSS331TotalePatrimonio.ControValore = conv.ConvertNum(totalePatrimonio); //decimal totaleControvaloreProtetto = totaleControvaloreProtettoCalcolato; //rowDSS331TotalePatrimonio.ControvaloreProtetto = conv.ConvertNum(totaleControvaloreProtetto); //ds331.TotalePatrimonio.AddTotalePatrimonioRow(rowDSS331TotalePatrimonio); #endregion //aggiungo la nota incondizionatamente dim += (datitab.GetRowDim() * datitab.getNumRow()) + 100; addNota(document);//vedi s134.cs document.setHeaderSpace(0); document.addPage(); } private void addNota(DocumentPDF doc) { FormatNum con = new FormatNum(); //doc.setNotaPièDiPagina("(*) Alcuni prodotti non rientrano nel calcolo del rendimento. Il dettaglio del patrimonio non considerato viene fornito nel capitolo ''Patrimonio non rappresentabile''"); //FC 26062015 Aggionamento nuova Ragione Sociale doc.setSezFooter("(*)Le linee protette ''Fideuram Vita Insieme My Protection 80 Credit Suisse'' e ''Fideuram Vita Insieme My Protection 80 Citigroup'' che lei detiene presso Fideuram, prevedono una protezione del capitale pari all'80% del controvalore massimo raggiunto dalla data di partenza: il ''controvalore protetto'' è stato distribuito sulle aree di bisogno sulla base del peso percentuale del controvalore del singolo fondo, rispetto al controvalore complessivo della linea, disponibile al momento della produzione del report.",dim); //doc.StampaNote("(*) Alcuni prodotti non rientrano nel calcolo del rendimento. Il dettaglio del patrimonio non considerato viene fornito nel capitolo ''Patrimonio non rappresentabile''"); } private void headerChart(ceTe.DynamicPDF.Page page, float x, float y) { //Header grafico a farfalla //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(x + 100, y + 2, 10, 5, 0, new RgbColor(121, 142, 185))); //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(x + 100, y - 9, 10, 5, 0, new RgbColor(239, 65, 53))); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Contributo alla protezione (%)", x-30, y, 140, 10, Globals.OpenTypeFontVerdana, 9, ceTe.DynamicPDF.TextAlign.Right)); //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Piramide Attuale", x - 25, y - 11, 120, 10, Globals.OpenTypeFontVerdana, 9, ceTe.DynamicPDF.TextAlign.Right)); ////// } } }