openfisca-france icon indicating copy to clipboard operation
openfisca-france copied to clipboard

Corrige calcul de la CEHR

Open PiGo86 opened this issue 4 years ago • 12 comments

Cette demande de fusion modifie le calcul de la contribution exceptionnelle sur les hauts revenus (CEHR) pour prendre en compte les règles d"arrondi fiscal (cf. #1430) et gérer le calcul du lissage.

S'agissant du lissage, il tient compte des revenus fiscaux de référence (RFR) des années n-1 et n-2. Or, à défaut d'informations saisies sur ces années, les RFR correspondants sont égaux à 0, pouvant conduire à un calcul du lissage non souhaité. C'est pourquoi une variable calcul_lissage_cehr est créée pour activer expressément le calcul du lissage ; par défaut, cette variable vaut False, et les règles du lissage ne sont donc pas appliquées. Si cette variable est passée à True, le calcul du lissage est effectué sous réserve que ses trois conditions d'application soient réunies.

Parmi les conditions d'application du lissage figure celle selon laquelle le foyer fiscal doit avoir été soumis pour plus de la moitié de ses revenus mondiaux à l'impôt sur le revenu en France au cours des années n-1 et n-2 ; si ce n'est pas le cas, le contribuable doit cocher la case 8TD de sa déclaration de revenus. La formule de la CEHR fait donc référence à la variable f8td. Cette dernière existait déjà, mais avait une date de fin de validité au 31/12/2014. La présente modification supprime cette date de fin de validité.

Enfin, il est à noter que cette modification ne tient pas compte à ce stade, pour le calcul du lissage, des règles applicables en cas de modification de composition du foyer fiscal entre les années n-2 et n. Je n'ai pas trouvé de méthode qui permette dans openfisca de vérifier une modification de la composition du foyer fiscal dans le temps.

À votre disposition pour discuter des modifications proposées :wink:

  • Évolution du système socio-fiscal.
  • Périodes concernées : toutes.
  • Zones impactées :
    • openfisca_france/model/prelevements_obligatoires/impot_revenu/__init__.py ;
    • openfisca_france/model/prelevements_obligatoires/impot_revenu/ir.py ;
    • openfisca_france/parameters/impot_revenu/cehr.yaml.
  • Détails :
    • Crée une fonction d'arrondi fiscal (arrondi à l'euro le plus proche, la fraction égale à 0,5 étant arrondi à l'unité supérieure) ;
    • Corrige la formule de calcul de la CEHR pour utiliser l'arrondi fiscal et gérer le calcul du lissage ;
    • Ajoute une variable de type booléen calcul_lissage_cehr à l'entité FoyerFiscal pour activer expressément le calcul du lissage (vaut False par défaut) ;
    • Corrige la variable f8td pour supprimer la date de fin de validité ;
    • Corrige le barème de la CEHR pour distinguer les contribuables célibataires et assimilés d'une part, et les contribuables mariés ou pacsés d'autre part.

