Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di Max-Man
    Registrato dal
    Nov 2001
    Messaggi
    636

    [ACCESS] - Gestire le aliquote IVA

    Ho un database personalizzato per la contabilità che ormai uso da anni ed è più che sufficiente alle mie esigenze, ma in questi ultimi tempi con le frequenti modifiche alle aliquote IVA, ho dovuto fare un po' di salti mortali per aggiustare le varie sezioni, perché purtroppo non ho pensato di programmare a priori quest'aspetto e comunque, non so nemmeno come fare.

    Vorrei impostare una funzione in VB che mi permettesse di settare più aliquote e che possa automaticamente cambiare le aliquote in base alla data dell'operazione proveniente dalla tabella o maschera che richiama la funzione stessa.

    Come si può fare?

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Molto, Molto, Molto sommariamente io farei una minitabellina di pochi record
    -- aliquota -------- Tipologia
    -- 22 ------------- Normale
    -- 16 ------------- Ridotta
    -- 30 ------------- beni di lusso
    eccetera ( ho messo dei numeri a caso )

    Quando il contabile emette fattura richiama la tipologia e conseguentemente registra in fattura la aliquota rispettiva.
    ( attento, è importante che in fattura venga registrata la aliquota numerica )

    Poi di volta in volta mantenendo fisse le tipologie aggiorni le aliquote nella minitabellina


    Attento l'arrotondamento dell'iva segue delle regole particolari

    .

  3. #3
    Utente di HTML.it L'avatar di Max-Man
    Registrato dal
    Nov 2001
    Messaggi
    636
    Non ho mai pensato ad un approccio con le tabelle e comunque, il software dovrebbe gestire anche e soprattutto le variazioni nel tempo delle aliquote stesse, nel senso che, ad esempio, una fattura fatta ad inizio 2013 doveva avere un'IVA al 21%, mentre una fatta oggi deve avere un'IVA al 22% e queste percentuali devono rimanere legate alle fatture e al periodo in cui sono state emesse, perciò non deve accadere che se apro una fattura vecchia, questa abbia un'aliquota nuova.

    Un altro motivo per cui non vorrei usare le tabelle, ma bensì il codice, è che vorrei che il programma inserisse automaticamente l'aliquota giusta, senza doverla per forza immettere ogni volta, mentre si compila ogni riga della stessa.

    Spero di essermi spiegato.

  4. #4
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da Max-Man Visualizza il messaggio
    Un altro motivo per cui non vorrei usare le tabelle, ma bensì il codice, è che vorrei che il programma inserisse automaticamente l'aliquota giusta, senza doverla per forza immettere ogni volta, .........
    Spero di essermi spiegato
    Forse sono io che non mi sono spiegato bene, ...... Non è che voglio insistere,
    ma se non usi la tabella cosa farai quando ti cambiano ancora le aliquote ???
    rimetti mano al codice ???

    invece se in una tabellina ci metti i tuoi valori allora il codice sa dove andare a pescarli .......
    intendilo come "Valore di default" per le sole nuove fatture

    Quote Originariamente inviata da Max-Man Visualizza il messaggio
    ..... una fattura fatta ad inizio 2013 doveva avere un'IVA al 21%, mentre una fatta oggi deve avere un'IVA al 22% e queste percentuali devono rimanere legate alle fatture e al periodo in cui sono state emesse, perciò non deve accadere che se apro una fattura vecchia, questa abbia un'aliquota nuova.
    Questo è assolutamente scontato, il codice pesca nella tabelina il valore attuale ( di quando emetti fattura ) e lo trascrive nella tabella delle fatture.
    le variazioni che intervengono dopo non vanno a modificare le fatture gia fatte ma danno il nuovo valore solo a quelle che si faranno.


    Io la vedo cosi
    Ultima modifica di nman; 27-01-2014 a 18:03

  5. #5
    Utente di HTML.it L'avatar di Max-Man
    Registrato dal
    Nov 2001
    Messaggi
    636
    Ora mi risulta complicato spiegarti tutti i motivi per cui vorrei utilizzare il codice e comunque sia chiaro: dovrei rimettere mano al codice, soltanto in caso di modifica aliquote e non dovrei cambiare i dati su ogni tabella, maschera o report che fa riferimento al codice delle aliquote, ma più semplicemente inserire un nuovo controllo data e relative aliquote. In pratica il codice dovrebbe essere una cosa così:

    codice:
    IF DataOperazione < 01/01/2000 then ALI_1 = 4: ALI_2 = 10: ALI_3 = 20
    IF DataOperazione >= 01/01/2000 and < 01/01/2010 then ALI_1 = 5: ALI_2 = 11: ALI_3 = 20
    IF DataOperazione >= 01/01/2010 then ALI_1 = 4: ALI_2 = 12: ALI_3 = 22

    Il problema è che non so come passare i dati dalle tabelle alla funzione e viceversa. Alla fine è proprio questo il mio problema. Adesso mi serve per l'IVA, ma in seguito potrebbe servirmi per altre cose e non so come fare.

  6. #6
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,523
    Dal Regolamento...

    In questo forum NON si parla di alcune funzionalità peculiari di Microsoft Access (macro, maschere, report, etc) che continueranno ad essere trattate nel forum "Windows e software"

    Sposto

  7. #7
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da Max-Man Visualizza il messaggio
    ....... dovrei rimettere mano al codice, soltanto in caso di modifica aliquote ........
    codice:
    IF DataOperazione < 01/01/2000 then ALI_1 = 4: ALI_2 = 10: ALI_3 = 20
    IF DataOperazione >= 01/01/2000 and < 01/01/2010 then ALI_1 = 5: ALI_2 = 11: ALI_3 = 20
    IF DataOperazione >= 01/01/2010 then ALI_1 = 4: ALI_2 = 12: ALI_3 = 22
    va bene, abbandoniamo l'idea della minitabellina, con impegno da parte dello sviluppatore di mettere mano al codice (solo 1 riga da aggiungere ) quando "quelli di Roma" ti modificano le aliquote.

    pero per darti una opinione su quest'altra strada devi darci una idea chiara sulla struttura della tabella delle fatture

    in particolare ci occorre sapere se:
    - Hai la tabella della "TestaFattura" e una seconda tabella dei "DettagliFattura"
    - oppure se hai 1 unica tabella di "Fattura" ( questo implica che puoi fatturare 1 "cosa" per volta )

    -Dove hai il campo "DataFattura"
    - Dove e se hai il campo "AliquotaIva"

    Poi cercheremo di abbozzare delle risposte.


    PS: Dicci che versione di Access usi perche se fosse 2007 (o superiore) hai le TempVars che potrebbero aiutarti molto

    .
    Ultima modifica di nman; 27-01-2014 a 23:29

  8. #8
    Utente di HTML.it L'avatar di Max-Man
    Registrato dal
    Nov 2001
    Messaggi
    636
    Grazie ancora per la pazienza. La versione è la 2013, ma per quanto riguarda la struttura delle tabelle, non posso darti una risposta precisa, perché ne ho molte e naturalmente, vorrei che il codice relativo alle aliquote, fosse utilizzabile anche per le eventuali modifiche future.

    A me basterebbe sapere come fare una cosa di questo tipo:

    Nella maschera "chiamante" scrivo un valore in un campo e automaticamente, (tramite codice), tale valore dovrà essere passato alla funzione o routine che dovrà interpretarlo che, altrettanto automaticamente dovrà spedire alla maschera chiamante un valore di ritorno.

  9. #9
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da Max-Man Visualizza il messaggio
    A me basterebbe sapere come fare una cosa di questo tipo:

    Nella maschera "chiamante" scrivo un valore in un campo e automaticamente, (tramite codice), tale valore dovrà essere passato alla funzione o routine che dovrà interpretarlo che, altrettanto automaticamente dovrà spedire alla maschera chiamante un valore di ritorno.
    Allora dimentichiamoci per il momento dell'Iva e facciamoil classicissimo esempio dell'area del rettangolo
    dove in una tabella metti i valori della base e altezza che vengono prelevati da una funzione personalizzata
    che restituisce a sua volta la superficie a una query o maschera.

    - Crea una tabella di nome "Rettt" ( con 3 t )
    ( io seguo delle regole particolari per la nomenclatura )
    ---- Base --- Numerico
    ---- Alte --- Numerico

    - Crea un nuovo modulo di nome qiello che vuoi con questo codice ( è gia commentato )
    codice:
    Public Function AreaRett(Bbb As Integer, Hhh As Integer) As Integer
    ' questa funzione richiede in ingresso:
    '   Bbb  ( base )    come numero intero
    '   Hhh  ( altezza ) come numero intero
    
    ' Questa funzione restituisce il prodotto di Bbb x Hhh come numero intero
    ' la puoi richiamare in uma query con  AreaRett([Rettt]![Base],[Rettt]![Alte]) AS AreaR
    ' la puoi richiamare in una maschera con   =AreaRett([Base];[Alte])
        
        AreaRett = Bbb * Hhh
    End Function

    - Crea una query di nome "Retqq"
    codice:
    SELECT 
    Rettt.Base, 
    Rettt.Alte, 
    AreaRett([Rettt]![Base],[Rettt]![Alte]) AS AreaR
    FROM 
    Rettt
    ;

    - Crea una maschera associata alla query "Retqq"

    Crea un' altra maschera associata alla tabella "Rettt" e ci metti dentro
    due caselle di testo con queste formule:
    =AreaRett([Base];[Alte])
    =AreaRett(8;3)


    Eventualmente se il tuo problema era questo dopo torniamo all' Iva

    Facci sapere
    Ultima modifica di nman; 28-01-2014 a 23:51

  10. #10
    Utente di HTML.it L'avatar di Max-Man
    Registrato dal
    Nov 2001
    Messaggi
    636
    Grazie per la risposta e la pazienza, ma "smanettando" un po' con ACCESS, ho trovato alcuni esempi che mi sono stati utili e sono riuscito a fare questo:

    Maschera FATTURE:
    • IDFattura
    • DataFattura
    • NumeroFattura


    Sottomaschera RIGHEFATTURE:
    • Codice
    • Descrizione
    • Prezzo
    • Quantità
    • Imponibile
    • TipoAliquota (bassa, media, alta)
    • PercentualeAliquota
    • Totale


    Quando si seleziona il TipoAliquota, si attiva il seguente codice:

    codice:
    Private Sub TipoAliquota_AfterUpdate()
        
        Dim DaOp As Date, A1 As Double, A2 As Double, A3 As Double, AIVA As Double, SceAli As String
        
        DaOp = [Forms]![Fatture]![DataFattura]
        SceAli = TipoAliquota
        
        Call ALI_IVA(DaOp, SceAli, AIVA, A1, A2, A3)
         
        PercentualeAliquota = AIVA
    
    
    End Sub

    ... che chiama la seguente funzione:

    codice:
    Function ALI_IVA(DaOp As Date, SceAli As String, AIVA As Double, A1 As Double, A2 As Double, A3 As Double)
    
    
        
        Select Case DaOp
        
            Case Is < "01/01/2000"
                A1 = 4: A2 = 10: A3 = 18
            
            Case "01/01/2000" To "31/12/2009"
                A1 = 5: A2 = 11: A3 = 20
            
            Case Is > "31/12/2009"
                A1 = 6: A2 = 12: A3 = 22
        
        End Select
        
            
        Select Case SceAli
            
            Case Is = "Bassa"
                AIVA = A1
            Case Is = "Media"
                AIVA = A2
            Case Is = "Alta"
                AIVA = A3
                
         End Select
        
    End Function

    Ovviamente le date e le percentuali sono inventate, ma così funziona alla perfezione. In ogni caso, grazie lo stesso per i tuoi interventi.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.