-
Notifications
You must be signed in to change notification settings - Fork 16
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
Permet inversion au niveau mensuel #252
Conversation
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.
Attention le smic peut changer dans l'année et au lieu d'utiliser part_annuelle
j'essaierai de calculer le montant au smic sur la durée plus précisément.
Par exemple avec une petite fonction dédiée.
Co-authored-by: Mahdi Ben Jelloul <[email protected]>
c07beb5
to
3549b2c
Compare
Il y a plusieurs choses différentes dans cette PR, notamment la prise en compte possible du salaire imposable au lieu du net pour l'inversion du chômage (que l'on aimerait avoir mergée pour la semaine prochaine afin de sortir sereinement la prochaine version publique de Taxipp), et la prise en compte de l'indemnité compensatrice qui est plus complexe et moins urgente. J'ai fait des tests d'aller-retour pour vérifier que l'on se rapprochait considérablement du salaire imposable d'origine en faisant l'aller-retour, mais s'il y a un problème ou que les reviewers manquent de temps, merci de me prévenir pour que je puisse scinder la PR et faire passer la modification moins problématique. |
Bonjour @sylvainipp, c'est bien noté pour les contraintes de temps. J'ai pushé ta branche sur notre CI avec données pour voir si les tests passent et je fais la revue de ta PR demain si cela te convient |
Super, merci ! |
openfisca_france_data/common.py
Outdated
liste_cotis = ["famille", "ati", "financement_organisations_syndicales", "csa", "fnal_contributions_plus_de_20_salariés"] | ||
else: | ||
liste_cotis = ["famille", "atiacl", "financement_organisations_syndicales", "csa", "fnal_contributions_plus_de_20_salariés"] |
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.
@sylvainipp la CI ne tourne pas, l'erreur est que la variable fnal_contributions_plus_de_20_salaries
n'est pas trouvé. J'ai regardé et je ne la vois effectivement pas dans Openfisca France. Donc a priori c'est un problème indépendant des données.
Je constate que tu as un accès directement à notre dépôt avec CI si jamais ça peut t'aider de regarder : https://git.leximpact.dev/benjello/openfisca-france-data/-/jobs/54501
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.
La variable est créée dans preprocessing, je ne comprends pas trop le problème. Après, la plus grosse partie de la correction vient de l'ajout de l'indemnité elle-même dans l'inversion, la prise en compte de l'exonération de cotisations sur cette indemnité est assez faible en termes de montant (10 euros par an max pour les fonctionnaires concernés). Comme c'est aussi la partie sur laquelle je suis le moins sûr, je l'enlève pour cette PR, et ne laisse donc que la correction de l'effet direct de l'indemnité. La Ci leximpact semble apprécier cette solution ;)
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.
@sylvainipp J'ai fait quelques retours de forme. L'erreur sur le paramètre fnal était une typo dans l'écriture du nom. Je l'ai corrigé et est pushé sur gitlab mais une autre erreur est apparue. Je te laisse regarder si tu veux creuser ou pas dans cette PR
cotisation = parameters.prelevements_sociaux.regimes_complementaires_retraite_secteur_prive.gmp.cotisation_forfaitaire_mensuelle.part_salariale * 12 | ||
n = (cotisation + 1) * 12 | ||
agirc.add_bracket(n / plafond_securite_sociale_annuel, 0) | ||
salaire_charniere = parameters.prelevements_sociaux.regimes_complementaires_retraite_secteur_prive.gmp.salaire_charniere_annuel * (nb_mois / 12) / plafond_securite_sociale |
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.
Le paramètre plafond_securite_sociale
n'est donc plus défini dans la fonction ce qui va poser problème si on appelle la fonction. Idem pour nb_mois
. Je les mettrai a minima en paramètre de la fonction
openfisca_france_data/common.py
Outdated
@@ -395,12 +401,18 @@ def create_traitement_indiciaire_brut(individus, period = None, revenu_type = 'i | |||
individus['primes_fonction_publique'] = TAUX_DE_PRIME * traitement_indiciaire_brut | |||
|
|||
|
|||
def create_revenus_remplacement_bruts(individus, period, tax_benefit_system): | |||
def create_revenus_remplacement_bruts(individus, period, tax_benefit_system, revenu_type = 'imposable'): |
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.
je mettrait plutôt le 'net' par défaut car c'est l'option qui existait avant. Cela permet aux utilisateurs de ne pas avoir de changements / erreurs dans leurs calculs s'ils utilisaient déjà cette fonction.
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.
La fonction a été rajoutée par Paul il y a deux semaines, je ne pense donc pas qu'elle soit encore consciemment utilisée. A priori, le mieux est de mettre le salaire net, mais comme le paramètre par défaut dans la fonction précédente (create_traitement_indiciaire_brut ) est imposable je me suis dit que c'était bien d'harmoniser. Cependant, le mieux est probablement de faire apparaître la "vraie" façon d'inverser (le seul défaut est qu'on ne peut plus faire tourner toutes les fonctions avec les mêmes paramètres par défaut, mais c'était déjà difficile à faire avant)
openfisca_france_data/common.py
Outdated
if revenu_type == 'imposable': | ||
assert 'salaire_imposable' in individus.columns | ||
salaire_pour_inversion = individus.salaire_imposable | ||
else: |
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.
à la place du else
je mettrai un elif revenu_type == 'net
puis un else: raise error not implemented
Merci beaucoup pour ton retour rapide @clallemand ! Je vais laisser tomber l'inversion de l'exonération de cotisation de l'indemnité compensatrice de csg pour cette PR. Je l'avais codé un peu de manière empirique, et pour essayer d'avoir une meilleure inversion sur 2018 principalement ; j'essaierais de prendre en compte la subtilité plus tard. |
New features