Calcolo automatico scadenze pagamento fatture

di il
0 risposte

Calcolo automatico scadenze pagamento fatture

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

Devi accedere o registrarti per scrivere nel forum
0 risposte