Buonasera a tutti,
chiedo vostro suggerimento su eventuale diverso approccio per risolvere quanto in oggetto. Devo calcolare in automatico il piano di ammortamento di un bene partendo dalla sua data di acquisto e dalla categoria del bene. Le categorie sono (per il momento) 9 ed ognuna ha una % diversa di ammortamento. Alcuni esempi:
Categoria 1 percentuale 20%: ammortamento in 6 anni con 1° anno al 10%, dal 2° al 5° anno al 20%, ultimo anno al 10%
Categoria 2 percentuale 35%: ammortamento in 4 anni con 1° anno al 17,5%, dal 2° al 3° anno al 35%, ultimo anno al 12,5%
Categoria 3 percentuale 100%: ammortamento in 1 anno
Categoria 4 percentuale 3%: ammortamento in 34 anni con 1° anno al 1,5%, dal 2° al 32° anno al 3%, ultimo anno al 2,5%
…ecc. La logica prevede che, tranne per la categoria 3 (ammortamento in un anno), il primo anno prevede il dimezzamento della percentuale, mentre l'ultimo anno e' a saldo del 100%
Io ho ragionato in questo modo: nella tabella delle categorie ho previsto, fra gli altri, un campo in cui ho inserito il numero di anni previsti dal piano ([Anno]) ed un ulteriore campo con la quota percentuale prevista per l'ultimo anno ([Ultimoanno]). Poi ho creato una tabella di appoggio ("Anni") in cui ho inserito i numeri da 1 a 50 che rappresentano gli anni dell'ammortamento che saranno poi filtrati nella query in base alla categoria prevista (non ci sono, per il momento, periodi di ammortamento che arrivano a 50 anni …).
Ho simulato con la seguente query (temporanea) il piano:
PARAMETERS [categoria richiesta?] Short;
SELECT Anni.Anno, CATEGORIE.CATEGORIA, IIf([Percentuale]=1,[Percentuale],IIf([Anno]=1,[Percentuale]/2,IIf([Anno] Between 1 And [CATEGORIE]![Anni]-1,[Percentuale],[CATEGORIE]![Ultimoanno]))) AS [Percentuale calcolata], DateSerial(2024-1+[Anno],12,31) AS Data
FROM Anni, CATEGORIE
WHERE (((Anni.Anno) Between 1 And [CATEGORIE]![Anni]) AND ((CATEGORIE.Contatore)=[categoria richiesta?]));
Il parametro e' ovviamente temporaneo, mi serviva per testare la query con le varie categorie, come peraltro il valore DateSerial in cui ho temporaneamente inserito il 31/12/2024 sempre per testare il tutto.
Chiedo a Voi se si poteva approcciare il tutto in modo alternativo/piu' semplice…
Grazie in anticipo