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

Améliore revenus fonciers #1216

Merged
merged 24 commits into from
Jan 9, 2019
Merged

Améliore revenus fonciers #1216

merged 24 commits into from
Jan 9, 2019

Conversation

bfabre01
Copy link

@bfabre01 bfabre01 commented Nov 20, 2018

  • Amélioration technique.
  • Périodes concernées : toutes.
  • Zones impactées:
    • mesures.py
    • prelevements_obligatoires\impot_revenu\ir
    • prelevements_obligatoires\isf
    • prestations\aides_logement
    • prestations\prestations_familiales\base_ressource
    • prestations\minima_sociaux\ass
    • prestations\minima_sociaux\ppa
    • prestations\minima_sociaux\rsa
    • revenus\capital\foncier
  • Idée : on rend les variables de revenus fonciers plus explicites, et on redéfinit les inputs variables de ces revenus afin d'avoir une définition claire de ces variables, et de ne pas avoir de redondance entre les variables.
  • Détails :
    • Supprime la variable fon. A la place, on utilise revenu_categoriel_foncier.
    • Enlève la formule qui était mise dans f4ba
    • Définit revenus_locatifs via les cases de la déclaration fiscale

Vise à résoudre #861 .

@adrienpacifico
Copy link
Contributor

Bonjour,
Une petite remarque, j'ai une assez bonne idée de ce que sont les revenus_locatifs , très mauvaise de ce que sont les revenus_fonciers_nets_abattement_microfoncier_individu_mensuel, est-ce qu'on ne peux pas envisager de mettre un peu de contexte dans la docstring par exemple:

class revenus_fonciers_nets_abattement_microfoncier(Variable):
    value_type = float
    entity = FoyerFiscal
    label = u"Revenus fonciers"
    reference = "http://impotsurlerevenu.org/definitions/220-revenu-foncier.php"
    definition_period = YEAR

    def formula(foyer_fiscal, period, parameters):
        '''
        Revenus fonciers nets des déficits et après abattement sur microfoncier
        Comprend (et est principalement constitué) les revenus locatifs des biens non meublés

        Microfoncier:  quand les revenus fonciers sont inférieur à microfoncier.max (15 000€ en 2018)
       '''

        f4ba = foyer_fiscal('f4ba', period)  # Revenus fonciers imposable
        f4bb = foyer_fiscal('f4bb', period)  # Déficit imputable sur les revenus fonciers
        f4bc = foyer_fiscal('f4bc', period)  # Déficit imputable sur revenu global
        f4be = foyer_fiscal('f4be', period)  # Microfoncier
        microfoncier = parameters(period).impot_revenu.rpns.micro.microfoncier

        return f4ba - f4bb - f4bc + round_(f4be * (1 - microfoncier.taux))

Je ne sais pas ce qu'en pensent les autres utilisateurs, mais j'ai un petit peu de mal à naviguer entre les formules de manière efficace. Un peu plus de contexte m'aiderait pas mal.

@adrienpacifico
Copy link
Contributor

Remarque en plus, est-ce qu'il ne serait pas sein de mettre un warning ou un assert si f4be> parameters(period).impot_revenu.rpns.micro.microfoncier.max ?

@Morendil
Copy link
Contributor

Morendil commented Nov 22, 2018

@bfabre01 @adrienpacifico On préfèrera maintenant les attributs documentation de la variable aux docstrings si c'est possible et pertinent (i.e. lié à la variable et non à la formule), cf #1141 et openfisca/openfisca-core#717

CHANGELOG.md Outdated
### 29.4.0 [#1196](https://github.com/openfisca/openfisca-france/pull/1196)
## 29.5.0 [#1216](https://github.com/openfisca/openfisca-france/pull/1216)

* Amélioration technique.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Evolution du système socio-fiscal non rétro-compatible

Oui "breaking change" c'est plus court mais c'est anglais ;)

Et numéro de version à 32.0 (mais en fait je pense qu'il vaut mieux attendre juste avant le merge pour s'occuper des setup.py et CHANGELOG, et je veux bien centraliser cette tâche; on perd trop de temps à gérer les rebase autrement)

@Morendil
Copy link
Contributor

Attention je crois que le renommage de revenus_locatifs est encore plus "breaking" que celui de revenu_disponible. Mes Aides notamment, et nombre de réutilisations dans l'orga openfisca.

