Buonasera a tutti,
ho creato questo codice per eseguire il calcolo automatico della scadenza di pagamento fatture in funzione della tipologia impostata e caricare poi le scadenze in tabella.
Nella form principale dove inserisco i dati della fattura, ho inserito questa funzione su un evento afterupdate di un controllo. La funzione utilizza la data della fattura a cui vengono aggiunti eventuali giorni oltre i mesi di pagamento, i mesi di pagamento, il fine mese ed infine eventuali ulteriori giorni dopo il fine mese.
Alcune tipologie di pagamento "piu' complesse" possono essere : 165 giorni fine mese, 30/60/90 gg fine mese, 120/150 gg fine mese, ecc.
Quindi ho in alcuni casi piu' date di pagamento: quindi l'importo viene splittato in base alla percentuale delle scadenze di pagamento.
Nella tblCPcalcolopagamento ho i seguenti campi: mesi, giornioltreimesi, finemese, ulteriorigiorni, percentualepagamento
Il codice funziona parzialmente perche non so come inserire un flag sull'ultima tranche di pagamento (che sarebbe il campo rst1.fields(6))
Public Function CalcoloDataPagamento(intTipoPagamento As Integer, pdatafattura As Date, pidfattura As Integer, pimporto As Currency)
On Error GoTo Err_handler
Dim dt As Date
Dim rst As DAO.Recordset
Dim rst1 As DAO.Recordset
Set rst = DBEngine(0)(0).OpenRecordset("SELECT * FROM TblCPcalcolopagamento WHERE NUMtabCPIDtabTPid= " & intTipoPagamento & " ORDER BY IDtabCPid ASC", dbOpenSnapshot, dbReadOnly)
'apro un recordset con i dati per il calcolo del pagamento fattura
Set rst1 = DBEngine(0)(0).OpenRecordset("tblPApagamentofornitori", dbOpenDynaset)
'apro un recordset nuovo nella tabella con le scadenze di pagamento
rst.MoveFirst
Do While Not rst.EOF()
dt = DateAdd("d", rst.Fields(3), pdatafattura) 'Aggiungo i giorni(3)
dt = DateAdd("m", rst.Fields(2), dt) 'Aggiungo i mesi(2)
If rst.Fields(4) Then
dt = DateSerial(Year(dt), Month(dt) + 1, 0) 'Calcolo il fine mese(4)
End If
dt = DateAdd("d", rst.Fields(5), dt) 'Aggiungo gli ulteriori giorni(5)
rst1.AddNew
rst1.Fields(1) = pidfattura
rst1.Fields(2) = dt
rst1.Fields(3) = pimporto * rst.Fields(6)
rst1.Update
rst.MoveNext
Loop
rst.Close
rst1.Close
Set rst = Nothing
Set rst1 = Nothing
Exit_Err_handler:
Exit Function
Err_handler:
MsgBox Err.Number & " " & Err.Description
Resume Exit_Err_handler
End Function
La funzione e' inserita in un modulo generico e richiamata nella form di inserimento fatture, passandogli i parametri necessari.
Qualche consiglio?
grazie in anticipo