2025-04-15 12:10:19 +02:00

738 lines
34 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 landamento 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
}
}