-
Notifications
You must be signed in to change notification settings - Fork 99
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Corrige la taxation des revenus des valeurs mobilières #1343
Conversation
c50d599
to
d5f5a68
Compare
@@ -830,18 +829,32 @@ def formula_2017_01_01(foyer_fiscal, period, parameters): | |||
|
|||
return max_(0, rvcm_apres_abattement - f2ca - deficit_rcm) | |||
|
|||
def formula_2018_01_01(foyer_fiscal, period, parameters): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Qu'est-ce qui explique une telle différence entre cette version et celle de 2017 ? Pourquoi ne tenons-nous plus compte de la case 2GO par exemple, toujours mentionnée dans la dernière version de l'aide en ligne de la déclaration par Internet ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Morendil Cette variable revenu_categoriel_capital
contient l'ensemble des revenus du capital taxés au barème (ceux taxés forfaitairement sont injectés ailleurs). En 2018, il y a le passage au PFU. Les cases 2CH et 2YY correspondent à des revenus forcément taxés au barème, elle restent donc dans le champ de revenu_categoriel_capital
. La plupart des autres cases que je supprime ici entre 2017 et 2018 (2DC, 2FU, 2TS, 2TR, 2TT etc.) sont désormais taxées au PFU, elle sortent donc du champ de cette variable.
La seule chose qui manque dans cette PR c'est que les revenus taxés au PFU peuvent être (sur option du contribuable) taxés au barème. Pour l'instant, comme mentionné dans #1083, on suppose que cette option n'est jamais exercée. Coder cette option fera l'objet d'une PR à part. Dans tous les cas, le PFU est l'option par défaut donc ça ne me parait pas aberrant d'avoir fait cette hypothèse.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK merci :) C'est pas clair à la lecture, et une référence ou un commentaire aideraient à comprendre la nature de l'évolution structurelle, en la distinguant de la succession des formules pour les années précédentes (qui traduit plutôt si je comprends bien une évolution du formulaire de déclaration sans modification en profondeur de la loi fiscale).
def formula_2018_01_01(foyer_fiscal, period, parameters): | ||
maries_ou_pacses = foyer_fiscal('maries_ou_pacses', period) | ||
f2ch = foyer_fiscal('f2ch', period) | ||
# f2dc = foyer_fiscal('f2dc', period) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Supprimer les lignes mises en commentaire.
(f2ch < P.abat_assvie * (1 + maries_ou_pacses)) * max_(0, min_(f2vv + f2ww, P.abat_assvie * (1 + maries_ou_pacses) - f2ch - f2dh)) | ||
) | ||
|
||
return - abattement_assurance_vie # + abattement_dividende |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Supprimer la partie en commentaire.
Par ailleurs je vois un très gros risque de confusion si je lis cette formule et que je la compare avec la période précédente: une variable avec le même nom abattement_assurance_vie
semble avoir changé de signe. Je ne comprends pas la modification du mode de calcul et je ne vois pas de référence législative.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Morendil J'ai effectué cette correction après avoir remarqué via le simulateur en ligne que le calcul du RFR se faisait en déduisant l'abattement fixe sur les assurances-vies (et non en les ajoutant comme la formule de 2017 semble le suggérer). Je vais chercher une référence législative et peut-être rajouter un test pour 2017 pour voir si il n'y avait pas d'erreur avant.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
J'ai ajouté un test dans rvcm.py
et on peut voir qu'il semble effectivement qu'il y ait une erreur avant 2018. OpenFisca prend les revenus sans abattements dans le calcul du RFR tandis que le simulateur DGFiP les prend nets d'abattements.
J'ai l'impression que l'erreur vient du fait que certains abattements doivent bien être réintroduits dans le calcul du RFR tandis que d'autres non. Ex :
- Abattement de 40% sur les dividendes : n'est pas pris en compte dans le calcul du RFR (revenus bruts d'abattements)
- Abattement fixe sur assurance-vie (celui ici) : est pris en compte dans le calcul du RFR (revenus nets d'abattements)
La règle semble plutôt être celle où il est pris en compte (et celle sur l'abattement de 40% semble être l'exception). L'article qui régit le calcul du RFR semble être l'article 1417 du CGI voir a bis) du 1° du IV
Source : ici
value_type = float | ||
entity = FoyerFiscal | ||
label = u"Produits des bons ou contrats de capitalisation et d'assurance vie de moins de 8 ans pour les contrats souscrits après le 26 septembre 1997, dont le produits sont associés aux primes versées après le 27 septembre 2017, et que le bénéficiaire décide de soumettre au prélèvement forfaitaire unique au titre de l'impôt sur le revenu" | ||
definition_period = YEAR | ||
# start_date = date(2018, 1, 1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pourquoi ajouter cette ligne commentée?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C'est une pratique courante concernant les cases de l'impôt. Apparemment, il existait avant un attribut start_date
(et on est très triste qu'il ait été supprimé à l'IPP). Toutes les start_date
des cases fiscales ont été gardées en commentaires, pour ne pas perdre de l'information (et peut-être dans l'espoir qu'on fasse revivre cet attribut ?). Du coup quand j'ajoute une nouvelle case, je rajoute toujours la start_date
qui est une information qui me semble importante.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tu peux m'aiguiller vers le contexte de la suppression de cet attribut des variables? L'issue ou la PR qui entérine la décision par exemple…
Ca me gêne quand même de voir une ligne de code commentée, parce qu'on ne sait pas si c'est du code qu'on veut supprimer ou remettre, c'est un entre-deux inconfortable qui suscite plus de questions que de réponses.
Je ne suis pas contre les commentaires dans l'absolu, mais dans ce cas un truc comme ça me semble préférable:
# Variable applicable à partir de 2018-01-01
Mais si c'était un point de sortie de la décision qui a précédé je veux bien m'y ranger.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Morendil Je comprends ta gêne mais il me semble que c'est une pratique acceptée depuis longtemps dans OpenFisca-France dans le cas particulier des cases fiscales (inputs variables dont la date de début et de fin est importante). J'ai une forte préférence pour garder ces commentaires.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A l'époque j'avais plaidé pour que l'on garde cette information qui est redondante pour les variables qui disposent de fonctions. Mais cela n'avait pas été retenu. Comme cela avait de la valeur informationnelle, on a gardé les lignes commentées.
definition_period = YEAR | ||
# start_date = date(2018, 1, 1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pourquoi ajouter cette ligne commentée?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Idem que plus haut
entity = FoyerFiscal | ||
label = u"Produits des bons ou contrats de capitalisation et d'assurance vie de plus de 8 ans pour les contrats souscrits après le 26 septembre 1997, dont le produits sont associés aux primes versées après le 27 septembre 2017, et que le bénéficiaire décide de soumettre au prélèvement forfaitaire unique au titre de l'impôt sur le revenu; produit correspondant aux primes excédant pas 150 000 euros." | ||
definition_period = YEAR | ||
# start_date = date(2018, 1, 1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pourquoi ajouter cette ligne commentée?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Idem que plus haut
@@ -339,9 +355,6 @@ class f2ar(Variable): | |||
# start_date = date(2012, 1, 1) | |||
definition_period = YEAR | |||
|
|||
# je ne sais pas d'ou sort f2as...! probablement une ancienne année à laquelle je ne suis pas encore arrivé |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Supprimer la variable f2as si elle n'est effectivement jamais utilisée.
@Morendil Merci pour ta review! J'ai essayé de répondre point par point dans les commentaires. Concernant l'erreur du calcul du RFR avec l'abattement sur les assurance-vie, je peux essayer de corriger les années précédentes si ça te va ? |
Salut @Morendil, est-ce qu'on pourrait merger cette PR aujourdhui si ça te sembles possible ? J'aimerais importer ces changements au CASD avant la fin de la semaine :) |
Go, je te laisse prendre le rebase+Changelog |
…e PFL existe toujours)
…ais ne compte pas pour RFR, puis sur le reste)
…ategoriel_capital`)
…ont taxés au PFL)
181f69c
to
420215d
Compare
Contexte : Le PFU a été codé avant la publication du nouveau formulaire de l'IR et des règles précises concernant son application. Désormais, le formulaire est disponible et les règles connues. Cette PR vient donc corriger la partie "taxation des plus-values". (Cf. #1083).
Par ailleurs, elle s'appuie sur la disponibilité du simulateur de l'IR 2019 sur revenus 2018.
Fiscalité du capital : 3 régimes de taxation possible pour les revenus 2018:
(ils ouvrent droit à l'abattement fixe de 4600 euros)
(ils n'ouvrent droit à l'abattement de 40% seulement en cas d'option pour l'imposition au barème)
chemin/vers/le/fichier/contenant/les/variables/impactées
.acomptes_ir
,prelevement_forfaitaire_non_liberatoire
,prlire
,prelevement_forfaitaire_liberatoire
,revenu_categoriel_capital
,revenus_capitaux_prelevement_bareme
,revenus_capitaux_prelevement_liberatoire
,rfr_rvcm_abattements_a_reintegrer
assurance_vie_pfu_ir_moins8ans_19970926_primes_apres_20170927
=>f2zz
,assurance_vie_pfu_ir_plus8ans_19970926_primes_apres_20170927
=>f2ww
etf2zz
tests/revenu_disponible.yaml
qui avait été codé avant de connaitre les nouvelles règles (et supprime un de ces tests qui n'a plus lieu d'être)Ces changements :