示例#1
0
        public void Cerca()
        {
            this.Enabled = false;
            var ancheFuturi = cbPrevisti.Checked;

            try
            {
                var mov = new DB.DataWrapper.cMovimenti()
                {
                    DataDa      = cGB.DateTo00000(eDa.Value),
                    DataA       = cGB.DateTo235959(eA.Value),
                    descrizione = cGB.QQ(eDescrizione.Text),
                    MacroArea   = cGB.QQ(eMacroArea.Text)
                };

                Totale = mov.RicercaGraficoSaldo();
                grafico.Series.Clear();

                using (var data_reader = mov.RicercaGrafico(cbPeriodicita.SelectedIndex == 1))
                {
                    var NumCorre        = -1;
                    var serie_nuova     = CreaSerie();
                    var DataPrec        = default(DateTime);
                    var DataAct         = default(DateTime);
                    var DateUsate       = new List <string>();
                    var tipo_intervallo = (cbPeriodicita.SelectedIndex == 1 ? eTipoData.Anno : eTipoData.Mese);

                    try
                    {
                        if (data_reader.HasRows)
                        {
                            while (data_reader.Read())
                            {
                                NumCorre += 1;
                                var LaData = data_reader.GetString(0);
                                DateUsate.Add(LaData);

                                DataPrec = DataAct;
                                DataAct  = StringYYYYMMToDate(LaData);
                                var soldi = cGB.ObjectToMoney(data_reader[1]);
                                var data_point_attuale = CreaDataPoint(LaData, soldi);

                                //inserire un datapoint vuoto se non ho dati nel db per quella data
                                if (DataPrec != DateTime.MinValue)
                                {
                                    if (DateDiff(tipo_intervallo, DataPrec, DataAct) != 1)
                                    {
                                        var differenza_date = DiffDate(tipo_intervallo, DataPrec, DataAct);

                                        for (var u = 0; u < (differenza_date?.Length ?? 0); u++)
                                        {
                                            if (differenza_date[u] != LaData)
                                            {
                                                var data_point_vuoto_no_dati_su_db = new System.Windows.Forms.DataVisualization.Charting.DataPoint()
                                                {
                                                    YValues   = DoubleToDataPointDouble(0D),
                                                    ToolTip   = ToEuroWithDate(0D, differenza_date[u]),
                                                    AxisLabel = differenza_date[u],
                                                    Color     = Color.Green
                                                };

                                                DateUsate.Add(differenza_date[u]);
                                                serie_nuova.Points.Insert(NumCorre, data_point_vuoto_no_dati_su_db);

                                                NumCorre += 1;
                                            }
                                        }
                                    }
                                }

                                serie_nuova.Points.Insert(NumCorre, data_point_attuale);
                            } //fine lettura DB
                        }
                        if (ancheFuturi)
                        {
                            var daAggiungere    = false;
                            var val             = 0d;
                            var LaDataPeriodica = "";
                            var per             = new DB.DataWrapper.cPeriodici();
                            var movimenti       = per.RicercaScadenzeCalcolate(eDa.Value, eA.Value);

                            for (var i = 0; i < movimenti.Count; i++)
                            {
                                daAggiungere    = false;
                                LaDataPeriodica = movimenti[i].GiornoDelMese.ToString(tipo_intervallo == eTipoData.Mese ? "yyyy/MM" : "yyyy");
                                val            += movimenti[i].soldi_d;

                                if (i < movimenti.Count - 1)
                                {
                                    if (LaDataPeriodica != movimenti[i + 1].GiornoDelMese.ToString(tipo_intervallo == eTipoData.Mese ? "yyyy/MM" : "yyyy"))
                                    {
                                        daAggiungere = true;
                                    }
                                }
                                else
                                {
                                    daAggiungere = true;
                                }

                                if (daAggiungere)
                                {
                                    if (DateUsate.Contains(LaDataPeriodica))
                                    {
                                        for (var v = 0; v < serie_nuova.Points.Count; v++)
                                        {
                                            if (serie_nuova.Points[v].AxisLabel.Equals(LaDataPeriodica, StringComparison.OrdinalIgnoreCase))
                                            {
                                                serie_nuova.Points[v] = CreaDataPoint(LaDataPeriodica, serie_nuova.Points[v].YValues[0] + val, Color.Blue, Color.Brown);
                                                break;
                                            }
                                        }
                                    }
                                    else
                                    {
                                        NumCorre++;
                                        var e = CreaDataPoint(LaDataPeriodica, val, Color.Blue, Color.Brown);
                                        serie_nuova.Points.Insert(NumCorre, e);
                                    }

                                    val = 0;
                                }
                            }

                            Totale = 0;
                            for (var v = 0; v < serie_nuova.Points.Count; v++)
                            {
                                Totale += serie_nuova.Points[v].YValues[0];
                            }
                        } //fine movimenti futuri

                        this.gbGrafico.Text = "Grafico dei movimenti - Saldo = " + cGB.DoubleToMoneyStringValuta(Totale);
                        serie_nuova.Name    = "Saldo = " + cGB.DoubleToMoneyStringValuta(Totale);
                        grafico.Series.Add(serie_nuova);
                    }
                    finally
                    {
                        data_reader.Close();
                    }
                } //using data_reader
            }
            finally
            {
                SettaTitolo();
                this.Enabled = true;

                foreach (var area in grafico.ChartAreas)
                {
                    area.RecalculateAxesScale();
                }
            }
        }
