Ciao a tutti,
sto sviluppando un database in Microsoft Access 2021 per gestire la fiscalità delle criptovalute, in particolare il calcolo delle plusvalenze secondo il criterio LIFO (Last In, First Out), come richiesto dalla normativa italiana.
Contesto
I dati vengono importati automaticamente da un file CSV generato dall’exchange (Coinbase). Ogni riga del CSV corrisponde a una singola operazione (acquisto, vendita, trasferimento, ecc.).
Esempio di CSV di Coinbase Advanced
ID,Timestamp,Transaction Type,Asset,Quantity Transacted,Price Currency,Price at Transaction,Subtotal,Total (inclusive of fees and/or spread),Fees and/or Spread,Notes
821083da13ed8b7c5,2024-12-20 10:14:48 UTC,Advanced Trade Buy,CHZ,1733.3,EUR,€0.0747,€129.47751,€129.80120,€0.323693775,Bought 1733.3 CHZ for 129.801203775 EUR on CHZ-EUR at 0.0747 EUR/CHZ
396453612801c85393,2024-12-19 19:51:21 UTC,Advanced Trade Buy,ANKR,36,EUR,€0.03355,€1.20780,€1.21082,€0.0030195,Bought 36 ANKR for 1.2108195 EUR on ANKR-EUR at 0.03355 EUR/ANKR
616854b778f8115f14,2024-12-19 19:47:45 UTC,Advanced Trade Buy,ANKR,3496,EUR,€0.03355,€117.29080,€117.58403,€0.293227,Bought 3496 ANKR for 117.584027 EUR on ANKR-EUR at 0.03355 EUR/ANKR
6053c2ccf3c46dde58,2024-12-19 19:47:44 UTC,Advanced Trade Buy,ANKR,327,EUR,€0.03355,€10.97085,€10.99828,€0.027427125,Bought 327 ANKR for 10.998277125 EUR on ANKR-EUR at 0.03355 EUR/ANKR
fc3062525005a98640,2024-12-18 23:04:28 UTC,Advanced Trade Buy,SHIB,5526248,EUR,€0.00002333,€128.92737,€129.44308,€0.51570946336,Bought 5526248 SHIB for 129.44307530336 EUR on SHIB-EUR at 0.00002333 EUR/SHIB
Questi dati vengono caricati in una tabella Transazioni con campi come:
- ID
- DataOra
- TipoOperazione
- Criptovaluta
- Quantità
- PrezzoUnitarioEUR
- TotaleEUR
- FeeEUR
- RilevanzaFiscale (checkbox)
Obiettivo
Per ogni riga di vendita fiscalmente rilevante, il sistema deve:
- Identificare i lotti di acquisto più recenti per la stessa criptovaluta.
- Scalare le quantità a ritroso (LIFO) fino a coprire l’intera vendita.
- Per ogni porzione scalata, calcolare:
- il costo storico
- la plusvalenza/minusvalenza realizzata
- Registrare in una tabella intermedia i collegamenti tra vendita e acquisti utilizzati.
Esempio pratico
Data | Tipo | Cripto | Quantità | Prezzo unit. | Totale € |
---|
01/01/2023 | Acquisto | BTC | 0,5 | €20.000 | €10.000 |
01/06/2023 | Acquisto | BTC | 0,5 | €25.000 | €12.500 |
10/07/2023 | Vendita | BTC | 0,6 | €30.000 | €18.000 |
?? Risultato atteso (calcolo LIFO):
- 0,5 BTC dal lotto del 01/06/2023 (€12.500)
- 0,1 BTC dal lotto del 01/01/2023 (€2.000)
Plusvalenza: €18.000 – €14.500 = €3.500
Domanda tecnica
Qual è secondo voi il modo migliore per implementare questa logica in Access?
- Query annidate con DSum/First?
- Modulo VBA con ciclo While/For?
- Tabelle temporanee?
Se qualcuno ha già affrontato problemi simili in ambito magazzino o gestione titoli, anche con metodi FIFO/LIFO, sarebbe di grande aiuto un esempio di struttura o codice.
Grazie mille a chiunque voglia dare una mano!