Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Calcolare scadenza fattura

2,838 views
Skip to first unread message

Giorgia

unread,
Sep 28, 2009, 5:49:09 AM9/28/09
to
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


sv

unread,
Sep 28, 2009, 6:14:07 AM9/28/09
to
Giorgia ha scritto:

> 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


Giorgia

unread,
Sep 28, 2009, 7:02:23 AM9/28/09
to

--
Giorgia
"sv" <salvi...@accessgroup.it> ha scritto nel messaggio
news:h9q29f$4ev$1...@news.newsland.it...


> Giorgia ha scritto:
>
>> 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?
>
> L'ultimo giorno del mese della tuaData lo trovi cos�:
>
> DateSerial(Year(tuaData),Month(tuaData) +1,1)-1
>
> --
>
> sv
>
> --

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


sv

unread,
Sep 28, 2009, 9:41:51 AM9/28/09
to
Giorgia ha scritto:

[]

Gestisci il campo TipologiaPagamento con un Select Case sull'evento
DopoAggiornamento del controllo DataFattura e TipologiaPagamento della tua
maschera.

Roberto da Parma

unread,
Sep 28, 2009, 10:45:35 AM9/28/09
to

"sv" <salvi...@accessgroup.it> 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

Pablitomf

unread,
Sep 29, 2009, 3:13:10 AM9/29/09
to
-----------
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

Giorgia

unread,
Sep 30, 2009, 3:48:59 AM9/30/09
to


"Pablitomf" <pabl...@hotmail.it> 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


Pablitomf

unread,
Sep 30, 2009, 7:43:44 AM9/30/09
to
> Uao!
> mi sembra di aver capito le tue intenzioni ma soprattutto tu hai capito le
> mie....che non � cosa facile!

mi sto emozionando! :D

> 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?

No... dipende dal contenuto di TERMINI DI PAGAMENTO...

> 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?

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!

Giorgia

unread,
Sep 30, 2009, 9:42:58 AM9/30/09
to

>
> 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!
>
> --
> Ciao
> 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


Pablitomf

unread,
Sep 30, 2009, 11:24:01 AM9/30/09
to
> 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.....

dlookup

Franchi Graziano & Famiglia

unread,
Sep 30, 2009, 5:42:30 PM9/30/09
to
"Giorgia" <gio...@vitaletrasporti.com> 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


Franchi Graziano & Famiglia

unread,
Sep 30, 2009, 5:48:14 PM9/30/09
to
ID Tipo Pagamento Mesi -->Qui Molti e Legato a 1 Con Tabella Tipo Pagamento
Sopra Errata Sotto Corretta

Roberto da Parma

unread,
Oct 1, 2009, 5:48:45 AM10/1/09
to

"Franchi Graziano & Famiglia" <franchi....@alice.it> 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.

Franchi Flavio S.r.l.

unread,
Oct 1, 2009, 8:03:48 AM10/1/09
to
"Roberto da Parma" <arisi....@tin.it> 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


Roberto da Parma

unread,
Oct 1, 2009, 1:19:20 PM10/1/09
to

"Franchi Flavio S.r.l." <franchi....@tiscali.it> 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...

Franchi Graziano & Famiglia

unread,
Oct 1, 2009, 2:34:30 PM10/1/09
to
"Roberto da Parma" <arisi....@tin.it> 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


Roberto da Parma

unread,
Oct 5, 2009, 4:49:38 AM10/5/09
to

"Franchi Graziano & Famiglia" <franchi....@alice.it> 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...

0 new messages