Ces changements :

  • Ajoutent une fonctionnalité (par exemple ajout d'une variable) ;
  • Corrigent ou améliorent un calcul déjà existant.

Quelques conseils à prendre en compte :

PiGo86 avatar Nov 21 '20 08:11 PiGo86

Merci @PiGo86 pour cette contribution ! J'ajoute une demande de revues de la communauté.

sandcha avatar Nov 27 '20 19:11 sandcha

Je reste à votre disposition pour échanger et le cas échéant apporter des modifications sur cette proposition de fusion.

PiGo86 avatar Jan 07 '21 20:01 PiGo86

@PiGo86 : merci pour cette PR ! J'ai fait une revue. Mais commentaires sont dans le code.

bfabre01 avatar Jan 08 '21 17:01 bfabre01

Merci à vous @bfabre01 pour le temps consacré à cette revue !

J'ai pris bonne note des différents commentaires, et vous ai fait part de mes observations. Veuillez m'excuser pour la longueur de certains commentaires, mais ça me semblait utile :wink:

PiGo86 avatar Jan 09 '21 11:01 PiGo86

Bonjour @bfabre01,

J'ai passé les modifications comme discuté.

Par contre, j'ai dû faire une erreur en voulant mettre à jour ma branche depuis master, ma demande de fusion reprenant maintenant les commits qui ont été passés récemment sur master... Dis-moi si je dois faire quelque chose pour corriger ça.

PiGo86 avatar Jan 21 '21 23:01 PiGo86

Bonjour @PiGo86 , et désolé pour le délai de ma réponse. En fait, pour merger, il faut qu'un relecteur approuve ta PR. Puis, il faut que tes modifications passent l'ensemble des tests, ce qui n'est pas le cas. Il se trouve que ta branche est dans ton environnement, je ne l'ai pas dans mon arbre du repo openfisca-france. Et je ne sais pas pourquoi, je n'arrive pas à distinguer via des commits additionnels ce que tu as modifié depuis ma revue. De mémoire, il restait deux choses : (1) supprimer la dummy lissage (2) ajouter des tests. Mais après réflexion, et de manière plus générale, je me demande si on veut vraiment mettre ces modifs. De ce que je comprends, tu ne comptes pas utiliser ces histoires de lissage pour tes simulations, ne disposant pas des années N-1 et N-2. Pour cela, il faut en effet le panel pote, avec accès CASD. Je me demande en réalité si on a intérêt à ajouter une fonctionnalité que personne n'utilise. Car appeler des revenus d'année précédente ajoute beaucoup de lourdeur dans les simulations, et ce d'autant plus que la structure d'OpenFisca (OF-France, OF-Survey-Manager), n'est pas adaptée pour le moment pour fonctionner sur de gros volumes de données (on y travaille à l'IPP, mais c'est pas pour tout de suite). Qu'en pensez-vous ? Désolé pour ce changement d'avis en cours de route. @sandcha, qu'en penses-tu ?

bfabre01 avatar Jan 29 '21 14:01 bfabre01

Bonjour @bfabre01,

Merci pour ton message.

Pour les tests, effectivement ça échoue sur le changelog et le numéro de version (je comptais changer ça au dernier moment).

Pour les changements depuis la revue, c'est de ma faute, j'ai squashé mes commits pour nettoyer l'historique, mais je n'ai pas pensé que ça se prêtait mal au mécanisme de revue sous Github, désolé pour ça...

Les modifications concernaient effectivement la suppression de la variable calcul_lissage_cehr, et l'ajout de tests, ce qui a été fait dans mes derniers changements.

J'ai bien noté tes doutes quant à l'opportunité de mettre en œuvre le calcul du lissage dans openfisca ; pas de problème là-dessus, c'est le jeu des contributions :wink:

Pour préciser mon usage, le calcul du lissage me serait bien utile pour ma part, mais pas systématiquement.

Quelle que soit votre décision sur ce point, je propose néanmoins de maintenir ma PR, qui pourrait le cas échéant se limiter à modifier la formule de calcul de la CEHR pour aboutir à un montant de cotisation arrondi à l'euro.

PiGo86 avatar Jan 29 '21 20:01 PiGo86

Un élément me manque afin de pouvoir répondre à vos interrogations : le mécanisme de lissage est-il inscrit dans la loi ? Si oui, ce serait en faveur de son intégration à openfisca-france.

Quelle que soit la réponse à cela, la mise à jour de la formule de CEHR est complètement éligible à l'intégration à openfisca-france. Nous pourrions, si cela vous semble réaliste, décoreller les deux sujets (intégrer l'arrondi puis débloquer la question du lissage).

sandcha avatar May 27 '21 18:05 sandcha

Bonjour @sandcha,

Merci pour votre message.

Pour répondre à votre question, je vous confirme que le mécanisme du lissage est prévu dans la loi (art. 223 sexies, II du CGI).

Sa mise en œuvre dans OpenFisca soulève toutefois une difficulté pratique (décrite ici).

En ce qui concerne le découplage des deux sujets (arrondis d'une part et lissage d'autre part), je n'y vois pas d'inconvénient. En pratique, comment dois-je procéder ?

PiGo86 avatar Jun 02 '21 21:06 PiGo86

@PiGo86, si ce point est encore d'actualité, je pense que @sandcha vous propose de séparer les deux points dans deux PR séparées.

benjello avatar Nov 08 '22 12:11 benjello

@PiGo86, si ce point est encore d'actualité, je pense que @sandcha vous propose de séparer les deux points dans deux PR séparées.

Ok merci, je vais faire ça alors (il faut juste que je me remette sur le sujet :smiley: )

PiGo86 avatar Nov 08 '22 21:11 PiGo86