Newsgroup: it.comp.appl.access
Titolo: Gestione Tipo Pagamento

qualcuno di voi sa come è possibile gestire in access2000 i tipi di
pagamento di una fattura?
esempio se scelgo dal menù a tendina il pagamento 30GGFM allora dovrà
prendere data fattura e spostarla di 1 mese per la data scadenza
se scelgo 30-60ggf.m. dovrà capire che dovrà inserire 2 scadenze ognuna con
importo pari alla metà del totale della fattura e via decendo ma come posso
algoritmicamente gestire questi pagamenti in modo da mettere l'utente in
condizioni di inserirne di nuovi!
Io per ora ho gestito i vari casi singolarmente e non prevedo la possibilità
di aggiunta di nuovi pagamenti ma è una soluzione temporanea.
Qualcuno di voi a già affrntato il problerma?
Grazie in anticipo! tosto73.

 di aggiunta di nuovi pagamenti ma è una soluzione temporanea.
Per un cliente particolarmente abbonato a forme di pagamento strane e varie
(settore abbigliamento) ho inserito una tabella che contiene i seguenti
campi:
IDPag                     contatore
TipoPagamento    testo
nrate                       numerico
Scadenza1            numerico
...
Scadenza10          numerico
FM1                        Sì/No
...
FM10                      Sì/No
cioè prevede un campo descrittivo del pagamento, quindi il cliente inserisce
nel 2° campo in quante rate paga, inserisce nei campi Scadenza1...Scadenza10
i giorni di dilazione del pagamento x ciascuna rata e vista i corrispondenti
campi FM1 ... FM10 se si tratta di un pagamento a fine mese.
Quando nella maschera di registrazione della fattura sceglie da una casella
combinata il tipo di pagamento con un po' di codice mi vado a prendere i
dati da questa tabella e mi comporto di conseguenza.
Se prevedessi di permettere + di 10 pagamenti, forse spezzerei la tabella in
2 tabelle relazionate.
Si tratta di un'idea, vedi se ti aiuta...
--
Silvio
il sito comune di it.comp.appl.access:
http://www.sitocomune.com

 ha scritto nel messaggio
news:etsu6.4770$dJ6....@news.infostrada.it...

io l'ho affrontato per la gestione delle scadenze nelle fatture
In pratica ho una tabella pagamenti con la descriione del pagamento
1 campo gionri
1 campo Si/No 30
1 campo Si/No 60
1 campo Si/No 90
1 campo Si/No FM (fine mese)
ti scrivo qui sotto il codice VB che ho usato .. e' un po' un casino .. ma
vedi se ti puo' servire.
Private Sub aggiornascadenze()
On Error GoTo errore
    Dim rec As Recordset
    Dim strsql As String
    Dim ultimogiorno, scad As Date
    Dim gg, fm, g30, g60, g90
    'primoGiorno = DateSerial(Year(miaData), Month(miaData), 1)
    strsql = "select * from T_Modalita_di_pagamento where IDModpag=" &
Me.IDModpag
    Set rec = CurrentDb.OpenRecordset(strsql)
    If rec.RecordCount = 0 Then
        MsgBox "Modalita' di pagamento errata o mancante. Impossibile
