Newsgroup: it.comp.appl.access
Titolo: Calcolare scadenza fattura

Buongiorno a tutto il ng!
Ho trovato diverse soluzioni per calcolare quanto in oggetto ma non la 
differenza tra per es. 30 gg data fattura e 30 gg data fattura fine mese.
Ho
il campo DATA FATTURA in cui inserisco la data del documento
il campo TERMINI DI PAGAMENTO che � popolato in automatico in quanto 
abbinato all'anagrafica del fornitore
il campo SCADENZA FATTURA che vorrei appunto si calcolasse da s�, sulla base 
dei campi precedenti.
Sapete darmi consigli?
-- 
Giorgia 

 Sapete darmi consigli?
L'ultimo giorno del mese della tuaData lo trovi cos�:
DateSerial(Year(tuaData),Month(tuaData) +1,1)-1
--
sv
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 -- 
Ti ringrazio, per� vorrei sapere come fare per impostare la DATA SCADENZA in 
base al valore correntemente visualizzato in TERMINI DI PAGAMENTO.
Cio�, ho la tbl TERMINI DI PAGAMENTO in cui ho indicato le varie scadenze
30gg df
30gg dffm
....
Se ho dunque una fattura di PINCO PALLO, per il quale � stato concordato un 
pagamento di 30 gg df, del 14/09/2009 la scadenza sar� uguale a 14/10/09
ma se ho
una fattura di SUSANNA, per la quale � stato concordato un pg di 30gg dffm, 
del 14/009/2009 allora la scadenza dovr� essere 31/10/2009.
Avendo la tbl TERMINI DI PAGAMENTO in cui sono indicate le varie tipologie 
di pagamento, pensavo di inserire una colonna per indicare i gg di "scarto" 
tra la data di fattura e quella di scadenza in modo da richiamare tale 
valore per il calcolo in DateSerial(Year(tuaData),Month(tuaData) +1,1)-1
TERMINE DI PAGAMENTO                GG SCARTO
30 gg df                                                    30
60 gg df                                                    60
....                                                            ....
ma per il data fattura fine mese cosa posso indicare?
Non so se sono stata chiara....
Giorgia 

Giorgia ha scritto:







[]
Gestisci il campo  TipologiaPagamento con un Select Case sull'evento
DopoAggiornamento del controllo DataFattura e TipologiaPagamento della tua
maschera.


 ha scritto nel messaggio 
news:h9qeev$1tj$1...@news.newsland.it...

Ciao Giorgia,
io gestisco il tutto con una maschera dove inserisco I dati per le scadenze 
dei pagamenti.
Nella fattispecie non ti occorrono molti campi, supponi di registrare il 
pagamento :
Ri.Ba 30 GG DF FM per la mia maschera sar�
1� scadenza giorni  (numerico) , FM (True/False)
2� scadenza giorni  (numerico) , FM (True/False)
ecc...
questo perch� io gestisco anche il 30-60 GG DF FM e le varie combinazioni 
anche 10 mese succ....
Quindi 3 campi text, numerico, true/false
Una volta che ti sei salvato il tipo di pagamento ti basta semplicemente 
fare delle somme utilizzando il comando date serial e dateadd.
Ad es. se la tua fattura ha data 14/09/09 e il pagamento 30 GG DF FM
la scadenza dovr� essere il 30/10/09
Per cui tu non farai altro che trovare il fine mese con la formula che ti � 
stata detta e poi aggiungi I giorni del pagamento con DateAdd e trovi la tua 
scadenza...qualche accortezza magari per il bisestile...
Naturalmente per pagamenti 30-60 dovrai prevedere pi� conteggi.
Io faccio tutto da VBA.
Ciao
-- 
Roberto da Parma 

-----------
Cos� dovrebbe andare... non l'ho provata, l'ho scritta a volo, ma dovrebbe
essere Ok... fammi sapere. ;)
Private Sub TERMINI_PAGAMENTO_AfterUpdate()
'Recupero il numero dei giorni
Dim ParteNumerica As Integer
ParteNumerica = EstraiNumeri(Me.TERMINI_PAGAMENTO) 'ti faccio usare la
routine di Carlo per questo (ho pensato a una stringa tipo 30 DFFM) ma se
hai gi� i giorni in un campo puoi usare quelli senza passare per alcuna
funzione
'verifico se � DF o DFFM
If InStr(Me.TERMINI_PAGAMENTO, "DFFM") > 0 Then 'risente del maiuscolo
minuscolo
'� un DFFM
Me.[scad] = DateAdd("d", -1, "01/" & Format(DateAdd("m", 1, DateAdd("d",
ParteNumerica, [datafatt])), "mm/yy"))
Else
'� una DF
Me.[scad] = DateAdd("d", ParteNumerica, [datafatt])
End If
End Sub
Public Function EstraiNumeri(str As String) As Double
   'Autore: Carlo Costarella   
   Dim numero As Integer, NCompleto As String, NReale As Double
   Dim Pos As Integer, I As Integer, Lung As Integer   
   'verifico la lunghezza della stringa
   Lung = Len(str) 
   If Lung = 0 Then EstraiNumeri = 0: Exit Function
    ' inizio un ciclo da 1 alla lunghezza della stringa
   For I = 1 To Lung
      Pos = I ' il valore della posizione di partenza (il primo carattere
