Newsgroup: it.comp.lang.visual-basic
Titolo: Calcolo data di scadenza

Ho cercato e ricercato su:
- NG
- Sito Comune
- Google
ma non ho trovato molto..
Ho la necessità di calcolare la data scadenza partendo dalla data di un
documento con tutte le considerazioni solite:
posso avere scadenza a 30, 60, 70, ... devo poter saltare la scadenza se
cade in un mese x...
Ho scritto questo codice:
Function GetDataScadenza(Data_Fattura As Date, Giorni As Integer, MeseSalto1
As Integer, MeseSalto2 As Integer, GFisso1 As Integer, GFisso2 As Integer)
As Date
    Dim dtDataScadenza As Date
'***************************************************************************
*************************
    Dim mesi As Integer
    Dim GiorniInPiu As Integer
    GiorniInPiu = Giorni Mod 30
    mesi = (Giorni - GiorniInPiu) / 30 'Orrore com'è la funzione?
    'Aggiungo n mesi
    dtDataScadenza = DateAdd("m", mesi, Data_Fattura)
    'queste due righe mi portano al fine mese della data dtDataScadenza di
cui sopra
    dtDataScadenza = DateAdd("m", 1, dtDataScadenza)
    dtDataScadenza = DateSerial(Year(dtDataScadenza), Month(dtDataScadenza),
1) - 1
    'Arrivato qui ho la data corretta al mese
    'ci sono i casi dei 70, 100...
    'sono da trattare come 60+10, 90+10, ...
    If Not IsNull(GiorniInPiu) Then
        dtDataScadenza = DateAdd("d", GiorniInPiu, dtDataScadenza)
    End If
'***************************************************************************
*************************
    If Month(dtDataScadenza) = MeseSalto1 Then
        dtDataScadenza = DateAdd("d", GFisso1, dtDataScadenza)
    End If
    If Month(dtDataScadenza) = MeseSalto2 Then
        dtDataScadenza = DateAdd("d", GFisso2, dtDataScadenza)
    End If
    GetDataScadenza = dtDataScadenza
End Function
secondo voi è accettabile? Ci sono migliorie? Pare funzionare bene però
magari...
-- 
Alex {per email metti '[IOPOSSO]' nell'oggetto}
"In C i bug vanno scritti. In C++ si possono ereditare. (Marco Bernardini)"

 secondo voi č accettabile?
secondo me no.
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 magari...
Se funziona, tienila, comunque un errore sicuro c'è :)
dichiari:
Dim GiorniInPiu As Integer
poi testi:
If Not IsNull(GiorniInPiu) Then
Un integer non può mai essere null
termoPilucco
-- 


 Un integer non può mai essere null
Giusto, prima era figlio di una funzione che mi dava null :-).
Grazie già cambiato!


 secondo me no.
Cosa cambieresti oltre ai punti sopra?


 Queste due cosa fanno? Vabbeh posso provarle..
Fatto tutto!
Grazie


 Cosa cambieresti oltre ai punti sopra?
per darti una risposta "intelligente" dovrei conoscere meglio la tua
logica di business, come dicono ultimamente quelli veramente scafati, ma
cosě a pelle mi piacciono molto poco quell'elenco di parametri: se i mesi
da escludere sono piů di due?


 i mesi da escludere sono più di due?
Nei programmi di contabilità che uso io ce ne sono due e possono bastare per
tutti i clienti che
li usano (sono 3/4 mila in italia che io sappia).
Il mio cliente in realtà ne usa solo uno ma già che c'ero ne ho messi due...
se un domani ne avrà tre personalizaerò la cosa :-)