generare le Scadenze. Si prega di inserire e premere il pulsante di
generazione manuale delle scadenze."
        rec.Close
        Exit Sub
    Else
        gg = rec![Giorni]
        fm = rec![finemese]
        g30 = rec![G_30]
        g60 = rec![G_30_60]
        g90 = rec![G_30_60_90]
        rec.Close
    End If
    strsql = "select * from D_Scadenze where IDFattura=" & Me.IDFattura
    Set rec = CurrentDb.OpenRecordset(strsql)
    If rec.RecordCount = 0 Then
    rec.AddNew
        rec![IDFattura] = Me.IDFattura
        rec![tot_fat] = Forms![Fatture]![Sottomaschera tot_fat]![totdov]
        If gg = "" Or gg = 0 Then
            If g30 = -1 Then
                scad = DateAdd("d", 30, Me.Data_emis)
                If fm = -1 Then
                    scad = DateSerial(Year(scad), Month(scad) + 1, 0)
                End If
                rec![Data_Scad30] = scad
            End If
            If g60 = -1 Then
                scad = DateAdd("d", 60, Me.Data_emis)
                If fm = -1 Then
                    scad = DateSerial(Year(scad), Month(scad) + 1, 0)
                End If
                rec![Data_Scad60] = scad
            End If
            If g90 = -1 Then
                scad = DateAdd("d", 90, Me.Data_emis)
                If fm = -1 Then
                    scad = DateSerial(Year(scad), Month(scad) + 1, 0)
                End If
                rec![Data_Scad60] = scad
            End If
            If g30 = 0 And g60 = 0 And g90 = 0 Then
                scad = Me.Data_emis
                If fm = -1 Then
                    scad = DateSerial(Year(scad), Month(scad) + 1, 0)
                End If
                rec![Data_Scad30] = scad
            End If
        Else
            scad = DateAdd("d", gg, Me.Data_emis)
            If fm = -1 Then
                scad = DateSerial(Year(scad), Month(scad) + 1, 0)
            End If
            rec![Data_Scad30] = scad
        End If
        If g30 = 0 And g60 = 0 And g90 = 0 Then
            rec![Importo30] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov]
        End If
        If g30 = -1 And g60 = -1 And g90 = -1 Then
            rec![Importo30] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 3
            rec![Importo60] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 3
            rec![importo90] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 3
        End If
        If g30 = 0 And g60 = 0 And g90 = -1 Then
            rec![importo90] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov]
        End If
        If g30 = 0 And g60 = -1 And g90 = 0 Then
            rec![Importo60] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov]
        End If
        If g30 = -1 And g60 = 0 And g90 = 0 Then
            rec![Importo30] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov]
        End If
        If g30 = 0 And g60 = -1 And g90 = -1 Then
            rec![importo90] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 2
            rec![Importo60] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 2
        End If
        If g30 = -1 And g60 = -1 And g90 = 0 Then
            rec![Importo30] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 2
            rec![Importo60] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 2
        End If
        If g30 = -1 And g60 = 0 And g90 = -1 Then
            rec![Importo30] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 2
            rec![importo90] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 2
        End If
    rec![fm] = scad
    rec.Update
    Else
    'If rec![Incassata] = -1 Or rec![inc_30] = -1 Or rec![inc_60] = -1 Or
rec![inc_90] = -1 Then
    '    MsgBox "Esistono degli incassi per questa scadenza impossibile
eseguire l'update!"
    '    Exit Sub
    'End If
    rec.Edit
        rec![tot_fat] = Forms![Fatture]![Sottomaschera tot_fat]![totdov]
        If gg = "" Or gg = 0 Then
            If g30 = -1 Then
                scad = DateAdd("d", 30, Me.Data_emis)
                If fm = -1 Then
                    scad = DateSerial(Year(scad), Month(scad) + 1, 0)
                End If
                rec![Data_Scad30] = scad
            End If
            If g60 = -1 Then
                scad = DateAdd("d", 60, Me.Data_emis)
                If fm = -1 Then
                    scad = DateSerial(Year(scad), Month(scad) + 1, 0)
                End If
                rec![Data_Scad60] = scad
            End If
            If g90 = -1 Then
                scad = DateAdd("d", 90, Me.Data_emis)
                If fm = -1 Then
                    scad = DateSerial(Year(scad), Month(scad) + 1, 0)
                End If
                rec![Data_Scad60] = scad
            End If
            If g30 = 0 And g60 = 0 And g90 = 0 Then
                scad = Me.Data_emis
                If fm = -1 Then
                    scad = DateSerial(Year(scad), Month(scad) + 1, 0)
                End If
                rec![Data_Scad30] = scad
            End If
        Else
            scad = DateAdd("d", gg, Me.Data_emis)
            If fm = -1 Then
                scad = DateSerial(Year(scad), Month(scad) + 1, 0)
            End If
            rec![Data_Scad30] = scad
        End If
        If g30 = 0 And g60 = 0 And g90 = 0 Then
            rec![Importo30] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov]
        End If
        If g30 = -1 And g60 = -1 And g90 = -1 Then
            rec![Importo30] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 3
            rec![Importo60] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 3
            rec![importo90] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 3
        End If
        If g30 = 0 And g60 = 0 And g90 = -1 Then
            rec![importo90] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov]
        End If
        If g30 = 0 And g60 = -1 And g90 = 0 Then
            rec![Importo60] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov]
        End If
        If g30 = -1 And g60 = 0 And g90 = 0 Then
            rec![Importo30] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov]
        End If
        If g30 = 0 And g60 = -1 And g90 = -1 Then
            rec![importo90] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 2
            rec![Importo60] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 2
        End If
        If g30 = -1 And g60 = -1 And g90 = 0 Then
            rec![Importo30] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 2
            rec![Importo60] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 2
        End If
        If g30 = -1 And g60 = 0 And g90 = -1 Then
            rec![Importo30] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 2
            rec![importo90] = Forms![Fatture]![Sottomaschera
tot_fat]![totdov] / 2
        End If
    rec![fm] = scad
    rec.Update
    End If
    rec.Close
uscita:
    Exit Sub
errore:
    If Err.Number = 2427 Then
        Resume uscita
    Else
        MsgBox Err.Number & " - " & Err.description
        Resume uscita
    End If
End Sub