della stringa)
      'Verifico se il carattere � un numero
      If IsNumeric(Mid(str, I, 1)) Then
         '� un numero...allora
         numero = Mid(str, I, 1)
         ' la variabile stringa assume il valore della variabile + numero
         NCompleto = NCompleto & numero
      End If
   Next I 'si sposta al carattere successivo
   'trasformo la stringa in numerico precisione doppia
   NReale = CDbl(NCompleto)
   ' assegno il valore alla funzione
   EstraiNumeri = NReale
End Function
-- 
Ciao
Pablitomf
-----------------------------------
Napoli nel "Q"uore.... sempre e comunque.
-----------------------------------
Chi parla senza modestia trover� difficile rendere buone le proprie parole.
Confucio 


 ha scritto nel messaggio 
news:h9sc26$7l0$1...@news.newsland.it...

Uao!
mi sembra di aver capito le tue intenzioni ma soprattutto tu hai capito le 
mie....che non � cosa facile!
Ho provato, ho corretto per bene tutti i nomi dei miei campi ma c'� qualcosa 
che non fa partire la sub.
Potrebbe essere il fatto che il campo TERMINI DI PAGAMENTO � popolato in 
questo modo e non direttamente?
Private Sub CONTO_FORNITORE_AfterUpdate()
Me.[TERMINI DI PAGAMENTO] = Me.[CONTO FORNITORE].Column(2)
Me.MODALITA__PAGAMENTO = Me.CONTO_FORNITORE.Column(3)
Me.SETTORE = Me.CONTO_FORNITORE.Column(1)
Me.PARTITA_IVA = Me.CONTO_FORNITORE.Column(5)
End Sub
Inoltre non � Abilitato ed � Bloccato.
Ho pensato che per queste condizioni il DopoAggiornamento ne potrebbe 
risentire......
Cavolata?
-- 
Giorgia 

 Cavolata?
abbastanza :D
Giorgina, scherzi a parte, te l'ho premesso nei commenti al codice : 
ho considerato il campo [TERMINI DI PAGAMENTO] come una stringa contenente
valori del tipo : 
30 DFFM
30 DF
ed � su questi valori che ho creato il controllo...
se a te il contenuto � diverso ovviamente devi tararlo sulle tue di
condizioni... che lo prenda da CONTO_FORNITORE_AfterUpdate con Me.[TERMINI
DI PAGAMENTO] = Me.[CONTO FORNITORE].Column(2) o meno, la cosa non fa
differenza... devi capire cosa c'� nel campo, ed analizzare nel codice
questo!


 Pablitomf
B� il mio campo TERMINI DI PAGAMENTO contiene 30 GG DF o 30 GG DFFM.....non 
credo che "GG" sia un problema....giusto?
Se invece non volessi usare la Function "Estrainumeri", perch� la tbl 
TERMINI DI PAGAMENTO ha una colonna chiamata GG in cui ci sono gi� i campi 
numerici abbinati alla descrizione (cio� TERMINI DI PAGAMENTO= 30 GG DF; GG= 
30), come faccio a richiamare il campo della tbl in VBA?
Ovvero
ParteNumerica= 
tbl.TERMINI_DI_PAGAMENTO.GG
non credo si possa scrivere.....
-- 
Giorgia 

 non credo si possa scrivere.....
dlookup


 ha scritto nel messaggio 
news:h9vn8n$fvq$1...@aioe.org...

Io ho fatto cos�:
Ho creato 3 TABELLE
1� Tabella --> Tipo Pagamento
ID Tipo Pagamento (Byte)
Descrizione Pagamento
Descrizione Pagamento Inglese
Esempio:
0=-------Da Definire-------
5=Come Accordi
10=Ricevuta Bancaria
20=Bonifico Bancario
30=Rimessa Diretta
eccetera
2�Tabella --> Tipo Pagamento Mesi
ID Tipo Pagamento Mesi (Byte)
Pagamento Mesi
Pagamento Mesi Inglese
Esempio:
0=----------Da Definire---------
10=VUOTO
20=Escl. Agosto
30=Escl. Dicem.
40=Escl. Ago+Dic.
50=Al  5 M.S.
60=Al 10 M.S.
70=Al 15 M.S.
Eccetera
3�Tabella -->Pagamento
ID Pagamento (Byte)
Pagamento (Testo 22 Caratteri)
Pagamento Inglese
ID Tipo Pagamento -->Qui Molti e Legato a 1 Con Tabella Tipo Pagamento
ID Tipo Pagamento Mesi -->Qui Molti e Legato a 1 Con Tabella Tipo Pagamento 
Mesi
Periodi (Byte)
Inizio Scadenza (Byte)
Fine Mese (Si/No)
Giorni In Piu (Byte)
Esempio Quando Inserisci Un Nuovo Cliente il Pagamento essendo a zero 
avrai::
----------Da Definire---------
E inserisci da devinire anche tabella 1 e 2
Ora ci Inventiamo un pagamento: Riba 60/90 Fine Mese Al 15 Mese Successivo:
ID Pagamento=5 (Nuovo Inserimento)
Pagamento=60/90 gg. f.m. (Ci Scriviamo un per testo)
ID Tipo Pagamento =10 (Selezioni Dalla Combo)
ID Tipo Pagamento Mesi=70 (Selezioni Dalla Combo)
Periodi=2 (Questo Dato Lo Devi Inserire)
Inizio Scadenza=60 (Questo Dato Lo Devi Inserire)
Fine Mese =Si (Questo Dato Lo Devi Inserire)
Giorni In Piu=15 (Questo Dato Lo Devi Inserire)
Alla fine vai a leggere i dati e puoi calcolare la scadenza fattura.
Ricordati:
  If InizioScadenza Mod 30 Then
    DataScadenza = [Data Fattura] + InizioScadenza
  Else
    DataScadenza = DateAdd("m", InizioScadenza / 30, [Data Fattura])
  End If