Peut-être qu'on peut adoucir le coup en dépréciant revenus_locatifs (par un commentaire ou un attribut documentation) et introduire une nouvelle variable qui serait appelée par revenus_locatifs si celui-ci n'est pas fourni en input. De cette façon on ne casse rien et on peut traiter la question de fond (de mieux analyser/classer ces revenus selon les différents usages qu'on en fait) sur la durée.

@Morendil
Copy link
Contributor

Sur le nom revenus_fonciers_nets_abattement_microfoncier_individu_mensuel il me semble qu'on cumule trop de choses, individu et mensuel sont déclarés dans les attributs de la variable. On pourrait adopter une convention déjà vue dans le code et utiliser revenus_fonciers_nets_abattement_microfoncier_i, ou ne garder que la distinction "individu".

'''
f4ba = foyer_fiscal('f4ba', period)
f4bb = foyer_fiscal('f4bb', period)
f4bc = foyer_fiscal('f4bc', period)
f4bd = foyer_fiscal('f4bd', period) # noqa F841
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On ne traite pas la case 4BD mais à mon sens c'est une erreur (et ça fait mentir le commentaire ajouté), ces déficits vont être déduits des revenus imposables, c'est ce qu'indique en tout cas la fiche de calcul.

Par ailleurs un plafond de 15000€ est applicable sur le microfoncier, toujours d'après la fiche de calcul.

Je pense que le nom "revenus_fonciers_nets_abattement_microfoncier" est trop spécifique pour cette formule qui combine le micro (4BE) et le réel (4BA-4BD), "revenus_ou_deficits_fonciers" collerait bien au calcul réalisé, ou "revenus_fonciers_nets" si c'est assez clair.

@Morendil
Copy link
Contributor

Les "revenus locatifs" au sens où les demande Mes Aides servent notamment à déterminer l'éligibilité au RSA, et à ce titre il n'y est pas distingué entre les biens loués nus et loués meublés, alors que cette distinction est importante pour la déclaration fiscale.

Il me semble qu'il faudrait conserver à "revenus locatifs" cette fonction mais lui donner une formule combinant les revenus fonciers fiscaux et les locations meublées non professionnelles (cases 5ND et consorts).

De cette façon, les calculs du RSA dans Mes Aides continueraient à s'appuyer sur la saisie globale de tous les revenus issus de la location de biens, et les calculs du RSA prenant pour base des données fiscales resteraient conformes à la fois aux calculs fiscaux et aux prescriptions de la CNAF.

@Morendil Morendil closed this Nov 26, 2018
@Morendil Morendil reopened this Nov 26, 2018
@fpagnoux fpagnoux changed the title Ameliore revenus fonciers Améliore revenus fonciers Dec 6, 2018
@Morendil
Copy link
Contributor

@bfabre01 Comment avançons-nous sur cette PR ?

@Morendil
Copy link
Contributor

J'ai poussé un commit supprimant REVENUES_CATEGORIES et REV_TYP dans france_taxbenefitsystem.py, on ne s'en sert nulle part.

@Morendil
Copy link
Contributor

Morendil commented Dec 13, 2018

Je découvre un doublon: revenu_categoriel_foncier semble faire le même calcul que l'ex fon (actuellement revenus_fonciers_nets_abattement_microfoncier mais qu'on pourrait raccourcir en revenus_fonciers_nets).

Ce doublon nous amène à compter deux fois ces revenus dans revenus_nets_du_capital. :(

Contrairement à fon cette version, dont la formule est plus complexe, tient bien compte du maximum. Par contre sa formule utilise des noms de variables locales bien cryptiques (a13, b13, c13 etc.) Elle contrôle aussi le non cumul du micro-foncier et autres revenus fonciers (ce cumul est effectivement rejeté par le calculateur de la DGFIP), par contre elle ne contrôle pas le cumul revenus/déficits (qui est aussi rejeté par la DGFIP).

Le calcul correct est me semble-t-il le suivant, je m'appuie sur la fiche de calculs:

  • si f4bb ou f4bc, c'est juste le déficit imputable sur le global soit -f4bc
  • si f4be, c'est max_(f4be, microfoncier.max) * (1 - microfoncier.taux)
  • si f4ba, c'est juste f4ba - f4bd

Ce qui donne sous la forme d'un select:

return select([(f4bb > 0) + (f4bc > 0), f4be > 0],
  [-f4bc, max_(f4be, microfoncier.max) * (1 - microfoncier.taux)], f4ba - f4bd)

J'ai corrigé revenu_categoriel_foncier dans ce sens. J'ai supprimé au passage la vérification de cohérence qui émet un avertissement via log.error. Pour moi ces règles doivent être vérifiées par l'IHM et n'ont pas leur place dans les formules, puisqu'il n'est pas possible de transmettre de façon fiable à l'usager une erreur signalée seulement dans les logs, dans le cas d'usage d'une API.

@Morendil
Copy link
Contributor

Pour corriger le doublon j'ai supprimé revenus_fonciers_nets_abattement_microfoncier dans revenus_nets_du_capital.

@Morendil
Copy link
Contributor

Bon je vois que ça casse des tests… je vais avoir besoin d'une deuxième paire d'yeux sur le truc.

@bfabre01
Copy link
Author

@Morendil : pardon pour mon temps de réponse. Je vais reprendre tout ça car en effet, l'inclusion des bien professionnels complique la chose. Demain, ou début de semaine prochaine.

@Morendil
Copy link
Contributor

@bfabre01 Le double compte dont je parlais plus haut peut représenter une erreur importante dans les calculs basés sur des données fiscales il me semble, je serais curieux de savoir ce qu'il en est…

@bfabre01 bfabre01 force-pushed the ameliore-revenus-fonciers branch 2 times, most recently from 9c6c6c9 to 8d618a9 Compare January 4, 2019 16:52
@bfabre01 bfabre01 force-pushed the ameliore-revenus-fonciers branch from 44beb67 to 78dc91c Compare January 9, 2019 16:28
@bfabre01
Copy link
Author

bfabre01 commented Jan 9, 2019

@Morendil : pardon pour ces erreurs. Ok, super. J'ai juste enlevé un test redondant. Sinon, c'est tout bon de mon côté. Si tous les tests passent, je pense qu'on peut merger.

@Morendil
Copy link
Contributor

Morendil commented Jan 9, 2019

@bfabre01 Est-ce que le message du CHANGELOG est à jour de toutes les modifications depuis ?

@bfabre01
Copy link
Author

bfabre01 commented Jan 9, 2019

C'est fait ! Merci pour la remarque.

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.

4 participants