using System; using System.Data; using System.Configuration; using System.Drawing; 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 Dundas.Charting.WebControl; using Font = System.Drawing.Font; using PDFGenerator.BusinessLayer; using PDFGenerator; using PDFGenerator.BusinessLayer.DataSection; using PDFGenerator.Presentation.Section.Tables; using PDFGenerator.Presentation.Section.Charts; using PDFGenerator.Presentation.Section; namespace PDFGenerator.Presentation.Section { class S134BIS: ISezione { FormatNum conv = new FormatNum(); #region ISezione Members string Titolo = " "; int Resolution = 300; private string _testointroduttivo = ""; public string TestoIntroduttivo { get { return _testointroduttivo; } set { _testointroduttivo = value; } } public void setTitolo(string label) { Titolo = label; } private void addNota(DocumentPDF doc) { FormatNum con = new FormatNum(); //doc.setSezFooter("(*) Alcuni prodotti non rientrano nel calcolo del rendimento. Il dettaglio del patrimonio non considerato viene fornito nel capitolo ''Patrimonio non rappresentabile''", dim); //doc.StampaNote("(*) Alcuni prodotti non rientrano nel calcolo del rendimento. Il dettaglio del patrimonio non considerato viene fornito nel capitolo ''Patrimonio non rappresentabile''"); doc.setNotaPieDiPagina("(*) Alcuni prodotti non rientrano nel calcolo del rendimento. Il dettaglio del patrimonio non considerato viene fornito nel capitolo ''Patrimonio non rappresentabile''"); } bool _hasselectedpatrimnonrap; public bool HasSelectedPatrimNonRap { set { _hasselectedpatrimnonrap = value; } get { return _hasselectedpatrimnonrap; } } public void writeSezioneGraficLeft(DataThread dataThread) { Tabella tab = new Tabella(); float dim = 0; DocumentPDF document = dataThread.DocumentPDF; DatiTabella datitab = new DatiTabella(); DataSetS134BIS set = (DataSetS134BIS)dataThread.Data.DatiSezione; //string tempTesto = ""; //document.setSezTitolo(dataThread.SezioneReport.Titolo); //tempTesto = dataThread.SezioneReport.TestoIntroduttivo; //tempTesto = tempTesto.Replace("/$AREA$/", dataThread.SezioneReport.AreaProgettoDescrizione); //if (dataThread.Rete.ToUpper() == "S") // tempTesto = tempTesto.Replace("Banca Fideuram", "Sanpaolo Invest"); //document.setChapterHeader(tempTesto, 0, 520, 8); //if (document.checkMargin(datitab.GetRowDim() * 10 + 60)) // document.addPage(); ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage(); #region Tabella "MONITORAGGIO ATTIVATO IL" datitab = new DatiTabella(); datitab.table = set.Tables["AttivazioneMonitoraggio"]; Tabella tabellaMonitoraggioAttivato = new Tabella(); tabellaMonitoraggioAttivato.X = document.getMargineLeft(); tabellaMonitoraggioAttivato.Y = document.getLastPos() + 49; tabellaMonitoraggioAttivato.Datasource = datitab.table; tabellaMonitoraggioAttivato.AltezzaCella = 20; //tabellaMonitoraggioAttivato.Colonne.Add(new Colonna("Descrizione", string.Empty, 325, TipoAllineamento.SINISTRA, true, 8, true)); tabellaMonitoraggioAttivato.Colonne.Add(new Colonna("Descrizione", string.Empty, 225, TipoAllineamento.SINISTRA, true, 7, true)); tabellaMonitoraggioAttivato.Draw(datitab, document); #endregion //dim += (datitab.GetRowDim() * datitab.getNumRow()) + 5; dim += (datitab.GetRowDim() * datitab.getNumRow()) + 15; //********** datitab = new DatiTabella(); datitab.table = set.Tables["Monitoraggio"]; #region Determinazione presenza assenza nota bool hasNota = false; foreach (DataRow rw in datitab.table.Rows) { if (rw["Nota"] != DBNull.Value) if (Convert.ToBoolean(rw["Nota"])) hasNota = true; } #endregion datitab.setY(document.getLastPos() + dim + 10); datitab.setX(document.getMargineLeft()); datitab.setIsLinee(1); datitab.SetRowDim(20); datitab.setCellSpace(0); //datitab.setDimFontCell(7); datitab.setCell(115 /*200*/, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true, 7); datitab.setCell(110/*85*/, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, false, 7); datitab.setCell(0, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false, 7); document.InsertTable(tab.getTabella(datitab)); dim += datitab.GetRowDim() * datitab.getNumRow(); //<Bido> Commented //********** DatiTabella datitabRisorseApportate = new DatiTabella(); datitabRisorseApportate.table = set.Tables["RisorseApportate"]; datitabRisorseApportate.setY(document.getLastPos() + dim + 10); datitabRisorseApportate.setX(document.getMargineLeft() + 35); datitabRisorseApportate.setCellSpace(0); datitabRisorseApportate.setIsLinee(1); datitabRisorseApportate.SetRowDim(20); datitabRisorseApportate.setCell(/*125*/ 80, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, true, 7); datitabRisorseApportate.setCell(/*85*/ 110, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false, 7); //Bido Work DataRow Temp = datitabRisorseApportate.table.NewRow(); DataRow CedoleRow = datitabRisorseApportate.table.Rows[2]; Temp[0] = CedoleRow[0]; Temp[1] = CedoleRow[1]; datitabRisorseApportate.table.Rows.Remove(CedoleRow); //End Bido Work document.InsertTable(tab.getTabella(datitabRisorseApportate)); page.Elements.Add( new ceTe.DynamicPDF.PageElements.Rectangle( document.getMargineLeft() - 4.5F, document.getLastPos() + dim, 40, (datitabRisorseApportate.GetRowDim() * datitabRisorseApportate.getNumRow()) + 2.5F, new RgbColor(232, 236, 237), new RgbColor(232, 236, 237)) ); datitab.CellClear(); dim += (datitabRisorseApportate.GetRowDim() * datitabRisorseApportate.getNumRow()) + 10; //********* Riga fittizia per ottenere stesso effetto grafico DatiTabella datitabLinea = new DatiTabella(); datitabLinea.table = set.Tables["RigaFittizia"]; datitabLinea.setY(document.getLastPos() + dim - 15); datitabLinea.setX(document.getMargineLeft()); datitabLinea.setCellSpace(0); datitabLinea.setIsLinee(2); datitabLinea.setCell(225, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true); datitabLinea.SetRowDim(2); document.InsertTable(tab.getTabella(datitabLinea)); //********** DatiTabella datitabTotali = new DatiTabella(); datitabTotali.table = set.Tables["Totali"]; // Bido Work //datitabTotali.table.Columns.Add("Notes"); // End of Bido Work datitabTotali.setY(document.getLastPos() + dim + 5 + 1); datitabTotali.setX(document.getMargineLeft()); datitabTotali.setCellSpace(0); datitabTotali.setIsLinee(1); datitabTotali.SetRowDim(20); //datitabTotali.setCell(15, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true); datitabTotali.setCell(/*175*/ 115, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true, 7); datitabTotali.setCell(/*110*/ 110, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false, 7); //Bido Work //Cedole e dividendi DataRow CedoledividendiDR = datitabTotali.table.NewRow(); //Copying Row Items field by field, Whole row assigmnet generate error CedoledividendiDR[0] = Temp[0]; CedoledividendiDR[1] = Temp[1]; datitabTotali.table.Rows.InsertAt(CedoledividendiDR, 1); //Guadagno/Perdita Totale DataRow GuadagnoPerditaDR = datitabTotali.table.NewRow(); //Copying Row Items field by field, Whole row assigmnet generate error GuadagnoPerditaDR[0] = "Guadagno/Perdita Totale"; string AB = datitabTotali.table.Rows[0][1].ToString().Replace("€", ""); string C = datitabTotali.table.Rows[1][1].ToString().Replace("€", ""); double DB_GuadagnoPerdita = double.Parse(AB) + double.Parse(C); string STR_GuadagnoPerdita = conv.ConvertNum(DB_GuadagnoPerdita).ToString() + " €"; //string STR_GuadagnoPerdita = DB_GuadagnoPerdita.ToString().Replace(".", ",") + " €"; if (DB_GuadagnoPerdita > 0) STR_GuadagnoPerdita = "+" + STR_GuadagnoPerdita; GuadagnoPerditaDR[1] = STR_GuadagnoPerdita; datitabTotali.table.Rows.InsertAt(GuadagnoPerditaDR, 2); string CumulatoNote = ""; if (datitabTotali.table.Rows.Count >= 5) { CumulatoNote = " (" + datitabTotali.table.Rows[4][1].ToString() + " su base annua)"; datitabTotali.table.Rows[3][1] = datitabTotali.table.Rows[3][1] + "<BR>" + CumulatoNote; datitabTotali.table.Rows.RemoveAt(4); } //End Bido Work document.InsertTable(tab.getTabella(datitabTotali)); dim += datitabTotali.GetRowDim() * datitabTotali.getNumRow(); //Bido Work dim += (datitabTotali.GetRowDim() * datitabTotali.getNumRow()); float font = float.Parse("8,0"); //********* tabella che contiene il dettaglio temporale su data di avvio etc //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft() + 390, 211, 130, datitab.GetRowDim() * datitab.getNumRow() - 5, new RgbColor(232, 236, 237), new RgbColor(232, 236, 237))); datitab.CellClear(); //scrive la data di attivazione del monitoraggio //Bido <For the hidden note under section 84> dim = dim - 95; //End Bido /* Bido Commented */ DatiTabella tabRendimentoAnn = new DatiTabella(); tabRendimentoAnn.table = set.Tables["RendimentoAnnualizzato"]; tabRendimentoAnn.setY(document.getLastPos() + dim); tabRendimentoAnn.setX(document.getMargineLeft()); tabRendimentoAnn.setCellSpace(0); tabRendimentoAnn.setIsLinee(2); //datitabTotali.setCell(15, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true); tabRendimentoAnn.setCell(/*175*/ 200, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true); tabRendimentoAnn.setCell(/*95*/ 125, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false); document.InsertTable(tab.getTabella(tabRendimentoAnn)); dim += tabRendimentoAnn.GetRowDim() * tabRendimentoAnn.getNumRow(); if (hasNota && _hasselectedpatrimnonrap) { addNota(document); } //////aggiorno il puntatore alla posizione da cui si può scrivere ////V Problema sforamento in caso di presenza di rendimento annualizzato //document.setLastPos(dim - 25); //document.setLastPos(dim - 32); //document.setHeaderSpace(50); } public void writeSezione(DataThread dataThread) { DocumentPDF document = dataThread.DocumentPDF; DataSetS134BIS set = (DataSetS134BIS)dataThread.Data.DatiSezione; string tempTesto = ""; document.setSezTitolo(dataThread.SezioneReport.Titolo, true); if ((dataThread.Area.ToLower() != "inv") || ((dataThread.Area.ToLower() == "inv") && (dataThread.SezioneReport.NomeProgetto.ToLower() == "progetto investimento"))) { document.setLastPos(-12); tempTesto = dataThread.SezioneReport.TestoIntroduttivo; tempTesto = tempTesto.Replace("/$AREA$/", dataThread.SezioneReport.AreaProgettoDescrizione); } else { tempTesto = dataThread.SezioneReport.TestoIntroduttivoAlternativo; tempTesto = tempTesto.Replace("/$PROGETTO$/", dataThread.Progetto); } string tempTestoAlt2 = "Il grafico riporta l’andamento nel tempo del controvalore rispetto alle risorse da lei apportate, al netto delle cedole e dividendi incassati, a partire dalla data di attivazione del monitoraggio."; document.setChapterHeader(tempTesto, 0, 520, 8); //document.setTitolo(dataThread.SezioneReport.SottoTitolo, 20); document.writeText(document.getMargineLeft() - 5, document.getLastPos() - 19, tempTestoAlt2, 8, 520, ceTe.DynamicPDF.TextAlign.Justify); //document.setChapterHeader(tempTesto); DatiTabella datitab = new DatiTabella(); //CombinationChart graficoCombinato = new CombinationChart(500, 200, Resolution); writeSezioneGraficLeft(dataThread); CombinationChart graficoCombinato = new CombinationChart(320, 200, Resolution); //setta la datatable che contiene i Dati per disegnare la tabella datitab.table = set.Tables["DatiGrafico"]; DateTime inizio = Convert.ToDateTime(datitab.table.Rows[0]["Data"]); DateTime fine = Convert.ToDateTime(datitab.table.Rows[datitab.table.Rows.Count - 1]["Data"]); ; TimeSpan differenza = fine.Subtract(inizio); //calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato //if (document.checkMargin((float)(graficoCombinato.Height.Value + 50))) if (document.checkMargin((float)(graficoCombinato.Height.Value - 100))) document.addPage(); double totaleGiorni = fine.Subtract(inizio).TotalDays; //document.setTitolo(Titolo); //document.setChapterHeader(_testointroduttivo); // associo il documento pdf corrente al grafico graficoCombinato.DocumentPDF = document; //graficoCombinato.PositionX = (int)document.getMargineLeft(); graficoCombinato.PositionX = (int)document.getMargineLeft() + 225; //V Sforamento del footer nel caso di nota sulla S83 //graficoCombinato.PositionY = (int)(document.getLastPos()) + 9; graficoCombinato.PositionY = (int)(document.getLastPos()+2); graficoCombinato.TabIndex = 10; graficoCombinato.BorderLineWidth = 0; #region Settaggio della ChartArea //imposto la chart area ChartArea ChartArea = new ChartArea(); // Settaggi dell'area del grafico #region Generale ChartArea.Name = "Default"; ChartArea.Area3DStyle.WallWidth = 0; ChartArea.BackColor = System.Drawing.Color.FromArgb(255, 255, 255); ChartArea.BorderColor = System.Drawing.Color.Empty; ChartArea.BorderWidth = 0; #endregion #region AsseX ChartArea.AxisX.LabelsAutoFit = false; ChartArea.AxisX.Margin = false; ChartArea.AxisX.MinorGrid.Enabled = false; ChartArea.AxisX.MajorGrid.Enabled = false; ChartArea.AxisX.MinorTickMark.Enabled = false; //ChartArea.AxisX.MinorTickMark.Size = 2F; ChartArea.AxisX.LabelStyle.Enabled = true; //ChartArea.AxisX.LabelStyle.FontAngle = 90; //ChartArea.AxisX.LabelStyle.ShowEndLabels = false; // mostra le label per il primo e per l'ultimo valore sull'asse X //ChartArea.AxisX.LabelStyle.Font = new Font("verdana", 5); ChartArea.AxisX.LabelStyle.Font = new Font("verdana", 4); ChartArea.AxisX.IntervalType = DateTimeIntervalType.Days; ChartArea.AxisX.LabelStyle.Format = "d"; ChartArea.AxisX.Minimum = inizio.AddDays(-differenza.TotalDays / 200).ToOADate(); ChartArea.AxisX.Maximum = fine.AddDays(differenza.TotalDays / 100).ToOADate(); if (totaleGiorni < 10) ChartArea.AxisX.Interval = 1; else ChartArea.AxisX.Interval = differenza.TotalDays / 6; #endregion #region AsseY ChartArea.AxisY.Margin = false; ChartArea.AxisY.LabelsAutoFit = false; ChartArea.AxisY.MinorGrid.Enabled = false;// ChartArea.AxisY.MajorGrid.LineColor = System.Drawing.Color.Gray; ChartArea.AxisY.MajorGrid.LineStyle = ChartDashStyle.Dash; ChartArea.AxisY.MajorGrid.Enabled = true; ChartArea.AxisY.MinorTickMark.Size = 2F; ChartArea.AxisY.LabelStyle.Format = "C"; //"€ {0}"; //ChartArea.AxisY.LabelStyle.Font = new Font("verdana", 6F); ChartArea.AxisY.LabelStyle.Font = new Font("verdana", 5F); //imposto i valori massimi dell'asse Y a seconda del controvalore massimo + 10% //recupero il controvalore massimo che è il massimo tra il campo "Controvalore" e "RisorseAssociate" decimal valMAxControvalore; //decimal maxControvalore = Convert.ToDecimal(datitab.table.Compute("Max(Controvalore)", string.Empty)) / 1000; //decimal maxRisorseAssociate = Convert.ToDecimal(datitab.table.Compute("Max(RisorseAssociate)", string.Empty)) / 1000; decimal maxControvalore = Convert.ToDecimal(datitab.table.Compute("Max(Controvalore)", string.Empty)); decimal maxRisorseAssociate = Convert.ToDecimal(datitab.table.Compute("Max(RisorseAssociate)", string.Empty)); if (maxControvalore < maxRisorseAssociate) valMAxControvalore = maxRisorseAssociate; else valMAxControvalore = maxControvalore; //recupero il controvalore minimo che è il minimo tra il campo "Controvalore" e "RisorseAssociate" decimal valMinControvalore; //decimal minControvalore = Convert.ToDecimal(datitab.table.Compute("Min(Controvalore)", string.Empty)) / 1000; //decimal minRisorseAssociate = Convert.ToDecimal(datitab.table.Compute("Min(RisorseAssociate)", string.Empty)) / 1000; decimal minControvalore = Convert.ToDecimal(datitab.table.Compute("Min(Controvalore)", string.Empty)); decimal minRisorseAssociate = Convert.ToDecimal(datitab.table.Compute("Min(RisorseAssociate)", string.Empty)); if (minControvalore < minRisorseAssociate) valMinControvalore = minControvalore; else valMinControvalore = minRisorseAssociate; valMAxControvalore = Math.Ceiling(valMAxControvalore); valMinControvalore = Math.Ceiling(valMinControvalore); //valMAxControvalore = valMAxControvalore / 1000; //valMinControvalore = valMinControvalore / 1000; //aggiungo 10% decimal valorepercentuale; valorepercentuale = (valMAxControvalore / 100) * 10; //valorepercentuale = (valMAxControvalore / 100) * 2; //double valMaxAsseY = (double)valMAxControvalore + (double)valorepercentuale; double valMaxAsseY = ((double)valMAxControvalore + (double)valorepercentuale); if (valMaxAsseY <= 0) valMaxAsseY = 10; else valMaxAsseY = LibFunction.ArrotondaAxis(valMaxAsseY, LibFunction.tipoArrotondamento.eccesso); double valMinAsseY; if (((double)valMinControvalore - (double)valorepercentuale) < 0) { valMinAsseY = 0; } else { valMinAsseY = LibFunction.ArrotondaAxis((double)valMinControvalore - (double)valorepercentuale, LibFunction.tipoArrotondamento.difetto); // dato che non può essere negativa viene arrotondata per difetto altrimenti si sarebbe dovuto arrotondare per eccesso //ChartArea.AxisY.Minimum = LibFunction.ArrotondaAxis(valMinAsseY, LibFunction.tipoArrotondamento.eccesso); } int numeroIntervalli = 6; valMaxAsseY = valMaxAsseY / 1000; valMinAsseY = valMinAsseY / 1000; // Imposto l'intervallo sull'asse Y double intervallo = LibFunction.ArrotondaAxis((valMaxAsseY - valMinAsseY) / numeroIntervalli, LibFunction.tipoArrotondamento.eccesso); if (intervallo == 0) { valMaxAsseY = valMaxAsseY * 1.1; intervallo = LibFunction.ArrotondaAxis((valMaxAsseY - valMinAsseY) / numeroIntervalli, LibFunction.tipoArrotondamento.eccesso); } ChartArea.AxisY.Maximum = (valMinAsseY + (intervallo * numeroIntervalli)); ChartArea.AxisY.Minimum = valMinAsseY; ChartArea.AxisY.Interval = intervallo; #endregion #endregion // associazione della ChartArea graficoCombinato.Area = ChartArea; #region Settaggio delle Series #region Settaggio dei dati asse X // imposto i dati // override dei dati... DataTable dtDati = datitab.table.Clone(); dtDati.TableName = "DatiGrafico"; dtDati.Columns.Add("RilevazioneEffettiva", typeof(Int16)); DateTime data = inizio; //double intevalloData= differenza.TotalDays / 10; double intevalloData = 1; DataRow drUltima = null; for (int i = 0; i <= totaleGiorni; i++) { string strData = data.ToShortDateString(); // controllo se la data è presente nel datatable di origine DataRow[] drResult = datitab.table.Select(" data = '" + strData.Replace("'", "''") + "'"); if (drResult.Length > 0) { drUltima = drResult[0]; DataRow newRow = dtDati.NewRow(); string strControvalore1000 = Convert.ToString(Convert.ToDecimal(drResult[0]["Controvalore"]) / 1000); newRow["Controvalore"] = Convert.ToString(Convert.ToDecimal(drResult[0]["Controvalore"]) / 1000); string strRosorse1000 = Convert.ToString(Convert.ToDecimal(drResult[0]["RisorseAssociate"]) / 1000); newRow["RisorseAssociate"] = Convert.ToString(Convert.ToDecimal(drResult[0]["RisorseAssociate"]) / 1000); newRow["Data"] = drResult[0]["Data"]; newRow["Need_Area"] = drResult[0]["Need_Area"]; newRow["NomeProgetto"] = drResult[0]["NomeProgetto"]; newRow["RilevazioneEffettiva"] = 1; dtDati.Rows.Add(newRow); } else { DataRow newRow = dtDati.NewRow(); //newRow["Controvalore"] = drUltima["Controvalore"]; string strControvalore1000 = Convert.ToString(Convert.ToDecimal(drUltima["Controvalore"]) / 1000); newRow["Controvalore"] = Convert.ToString(Convert.ToDecimal(drUltima["Controvalore"]) / 1000); newRow["RisorseAssociate"] = Convert.ToString(Convert.ToDecimal(drUltima["RisorseAssociate"]) / 1000); newRow["Data"] = Convert.ToDateTime(strData); newRow["Need_Area"] = drUltima["Need_Area"]; newRow["NomeProgetto"] = drUltima["NomeProgetto"]; newRow["RilevazioneEffettiva"] = 0; dtDati.Rows.Add(newRow); } data = data.AddDays(intevalloData); } //setFattoreMoltiplicativo(dtDati); // Con la versione di grafico "StepLine" la funzione non dev piu esser richiamata. graficoCombinato.Datasource = dtDati; #endregion ArrayList objSeries = new ArrayList(); // arraylist contenitore Series //aggiungo la serie Risorse Apportate Series sRisorseApportate = new Series("Risorse apportate"); sRisorseApportate.Color = System.Drawing.Color.Aquamarine; sRisorseApportate.Type = SeriesChartType.StackedColumn; sRisorseApportate.SetAttribute("AxisXColumnName", "Data"); sRisorseApportate.SetAttribute("AxisYColumnName", "RisorseAssociate"); sRisorseApportate.ValueMembersY = sRisorseApportate.ValueMembersY; objSeries.Add(sRisorseApportate); //aggiungo la serie ControvaloreMonitorato Series sControvaloreMonitorato = new Series("Controvalore monitorato"); sControvaloreMonitorato.Color = System.Drawing.Color.Blue; sControvaloreMonitorato.Type = SeriesChartType.StepLine; sControvaloreMonitorato.SetAttribute("AxisXColumnName", "Data"); sControvaloreMonitorato.SetAttribute("AxisYColumnName", "Controvalore"); sControvaloreMonitorato.ValueMembersY = sControvaloreMonitorato.ValueMembersY; //V sControvaloreMonitorato.BorderWidth = 3; //sControvaloreMonitorato.MarkerBorderWidth = 100; //sControvaloreMonitorato.MarkerStep = 100; objSeries.Add(sControvaloreMonitorato); #endregion // Aggiungo tutte le serie alla proprietà esposta dal grafico graficoCombinato.ChartSeries = objSeries; //graficoCombinato.ColumnWidth = 1; graficoCombinato.ShowValueInChart = false; //Khorne (added) //disabilito la legenda generata dal grafico, per riscriverla manualmente. graficoCombinato.ChartLegend.Enabled = false; //Khorne end //Commented By Bido 8 March 2011 ////Imposto la Leggenda //graficoCombinato.ChartLegend.LegendStyle = LegendStyle.Row; //graficoCombinato.ChartLegend.Docking = LegendDocking.Bottom; //graficoCombinato.ChartLegend.Alignment = StringAlignment.Center; // Disegno graficoCombinato.Draw(); //New Bido Work 9 March 2011 System.Reflection.Assembly thisExe; thisExe = System.Reflection.Assembly.GetExecutingAssembly(); //System.IO.Stream fileImmagineA = thisExe.GetManifestResourceStream(UtilityManager.getAppSetting("ImmagineA_S83")); //System.IO.Stream fileImmagineB = thisExe.GetManifestResourceStream(UtilityManager.getAppSetting("ImmagineB_S83")); //System.IO.Stream fileImmagineC = thisExe.GetManifestResourceStream(UtilityManager.getAppSetting("ImmagineC_S83")); ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage(); //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Importi x 1.000", document.getMargineLeft() + 450, document.getLastPos() + 6, 512, 12, Globals.OpenTypeFontVerdana, 7)); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Importi x 1.000", document.getMargineLeft() + 450, document.getLastPos(), 512, 12, Globals.OpenTypeFontVerdana, 7)); int deltaY = -3; //Khorne (added) //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft() + 95, document.getLastPos() + 185 + deltaY, 15, 1 // , new ceTe.DynamicPDF.RgbColor(System.Drawing.Color.Blue.R, System.Drawing.Color.Blue.G, System.Drawing.Color.Blue.B) // , new ceTe.DynamicPDF.RgbColor(System.Drawing.Color.Blue.R, System.Drawing.Color.Blue.G, System.Drawing.Color.Blue.B))); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft() + 265, document.getLastPos() + deltaY + 205, 15, 1 , new ceTe.DynamicPDF.RgbColor(System.Drawing.Color.Blue.R, System.Drawing.Color.Blue.G, System.Drawing.Color.Blue.B) , new ceTe.DynamicPDF.RgbColor(System.Drawing.Color.Blue.R, System.Drawing.Color.Blue.G, System.Drawing.Color.Blue.B))); //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Controvalore Monitorato", document.getMargineLeft() + 115, document.getLastPos() + 180 + deltaY, 512, 12, Globals.OpenTypeFontVerdana, 9)); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Controvalore Monitorato", document.getMargineLeft() + 285, document.getLastPos() + deltaY + 200, 512, 12, Globals.OpenTypeFontVerdana, 8)); //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft() + 270, document.getLastPos() + 185 + deltaY, 15, 1 // , new ceTe.DynamicPDF.RgbColor(System.Drawing.Color.Aquamarine.R, System.Drawing.Color.Aquamarine.G, System.Drawing.Color.Aquamarine.B) // , new ceTe.DynamicPDF.RgbColor(System.Drawing.Color.Aquamarine.R, System.Drawing.Color.Aquamarine.G, System.Drawing.Color.Aquamarine.B))); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft() + 420, document.getLastPos() + deltaY + 205, 15, 1 , new ceTe.DynamicPDF.RgbColor(System.Drawing.Color.Aquamarine.R, System.Drawing.Color.Aquamarine.G, System.Drawing.Color.Aquamarine.B) , new ceTe.DynamicPDF.RgbColor(System.Drawing.Color.Aquamarine.R, System.Drawing.Color.Aquamarine.G, System.Drawing.Color.Aquamarine.B))); //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Risorse apportate", document.getMargineLeft() + 290, document.getLastPos() + 180 + deltaY, 512, 12, Globals.OpenTypeFontVerdana, 9)); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Risorse apportate", document.getMargineLeft() + 440, document.getLastPos() + deltaY + 200, 512, 12, Globals.OpenTypeFontVerdana, 8)); ////aggiorno il puntatore alla posizione da cui si può scrivere float heightChart = (float)graficoCombinato.Height.Value; //document.setLastPos(heightChart); document.setLastPos(163); } /// <summary> /// Disegna formato solo testuale. /// Se un'area/progetto è oggetto di monitoraggio ma il suo controvalore monitorato è pari a 0, si stampa solo un testo introduttivo. /// </summary> /// <param name="dataThread"></param> public void writeSezioneFormatoSoloTesto(DataThread dataThread) { DocumentPDF document = dataThread.DocumentPDF; //calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato if (document.checkMargin(30)) document.addPage(); ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage(); document.setChapterHeader(_testointroduttivo); //This flag will be used in S43Bis to check if S83 was not printed as normal section and it's just printed as note, //in this case S43BIS will be printed just after S83 note as S84 & S85 will not be printed. dataThread.UltimaSezioneStampata = "S134bis"; ////aggiorno il puntatore alla posizione da cui si può scrivere //document.setLastPos(30); document.addPage(); } /// <summary> /// Funzione utilizzata per la vecchia versione del grafico che prevedeva una tipo di grafico "Line" anziché "StepLine". /// Con la nuova versione "StepLine" la funzione non serve più. /// Mantengo in cao di cambio specifiche. /// </summary> /// <param name="dataTable"></param> private void setFattoreMoltiplicativo(DataTable dataTable) { DataRow[] righeIndici = dataTable.Select(" RilevazioneEffettiva = 1"); int indiceInizio = 0; int indiceFine = 0; int numIntervalli = 0; decimal ctvInizio = 0; decimal ctvFine = 0; decimal fattoreMoltiplicativo = 0; for (int i = 0; i < righeIndici.Length; i++) { if ((i + 1) < righeIndici.Length) { indiceInizio = (int)dataTable.Rows.IndexOf((DataRow)righeIndici[i]); indiceFine = (int)dataTable.Rows.IndexOf((DataRow)righeIndici[i + 1]); if (indiceInizio + 1 < indiceFine) { ctvInizio = (decimal)dataTable.Rows[indiceInizio]["Controvalore"]; ctvFine = (decimal)dataTable.Rows[indiceFine]["Controvalore"]; numIntervalli = indiceFine - indiceInizio; fattoreMoltiplicativo = (ctvFine - ctvInizio) / numIntervalli; for (int j = indiceInizio + 1; j < indiceFine; j++) { //ctv per ogni riga dataTable.Rows[j]["Controvalore"] = (decimal)dataTable.Rows[j - 1]["Controvalore"] + fattoreMoltiplicativo; } } } } } #endregion } }