Torna al Thread

Public Class Calcolatore Public Function IsWeekend(ByVal data As Date) As Boolean ' Parametri di input: ' - data: la data da testare ' - giorno: parametro passato per riferimento ' Il parametro 'giorno', passato per riferimento, viene ' modificato per restituire il nome del giorno della settimana, ' se sabato o domenica, oppure l'indicazione "feriale". ' ' Parametri di output: ' - True: il giorno testato è un sabato o una domenica ' - False negli altri casi Select Case Weekday(data) Case FirstDayOfWeek.Saturday IsWeekend = True Case FirstDayOfWeek.Sunday IsWeekend = True Case Else IsWeekend = False End Select End Function Public Function giorni_sett(ByVal data As DateTime, ByVal feriali As Boolean) As Integer Dim calendario As New DateTime() Dim giorni As Integer = 0 calendario = data If (feriali) Then For i = 0 To 6 If IsWeekend(calendario).Equals(False) Then ' se oggi è feriale gli interessi aumentano*/ giorni += 1 End If calendario = calendario.AddDays(1) Next Else For i = 0 To 6 If IsWeekend(calendario).Equals(True) Then '/* se oggi è feriale gli interessi aumentano*/ giorni += 1 End If calendario = calendario.AddDays(1) Next End If Return giorni End Function Public Function giorni_mese(ByVal data As DateTime, ByVal feriali As Boolean) Dim calendario As New DateTime() Dim giorni As Integer = 0 calendario = data If (feriali) Then For i = 0 To 30 If IsWeekend(calendario).Equals(False) Then ' se oggi è feriale gli interessi aumentano*/ giorni += 1 End If calendario = calendario.AddDays(1) Next Else For i = 0 To 30 If IsWeekend(calendario).Equals(True) Then '/* se oggi è feriale gli interessi aumentano*/ giorni += 1 End If calendario = calendario.AddDays(1) Next End If Return giorni End Function Public Function arrotonda(ByVal numero, ByVal nCifreDecimali) Return Math.Round(numero * Math.Pow(10, nCifreDecimali)) / Math.Pow(10, nCifreDecimali) End Function Public Function start(ByVal data As DateTime, ByVal giorni As Integer, ByVal num As Integer, ByVal cas As Double, ByVal tmp_ritiro As Integer, ByVal ritiro As Double, ByVal da_agg As Deposito) Dim interessi As Double = 0 Dim cassa As Double = 0 Dim da_fare As String = "" Dim inizio_ritiro As Integer = 0 Dim table As New DataTable Dim calendario As New DateTime() Dim Lista As New Deposito() Dim iter As New Nodo Dim n_quote As Integer Dim g As Integer Dim num_quote_raggiungere As Integer = 0 calendario = data 'inizializzo la datatable table.Columns.Add("Data", GetType(DateTime)) table.Columns.Add("N° Quote Attive", GetType(Integer)) table.Columns.Add("Interessi Giornalieri", GetType(Double)) table.Columns.Add("Cassa", GetType(Double)) table.Columns.Add("Da fare", GetType(String)) iter = da_agg.start While (Not (IsNothing(iter))) Lista.add(1, iter.maturato) iter = iter.successivo End While n_quote = num Lista.add(n_quote) cassa = cas If (tmp_ritiro.Equals(1)) Then ' se è settimanale*/ g = giorni_sett(calendario, True) * 0.2 + giorni_sett(calendario, False) * 0.1 num_quote_raggiungere = Math.Round((ritiro * 3) / g, 0) Else '/*se è mensile*/ g = giorni_mese(calendario, True) * 0.2 + giorni_mese(calendario, False) * 0.1 num_quote_raggiungere = Math.Round((ritiro * 3) / g, 0) End If For i = 0 To giorni - 1 interessi = 0 calendario = calendario.AddDays(1) If IsWeekend(calendario).Equals(True) Then ' /* se oggi è feriale gli interessi aumentano*/ interessi = Lista.matura_interessi(True) Else interessi = Lista.matura_interessi(False) End If cassa += interessi Dim size As Integer = Lista.Grandezza() If (size < num_quote_raggiungere) Then If (cassa > 10) Then n_quote = Math.Floor(cassa / 10) If (n_quote > (num_quote_raggiungere - size)) Then n_quote = num_quote_raggiungere - size End If cassa = cassa - n_quote * 10 Lista.add(n_quote) da_fare = "Acquista N° quote: " & n_quote size = Lista.Grandezza() End If If (size.Equals(num_quote_raggiungere)) Then inizio_ritiro += 1 If (tmp_ritiro.Equals(1)) Then If ((inizio_ritiro Mod 7).Equals(0)) Then If (cassa >= ritiro) Then da_fare = da_fare + " Ritira: " & ritiro cassa = cassa - ritiro inizio_ritiro = 0 End If End If Else '/*se è mensile*/ If ((inizio_ritiro Mod 30).Equals(0)) Then If (cassa >= ritiro) Then da_fare = da_fare + " Ritira: " & ritiro cassa = cassa - ritiro inizio_ritiro = 0 End If End If End If End If Else inizio_ritiro += 1 If (tmp_ritiro.Equals(1)) Then If ((inizio_ritiro Mod 7).Equals(0)) Then If (cassa >= ritiro) Then da_fare = da_fare + " Ritira: " & ritiro cassa = cassa - ritiro inizio_ritiro = 0 End If End If Else '/*se è mensile*/ If ((inizio_ritiro Mod 30).Equals(0)) Then If (cassa >= ritiro) Then da_fare = da_fare + " Ritira: " & ritiro cassa = cassa - ritiro inizio_ritiro = 0 End If End If End If End If table.Rows.Add(calendario.Date(), size, arrotonda(interessi, 2), arrotonda(cassa, 2), da_fare) da_fare = "" Lista.remove(True) Next Return table End Function Public Function start2(ByVal data As DateTime, ByVal giorni As Integer, ByVal num As Integer, ByVal cas As Double, ByVal tmp_ritiro As Integer, ByVal ritiro As Double, ByVal da_agg As Deposito, ByVal cassa_eff As Double, ByVal userid As String) Dim interessi As Double = 0 Dim cassa As Double = 0 Dim inizio_ritiro As Integer = 0 Dim calendario As New DateTime() Dim Lista As New Deposito() Dim iter As New Nodo Dim n_quote As Integer Dim g As Integer Dim num_quote_raggiungere As Integer = 0 Dim db As New Interazione_db Dim cassa_db As Double Dim acquisto As Integer Dim flag_ritiro As Integer calendario = data iter = da_agg.start While (Not (IsNothing(iter))) Lista.add(1, iter.maturato) iter = iter.successivo End While n_quote = num Lista.add(n_quote) cassa = cas If (tmp_ritiro.Equals(1)) Then ' se è settimanale*/ g = giorni_sett(calendario, True) * 0.2 + giorni_sett(calendario, False) * 0.1 num_quote_raggiungere = Math.Round((ritiro * 3) / g, 0) Else '/*se è mensile*/ g = giorni_mese(calendario, True) * 0.2 + giorni_mese(calendario, False) * 0.1 num_quote_raggiungere = Math.Round((ritiro * 3) / g, 0) End If ' fino a ieri For i = 0 To giorni - 1 calendario = calendario.AddDays(1) flag_ritiro = 0 acquisto = 0 If IsWeekend(calendario).Equals(True) Then ' /* se oggi è feriale gli interessi aumentano*/ interessi = Lista.matura_interessi(True) Else interessi = Lista.matura_interessi(False) End If If (calendario.CompareTo(Today) = 0) Then cassa_db = db.find(calendario.ToShortDateString, userid) If cassa_db.Equals(-1) Then db.Add(calendario.ToShortDateString, cassa_eff, userid) cassa = cassa_eff Else If cassa_eff > cassa_db Then db.update(calendario.ToShortDateString, cassa_eff, userid) cassa = cassa_eff Else cassa = cassa_db End If End If Else cassa_db = db.find(calendario.ToShortDateString, userid) If cassa_db.Equals(-1) Then cassa = 0 Else cassa = cassa_db End If End If Dim size As Integer = Lista.Grandezza() If (size < num_quote_raggiungere) Then If (cassa > 10) Then n_quote = Math.Floor(cassa / 10) If (n_quote > (num_quote_raggiungere - size)) Then n_quote = num_quote_raggiungere - size End If cassa = cassa - n_quote * 10 acquisto = n_quote Lista.add(n_quote) size = Lista.Grandezza() End If If (size.Equals(num_quote_raggiungere)) Then inizio_ritiro += 1 If (tmp_ritiro.Equals(1)) Then If ((inizio_ritiro Mod 7).Equals(0)) Then If (cassa >= ritiro) Then flag_ritiro = 1 cassa = cassa - ritiro inizio_ritiro = 0 End If End If Else '/*se è mensile*/ If ((inizio_ritiro Mod 30).Equals(0)) Then If (cassa >= ritiro) Then flag_ritiro = 1 cassa = cassa - ritiro inizio_ritiro = 0 End If End If End If End If Else inizio_ritiro += 1 If (tmp_ritiro.Equals(1)) Then If ((inizio_ritiro Mod 7).Equals(0)) Then If (cassa >= ritiro) Then flag_ritiro = 1 cassa = cassa - ritiro inizio_ritiro = 0 End If End If Else '/*se è mensile*/ If ((inizio_ritiro Mod 30).Equals(0)) Then If (cassa >= ritiro) Then flag_ritiro = 1 cassa = cassa - ritiro inizio_ritiro = 0 End If End If End If End If Lista.remove(True) Next Dim array(2) As Double array(0) = acquisto array(1) = flag_ritiro db.close() Return array End Function End Class
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5