示例#2
0
        public void Cerca()
        {
            this.Enabled = false;

            try
            {
                var mov = new DB.DataWrapper.cMovimenti();

                Totale = mov.RicercaGraficoSaldo(false);
                grafico.Series.Clear();

                using (var data_reader = mov.RicercaGraficoSpline())
                {
                    var NumCorre    = -1;
                    var serie_nuova = CreaSerie();
                    var DataPrec    = default(DateTime);
                    var DataAct     = default(DateTime);
                    var DateUsate   = new List <string>();
                    var AnnoSoldi   = new SortedDictionary <string, double>();

                    try
                    {
                        if (data_reader.HasRows)
                        {
                            while (data_reader.Read())
                            {
                                NumCorre += 1;
                                var LaData = data_reader.GetString(0);
                                DateUsate.Add(LaData);

                                DataPrec = DataAct;
                                DataAct  = StringYYYYMMToDate(LaData);
                                var soldi   = cGB.ObjectToMoney(data_reader[1]);
                                var soldiDB = soldi;

                                foreach (var yyyy in AnnoSoldi)
                                {
                                    soldi += yyyy.Value;
                                }

                                AnnoSoldi[LaData] = soldiDB;

                                var data_point_attuale = CreaDataPoint(LaData, soldi);

                                //inserire un datapoint vuoto se non ho dati nel db per quella data
                                if (DataPrec != DateTime.MinValue)
                                {
                                    if (DateDiff(DataPrec, DataAct) != 1)
                                    {
                                        var differenza_date = DiffDate(DataPrec, DataAct);

                                        for (var u = 0; u < (differenza_date?.Length ?? 0); u++)
                                        {
                                            if (differenza_date[u] != LaData)
                                            {
                                                var data_point_vuoto_no_dati_su_db = new System.Windows.Forms.DataVisualization.Charting.DataPoint()
                                                {
                                                    YValues   = DoubleToDataPointDouble(0D),
                                                    ToolTip   = ToEuroWithDate(0D, differenza_date[u]),
                                                    AxisLabel = differenza_date[u],
                                                    Color     = Color.Green
                                                };

                                                DateUsate.Add(differenza_date[u]);
                                                serie_nuova.Points.Insert(NumCorre, data_point_vuoto_no_dati_su_db);

                                                NumCorre += 1;
                                            }
                                        }
                                    }
                                }

                                serie_nuova.Points.Insert(NumCorre, data_point_attuale);
                            } //fine lettura DB
                        }
                        this.gbGrafico.Text = "Grafico dei movimenti - Saldo = " + cGB.DoubleToMoneyStringValuta(Totale);
                        serie_nuova.Name    = "Saldo = " + cGB.DoubleToMoneyStringValuta(Totale);
                        grafico.Series.Add(serie_nuova);
                    }
                    finally
                    {
                        data_reader.Close();
                    }
                } //using data_reader
            }
            finally
            {
                SettaTitolo();
                this.Enabled = true;

                foreach (var area in grafico.ChartAreas)
                {
                    area.RecalculateAxesScale();
                }
            }
        }