If FineMese Then DataScadenza = DateAdd("m", 1, DataScadenza) - 
DatePart("d", DateAdd("m", 1, DataScadenza))
Saluti e Buon Lavoro
Graziano 

ID Tipo Pagamento Mesi -->Qui Molti e Legato a 1 Con Tabella Tipo Pagamento
Sopra Errata Sotto Corretta


 ha scritto nel 
messaggio news:4ac3d21e$0$1097$4faf...@reader4.news.tin.it...

Scusa Graziano ma perch� complicarti la vita con due tabelle?
Ne basta una con 4 campi:
1 - ID
2 - numero di giorni
3 - descrizione
4 - Si/No (se fine mese o no)
Con una tabella di questo tipo fai tutto...anche i calcoli pi� complicati.


 ha scritto nel messaggio 
news:ha1ttu$ddv$1...@tdi.cu.mi.it...

Ti manca DeltaGiorniInPi� -->Per spostare da 5 a 15 gg. eccetera
Come fai a visualizzare tutte le scadenze solo con RIBA?
Oppute tutti i BONIFICI
Eccetera
Ho il grafico di quante Riba, rimesse diretta eccetera ho da prendere.
Ciao
Graziano 

 ha scritto nel 
messaggio news:4ac49aa0$0$6839$5fc...@news.tiscali.it...

Non capisco...in che senso il deltagiorniinpi�?
Se hai una fattura con una certa scadenza quella � e quella rimane...tutt'al 
pi� farai un filtro per la scadenza e ti tirer� fuori tutte le scadenze 
Ri.Ba che vuoi...
Il metodo lo uso per le presentazioni Ri.Ba in banca e al momento funzia 
benissimo...
Non capisco il tuo problema...vuoi visualizzare solo le ri.Ba? Fai un filtro 
sulla descrizione oppure sugli ID che ti interessano.... la scadenza per� 
sempre quella �.....
Fammi un esempio in tal caso dove non potrei tirar fuori il risultato che 
cerchi...cos� ti rispondo...


 ha scritto nel messaggio 
news:ha2oao$86o$1...@tdi.cu.mi.it...


Esempio1:
Data Fattura 31/01/2009
Pagamento Riba 30 Giorni Fine Mese
Data Scadenza 28/02/2009
Esempio2:
Data Fattura 31/01/2009
Pagamento Riba 30/60/90 Giorni Fine Mese Al 20 Mese Successivo
1� Scadenza 20/03/2009
2� Scadenza 20/04/2009
3� Scadenza 20/05/2009
Nell'esempio 1 cosa imposti per numero giorni?
Nell'esempio 2 cosa imposti per numero giorni?
Ciao e Grazie
Graziano

 ha scritto nel 
messaggio news:4ac4f635$0$817$4faf...@reader5.news.tin.it...

Imposto sempre 30 giorni ma semplicemente ho previsto il caso di febbraio, 
del bisestile e dei mesi che hanno 31 giorni...(un paio di righe di codice) 
e la scadenza rimane sempre a fine mese, naturalmente se � impostato il fine 
mese.
Nel secondo caso la fattura � legata non a 1 ma a 3 scadenze (se ti ricordi, 
la mia tabella scadenze ha pi� record...quindi per assurdo potrebbe gestire 
n scadenze) ma in questo caso c'� una tabella collegata alla fattura che 
segna le scadenze, di conseguenza comparir� in tutti i tre mesi con le quote 
in scadenza.
in sostanza ho:
- una tabella pagamenti dove inserisco tutti I tipi di pagamento.
- una tabella fatture
- una tabella dettagli fatture
- una tabella scadenze fatture
p.s. controlla il tuo pc perch� mi � arrivato dello spam dalla tua casella 
di posta...sarebbe meglio non tenessi salvate le email del newsgroup...
