CalculateurImpotProgressif.java
package com.kerware.simulateurreusine;
/**
* Calculateur générique d'un montant par tranches progressives.
*
* Utilisé pour :
* - le barème de l'impôt sur le revenu (EXG_IMPOT_04)
* - la contribution exceptionnelle sur les hauts revenus (EXG_IMPOT_07)
*
* Le principe : pour un revenu donné, chaque tranche traversée est taxée
* à son propre taux. Le résultat est la somme des contributions de toutes
* les tranches traversées.
*
* Exemple : pour un revenu de 30000€ avec les tranches de l'impôt 2024
* (0% jusqu'à 11294€, 11% jusqu'à 28797€, 30% au-delà) :
* (28797 - 11294) * 11% + (30000 - 28797) * 30% = 1925 + 361 = 2286€
*/
public final class CalculateurImpotProgressif {
/**
* Calcule un montant progressif sur les tranches.
*
* @param montantImposable montant à imposer (ex : revenu fiscal de référence par part)
* @param limites limites des tranches (longueur N+1 pour N tranches,
* première = 0, dernière = Integer.MAX_VALUE)
* @param taux taux de chaque tranche (longueur N)
* @return le montant calculé (non arrondi)
*/
public double calculer(double montantImposable, int[] limites, double[] taux) {
double montant = 0;
for (int i = 0; i < taux.length; i++) {
if (montantImposable >= limites[i] && montantImposable < limites[i + 1]) {
// On est dans la tranche courante : on prend ce qui dépasse la limite basse
montant += (montantImposable - limites[i]) * taux[i];
break;
} else {
// On a déjà dépassé cette tranche : on la compte en plein
montant += (limites[i + 1] - limites[i]) * taux[i];
}
}
return montant;
}
}