Skip to content
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

Merged
merged 11 commits into from
May 30, 2024
Merged

Conversation

sylvainipp
Copy link
Contributor

@sylvainipp sylvainipp commented Apr 8, 2024

New features

  • Rend l'inversion plus robuste pour permettre de la faire de manière mois par mois
  • En particulier, donne un seuil d'exonération sur le chômage net dépendant de la période.
  • Ajoute dans l'inversion la prise en compte de l'indemnité compensatrice de csg

@sylvainipp sylvainipp marked this pull request as draft April 8, 2024 10:16
Copy link
Member

@benjello benjello left a 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.

@sylvainipp sylvainipp marked this pull request as ready for review April 15, 2024 12:08
@sylvainipp
Copy link
Contributor Author

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.

@clallemand
Copy link
Contributor

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

@sylvainipp
Copy link
Contributor Author

Super, merci !

Comment on lines 392 to 394
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"]
Copy link
Contributor

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

Copy link
Contributor Author

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 ;)

Copy link
Contributor

@clallemand clallemand left a 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
Copy link
Contributor

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

@@ -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'):
Copy link
Contributor

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.

Copy link
Contributor Author

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)

if revenu_type == 'imposable':
assert 'salaire_imposable' in individus.columns
salaire_pour_inversion = individus.salaire_imposable
else:
Copy link
Contributor

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

@sylvainipp
Copy link
Contributor Author

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.

@clallemand clallemand self-requested a review May 30, 2024 13:57
@sylvainipp sylvainipp merged commit 0028e7d into master May 30, 2024
12 checks passed
@clallemand clallemand deleted the mensualisation_inversion branch June 11, 2024 13:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants