Newsgroup: it.comp.appl.access
Titolo: Calcolo complesso sulle date per fatturazione

Ciao a tutti,
ennesimo problema di calcolo con le date applicato stavolta ai termini
di pagamento che si accordano ai clienti.
1) Ogni cliente ha il suo termine (30 giorni fine mese, 10 giorni data
fattura, ecc.).
2) Ho una tabella fatture in cui c'è un campo SCADENZAFATTURA che ora
aggiorno a mano sulla base delle informazioni del punto 1).
3) Vorrei che l'operazione di cui sopra fosse fattoa in automatico,
ossia che il sistema calcoli la scadenza sulla base della DATAFATTURA
e sulla condizione di pagamento accordata al cliente in questione.
Sapete aiutarmi per favore?
Grazie in anticipo per l'aiuto.
Ciao
Andrea W. GUAGLIO
Milan, ITALY
PP-ASEL
If you want to privately mail me, please replace WantNoSpam with FLYING_WOLF

 If you want to privately mail me, please replace WantNoSpam with
FLYING_WOLF
Ipotizzando che esista (altrimenti createla) una tabella che contiene tutte
le condizioni di pagamento (TabPag) cosě articolata:
IDpag        Codice condizioni di pagamento (chiave primaria)
Descr        Descrizione condizioni di pagamento (Testo)
Giorni        Giorni da sommare alla data fattura (Numerico)
Decor        Decorrenza (es;.1 = data fattura, 2 = Fine mese data fattuta)
e che la tabella Clienti abbia come chiave primaria IDCliente e contenga
anche il campo IDPag che contiene le condizioni di pagamento accordate al
cliente e che infine nella maschera che adoperi per registrare le fatture
(MaskFat)
esistono anche i controlli IDCliente, DataFattura e DataScad, a fronte
dell'evento "Su attivato" del controllo DataScad genera il seguente codice
VBA:
Private Sub DataScad_GotFocus()
Dim GG As Integer, Dec As Integer, Cond As Integer
Cond = DLookup("IDPag", "Clienti", "[IDCliente]=" &
[Forms]![MaskFat]![IDCliente])
GG = DLookup("Giorni", "TabPag", "[IDpag]=" & Cond)
Dec = DLookup("Decor", "TabPag", "[IDpag]=" & Cond)
If Dec = 1 Then
    Me![DataScad] = Me![DataFattura] + GG
Else
    Me![DataScad] = DateSerial(Year(Me![DataFattura]),
Month(Me![DataFattura]) + 1, 0) + GG
End If
End Sub
Roberto

e sulla condizione di pagamento accordata al cliente in questione.
Un solo campo di scadenza fattura e' un po' poco.
Come la metti se il pagamento e' una RIBA a 30/60/90 gg ?
Devi definire una tabella di tipologie di pagamento
gestendo anche le rateizzazioni.
Ti mando un esempio.
Ciao. ElioP.

e sulla condizione di pagamento accordata al cliente in questione.
identifica tutti i modi di pagamento dei clienti e scriviti delle
funzioni per ognuno di essi.  creati anche una tabella con le
condizioni di pagamernto che userai per popolare una combo.
dai uno sguardo alle funzioni dateadd, day, month, year.  se ti
interessa anche escludere i sabati e le domeniche (ad es. se un
termine di pagamento ti capita in quei due giorni spostarlo a lunedi')
vedi anche weekday.
per i due esempi che hai detto:
pagamento a dieci giorni dalla data di fatturazione:
dim DataPagamento as date
DataPagamento=dateadd("d", 10, DataFatturazione)
pagamento a 30 giorni dalla fine del mese (ossia: compro il 10 maggio,
il pagamento si fa a 30 giorni dal 31 maggio, ho capito bene?)
dim FineMese as date
dim DataPagamento as date
FineMese=dateadd("m", 1, DataFatturazione)
FineMese=cvdate(format(FineMese, "yyyy/mm") & "/01"))
DataPagamento=dateadd("d", 30, FineMese)
sono andato a braccio, controlla bene.
DataPagamento=dateadd("d", 10, DataFatturazione)
--
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/