OpenFisca-France 168.0.15__py3-none-any.whl → 168.0.16__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of OpenFisca-France might be problematic. Click here for more details.

@@ -1,22 +1,32 @@
1
1
  # Changelog
2
2
 
3
+ ## 168.0.16 [2337](https://github.com/openfisca/openfisca-france/pull/2337)
4
+
5
+ * Évolution du système socio-fiscal.
6
+ * Périodes concernées : À partir du 2024/10/01.
7
+ * Zones impactées :
8
+ - `openfisca_france/model/prestations/minima_sociaux/ppa.py.`
9
+ - `openfisca_france/model/prestations/minima_sociaux/rsa.py.`
10
+ * Détails :
11
+ - Modification de la période de référence pour les aides RSA et PPA
12
+ - Refactoring du code de ces méthodes pour éviter la duplication de code
13
+
3
14
  ## 168.0.15 [2348](https://github.com/openfisca/openfisca-france/pull/2349)
4
15
 
5
16
  * Évolution du système socio-fiscal changement mineur.
6
- * Périodes concernées : 01/01/2023.
17
+ * Périodes concernées : 01/01/2023.
7
18
  * Zones impactées : `openfisca_france/parameters/impot_revenu/bareme_ir_depuis_1945/bareme.yaml`.
8
19
  * Détails : Ajoute référence 2024 article codifié impôt sur le revenu
9
-
20
+
10
21
  ## 168.0.14 [2348](https://github.com/openfisca/openfisca-france/pull/2348)
11
22
 
12
23
  * Changement mineur : Modification d'un label
13
- * Périodes concernées : toutes.
24
+ * Périodes concernées : toutes.
14
25
  * Zones impactées : `openfisca_france/model/revenus/activite/salarie.py`.
15
26
  * Détails : La variable `contrat_de_travail` et la variable `contrat_de_travail_type` ont le même label, pourtant elles ne représentent pas la même chose. La première concerne les types de durées de travail du contrat (Temps plein, partiel, convention, etc.) ; la seconde, le type de contrat (CDD,CDI). Cette PR change le label de la première et propose de parler de "Type de durée de travail" pour les distinguer.
16
27
 
17
28
  [Service-Public.fr](https://www.service-public.fr/particuliers/vosdroits/F19261) en parle aussi sous cette forme.
18
29
 
19
-
20
30
  ## 168.0.13 [2344](https://github.com/openfisca/openfisca-france/pull/2344)
21
31
 
22
32
  * Évolution du système socio-fiscal. | Amélioration technique. Ces changements modifient l'API publique d'OpenFisca France et ajoutent une fonctionnalité : la possibilité de modifier des paramètres actuellement en dur dans les formules.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: OpenFisca-France
3
- Version: 168.0.15
3
+ Version: 168.0.16
4
4
  Summary: French tax and benefit system for OpenFisca
5
5
  Home-page: https://github.com/openfisca/openfisca-france
6
6
  Author: OpenFisca Team
@@ -1,5 +1,5 @@
1
- OpenFisca_France-168.0.15.data/data/share/openfisca/openfisca-france/CHANGELOG.md,sha256=P8xWr6rU6BbP-qAwCwPfcnMQVUlBFaS_gsspGJqOXqw,452700
2
- OpenFisca_France-168.0.15.data/data/share/openfisca/openfisca-france/README.md,sha256=nIa6V4zevZpj2DX1rcpgs6AATTerCCy4622S1D3-CDI,18642
1
+ OpenFisca_France-168.0.16.data/data/share/openfisca/openfisca-france/CHANGELOG.md,sha256=S28CRva_q--UVjfh3HyJMIJicKuLsftifXIa8V0Xdjc,453183
2
+ OpenFisca_France-168.0.16.data/data/share/openfisca/openfisca-france/README.md,sha256=nIa6V4zevZpj2DX1rcpgs6AATTerCCy4622S1D3-CDI,18642
3
3
  openfisca_france/__init__.py,sha256=MHLZ0V8uQHi4lkZ5bPAoLjsWTJe-wJgLfPxFvbCCxHc,126
4
4
  openfisca_france/entities.py,sha256=nGl52ncj9wZzFwASKZk4_OHzhqOUuXGBxNmIiwxZU-c,2576
5
5
  openfisca_france/france_taxbenefitsystem.py,sha256=UHVqvkqqYk-9RanSPWlVy3uieG77GCSrWCOqVpeN30I,1687
@@ -117,8 +117,8 @@ openfisca_france/model/prestations/minima_sociaux/aefa.py,sha256=mXOBJgXTl_iA6aa
117
117
  openfisca_france/model/prestations/minima_sociaux/anciens_ms.py,sha256=PAXVlfd8PNXR_cUyf31BUsVJ8-KTTP3Tx6CD7rRLBEw,10878
118
118
  openfisca_france/model/prestations/minima_sociaux/asi_aspa.py,sha256=abhKjQrYylUbi5Q78JL5yx0WoVtjejVWfi13FoHxnvI,20771
119
119
  openfisca_france/model/prestations/minima_sociaux/ass.py,sha256=lFizKYXWihH7L5jEQpHvaK-61DmxlcX0r4QoWuuG5YU,11221
120
- openfisca_france/model/prestations/minima_sociaux/ppa.py,sha256=Z7ot3ARi1y0u-DB-VTSBro8Wgw77i4qk62VEnzMeWrs,24565
121
- openfisca_france/model/prestations/minima_sociaux/rsa.py,sha256=v1k5e5aFqzd-cEmRm16fbGgiwXcVbbGdv3FRljuW1Go,44878
120
+ openfisca_france/model/prestations/minima_sociaux/ppa.py,sha256=gIyPvU4gv2x-uZIDFLP92YbueuHB4ubNSMMlfeSDHg8,25064
121
+ openfisca_france/model/prestations/minima_sociaux/rsa.py,sha256=65MdN4QZ1rms0vcTwZlSXis2HpQfK5_vE18PIFGvudw,47257
122
122
  openfisca_france/model/prestations/minima_sociaux/cs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
123
123
  openfisca_france/model/prestations/minima_sociaux/cs/acs.py,sha256=nwihxwsjKAmgPBW3jB2GcCSOxWJuQKgNhTj_gLZ-xAw,2435
124
124
  openfisca_france/model/prestations/minima_sociaux/cs/cmu.py,sha256=b-voxJzetykcF0WMA_cLebBQRd53Y9Z-xQGOA3jpvPk,11718
@@ -4025,8 +4025,8 @@ tests/test_parameters.py,sha256=9ByrtcJpaV32qCE-u4FY4fzCugFUW8utc5_KUAmYKG8,354
4025
4025
  tests/test_preprocessing.py,sha256=BBMFR4GlFFqu86XfVcrHRbps_SpoWb1QS1lmu3c5bCE,6973
4026
4026
  tests/test_scenarios.py,sha256=A7SmVt_iyDTbNTE45WgGQlQZkJ0uJ1ZGUhTV3ziwLUw,1009
4027
4027
  tests/test_tax_rates.py,sha256=B_CnSIqCijGYkKW7XVZlF8uot0otNJ-Sq-DKINPATfA,1551
4028
- OpenFisca_France-168.0.15.dist-info/LICENSE.AGPL.txt,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
4029
- OpenFisca_France-168.0.15.dist-info/METADATA,sha256=nc_t4OJXlHxiXld9_WDhcEjidslBtno4Y5Dc1Wvmf20,20518
4030
- OpenFisca_France-168.0.15.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
4031
- OpenFisca_France-168.0.15.dist-info/top_level.txt,sha256=hmd7WhmLN_CyB52sP702pN9WlJqO9YMVuzeBRNp3hfs,23
4032
- OpenFisca_France-168.0.15.dist-info/RECORD,,
4028
+ OpenFisca_France-168.0.16.dist-info/LICENSE.AGPL.txt,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
4029
+ OpenFisca_France-168.0.16.dist-info/METADATA,sha256=6vtXGu8B32AATtvWG9kOTtCjSXDC4_flgqnZJ781v00,20518
4030
+ OpenFisca_France-168.0.16.dist-info/WHEEL,sha256=5Mi1sN9lKoFv_gxcPtisEVrJZihrm_beibeg5R6xb4I,91
4031
+ OpenFisca_France-168.0.16.dist-info/top_level.txt,sha256=hmd7WhmLN_CyB52sP702pN9WlJqO9YMVuzeBRNp3hfs,23
4032
+ OpenFisca_France-168.0.16.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (74.1.2)
2
+ Generator: setuptools (75.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -502,15 +502,11 @@ class ppa(Variable):
502
502
  # Prime pour l'Activité sur service-public.fr
503
503
  reference = 'https://www.service-public.fr/particuliers/vosdroits/F2882'
504
504
 
505
- def formula_2016_01_01(famille, period, parameters):
506
- seuil_non_versement = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.ppa.pa_m.montant_minimum_verse
507
- # éligibilité étudiants
508
-
509
- ppa_eligibilite_etudiants = famille('ppa_eligibilite_etudiants', period)
510
- ppa = famille('ppa_fictive', period.last_3_months, options = [ADD]) / 3
511
- ppa = ppa * ppa_eligibilite_etudiants * (ppa >= seuil_non_versement)
505
+ def formula_2024_10(famille, period, parameters):
506
+ return ppa_base_formula(famille=famille, parameters=parameters, period=period, three_months_of_reference=last_3_months_offset_minus_1(period))
512
507
 
513
- return ppa
508
+ def formula_2016_01_01(famille, period, parameters):
509
+ return ppa_base_formula(famille=famille, parameters=parameters, period=period, three_months_of_reference=period.last_3_months)
514
510
 
515
511
 
516
512
  class crds_ppa(Variable):
@@ -576,3 +572,18 @@ class ppa_versee(Variable):
576
572
  + famille('ppa', period.last_month) * (remainder == 1)
577
573
  + famille('ppa', period.last_month.last_month) * (remainder == 2)
578
574
  )
575
+
576
+
577
+ def last_3_months_offset_minus_1(period) -> Period:
578
+ return period.last_month.last_3_months
579
+
580
+
581
+ def ppa_base_formula(famille, parameters, period, three_months_of_reference):
582
+ seuil_non_versement = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.ppa.pa_m.montant_minimum_verse
583
+ # éligibilité étudiants
584
+
585
+ ppa_eligibilite_etudiants = famille('ppa_eligibilite_etudiants', period)
586
+ ppa = famille('ppa_fictive', three_months_of_reference, options = [ADD]) / 3
587
+ ppa = ppa * ppa_eligibilite_etudiants * (ppa >= seuil_non_versement)
588
+
589
+ return ppa
@@ -1,7 +1,6 @@
1
1
  from numpy import datetime64, logical_and as and_, logical_or as or_
2
2
 
3
3
  from openfisca_core.periods import Period
4
-
5
4
  from openfisca_france.model.base import *
6
5
  from openfisca_france.model.prestations.prestations_familiales.base_ressource import nb_enf
7
6
 
@@ -79,58 +78,11 @@ class rsa_base_ressources_individu(Variable):
79
78
  set_input = set_input_divide_by_period
80
79
  reference = 'https://www.legifrance.gouv.fr/affichCodeArticle.do?cidTexte=LEGITEXT000006073189&idArticle=LEGIARTI000036393176&dateTexte=&categorieLien=id'
81
80
 
82
- def formula_2009_06_01(individu, period, parameters):
83
- # Revenus professionels
84
- types_revenus_pros = [
85
- 'chomage_net',
86
- 'retraite_nette',
87
- ]
88
-
89
- possede_ressources_substitution = individu('rsa_has_ressources_substitution', period)
90
-
91
- # Les revenus pros interrompus au mois M sont neutralisés s'il n'y a pas de revenus de substitution.
92
- revenus_pro = sum(
93
- individu(type_revenu, period.last_3_months, options = [ADD]) * not_(
94
- (individu(type_revenu, period) == 0)
95
- * (individu(type_revenu, period.last_month) > 0)
96
- * not_(possede_ressources_substitution)
97
- )
98
- for type_revenu in types_revenus_pros
99
- )
100
-
101
- types_revenus_non_pros = [
102
- 'allocation_securisation_professionnelle',
103
- 'dedommagement_victime_amiante',
104
- 'gains_exceptionnels',
105
- 'pensions_alimentaires_percues',
106
- 'pensions_invalidite',
107
- 'prestation_compensatoire',
108
- 'prime_forfaitaire_mensuelle_reprise_activite',
109
- 'rsa_base_ressources_patrimoine_individu',
110
- 'rsa_indemnites_journalieres_hors_activite',
111
- ]
112
-
113
- # Les revenus non-pro interrompus au mois M sont neutralisés dans la limite d'un montant forfaitaire,
114
- # sans condition de revenu de substitution.
115
- montant_de_base_du_rsa = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.rsa.rsa_m.montant_de_base_du_rsa
116
- montant_forfaitaire_neutralisation = 3 * montant_de_base_du_rsa
117
- revenus_non_pros = sum(
118
- max_(
119
- 0,
120
- individu(type_revenu, period.last_3_months, options = [ADD])
121
- - (
122
- montant_forfaitaire_neutralisation
123
- * (individu(type_revenu, period) == 0)
124
- * (individu(type_revenu, period.last_month) > 0)
125
- )
126
- )
127
- for type_revenu in types_revenus_non_pros
128
- )
129
-
130
- rentes_viageres = individu.foyer_fiscal('rente_viagere_titre_onereux', period.last_3_months, options = [ADD])
131
- revenus_foyer_fiscal_projetes = rentes_viageres * individu.has_role(FoyerFiscal.DECLARANT_PRINCIPAL)
81
+ def formula_2024_10(individu, period, parameters):
82
+ return rsa_base_ressources_individu_base_formula(individu= individu, period= period, three_months_of_reference= last_3_months_offset_minus_1(period), parameters=parameters)
132
83
 
133
- return (revenus_pro + revenus_non_pros + revenus_foyer_fiscal_projetes) / 3
84
+ def formula_2009_06_01(individu, period, parameters):
85
+ return rsa_base_ressources_individu_base_formula(individu= individu, period= period, three_months_of_reference= period.last_3_months, parameters=parameters)
134
86
 
135
87
  def formula(individu, period, parameters):
136
88
  # Revenus professionels
@@ -193,15 +145,13 @@ class rsa_base_ressources_minima_sociaux(Variable):
193
145
  definition_period = MONTH
194
146
  set_input = set_input_divide_by_period
195
147
 
148
+ def formula_2024_10(famille, period):
149
+ three_months_of_reference = last_3_months_offset_minus_1(period)
150
+ return calcul_minima_sociaux(famille= famille, period= period, three_months_of_reference=three_months_of_reference)
151
+
196
152
  def formula(famille, period):
197
153
  three_previous_months = period.last_3_months
198
- aspa = famille('aspa', period)
199
-
200
- ass_i = famille.members('ass', three_previous_months, options = [ADD])
201
- aah_i = famille.members('aah', three_previous_months, options = [ADD])
202
- asi_i = famille.members('asi', three_previous_months, options = [ADD])
203
- caah_i = famille.members('caah', three_previous_months, options = [ADD])
204
- return aspa + famille.sum(ass_i + aah_i + asi_i + caah_i) / 3
154
+ return calcul_minima_sociaux(famille= famille, period= period, three_months_of_reference=three_previous_months)
205
155
 
206
156
 
207
157
  class rsa_base_ressources_prestations_familiales(Variable):
@@ -527,43 +477,13 @@ class rsa_revenu_activite_individu(Variable):
527
477
  definition_period = MONTH
528
478
  set_input = set_input_divide_by_period
529
479
 
480
+ def formula_2024_10(individu, period):
481
+ period_m2_m4 = last_3_months_offset_minus_1(period)
482
+ return rsa_revenu_activite_individu_base_formula(individu= individu, period=period, three_months_of_reference=period_m2_m4)
483
+
530
484
  def formula_2009_06(individu, period):
531
485
  last_3_months = period.last_3_months
532
-
533
- # Note Auto-entrepreneurs:
534
- # D'après les caisses, le revenu pris en compte pour les AE pour le RSA ne prend en compte que
535
- # l'abattement standard sur le CA, mais pas les cotisations pour charges sociales.
536
-
537
- types_revenus_activite = [
538
- 'salaire_net',
539
- 'indemnites_chomage_partiel',
540
- 'remuneration_apprenti',
541
- 'indemnites_volontariat',
542
- 'revenus_stage_formation_pro',
543
- 'bourse_recherche',
544
- 'hsup',
545
- 'etr',
546
- 'rpns_auto_entrepreneur_benefice',
547
- 'rsa_indemnites_journalieres_activite',
548
- ]
549
-
550
- possede_ressource_substitution = individu('rsa_has_ressources_substitution', period)
551
-
552
- # Les revenus pros interrompus au mois M sont neutralisés s'il n'y a pas de revenus de substitution.
553
- revenus_moyennes = sum(
554
- individu(type_revenu, last_3_months, options = [ADD]) * not_(
555
- (individu(type_revenu, period) == 0)
556
- * (individu(type_revenu, period.last_month) > 0)
557
- * not_(possede_ressource_substitution)
558
- )
559
- for type_revenu in types_revenus_activite
560
- ) / 3
561
-
562
- revenus_tns_annualises = 0
563
- if period.start.date >= date(2017, 1, 1):
564
- revenus_tns_annualises = individu('ppa_rsa_derniers_revenus_tns_annuels_connus', period.this_year)
565
-
566
- return revenus_moyennes + revenus_tns_annualises
486
+ return rsa_revenu_activite_individu_base_formula(individu= individu, period=period, three_months_of_reference=last_3_months)
567
487
 
568
488
 
569
489
  class rsa_montant(Variable):
@@ -1043,3 +963,133 @@ class rsa_socle_majore(Variable):
1043
963
  socle = rsa.rsa_m.montant_de_base_du_rsa
1044
964
 
1045
965
  return eligib * socle * taux
966
+
967
+
968
+ def last_3_months_offset_minus_1(period) -> Period:
969
+ return period.last_month.last_3_months
970
+
971
+
972
+ def rsa_revenu_activite_individu_base_formula(individu, period, three_months_of_reference):
973
+ revenus_moyennes = calcul_revenu_moyenne(individu= individu, period=period, three_months_of_reference=three_months_of_reference)
974
+ revenus_tns_annualises = calcul_revenu_tns_annualises(individu=individu, period=period)
975
+
976
+ return revenus_moyennes + revenus_tns_annualises
977
+
978
+
979
+ def rsa_base_ressources_individu_base_formula(individu, period, three_months_of_reference, parameters):
980
+ revenus_pro = calcul_revenu_pro(individu=individu, period= period, three_months_of_reference= three_months_of_reference)
981
+ revenus_non_pros = calcul_revenu_non_pro(individu=individu, period= period, three_months_of_reference= three_months_of_reference, parameters= parameters)
982
+ revenus_foyer_fiscal_projetes = calcul_foyer_fiscal_projetes(individu=individu, three_months_of_reference= three_months_of_reference)
983
+
984
+ return (revenus_pro + revenus_non_pros + revenus_foyer_fiscal_projetes) / 3
985
+
986
+
987
+ def calcul_revenu_pro(individu, period, three_months_of_reference):
988
+ # Revenus professionels
989
+ types_revenus_pros = [
990
+ 'chomage_net',
991
+ 'retraite_nette',
992
+ ]
993
+
994
+ possede_ressources_substitution = individu('rsa_has_ressources_substitution', period)
995
+
996
+ # Les revenus pros interrompus au mois M sont neutralisés s'il n'y a pas de revenus de substitution.
997
+ revenus_pro = sum(
998
+ individu(type_revenu, three_months_of_reference, options = [ADD]) * not_(
999
+ (individu(type_revenu, period) == 0)
1000
+ * (individu(type_revenu, period.last_month) > 0)
1001
+ * not_(possede_ressources_substitution)
1002
+ )
1003
+ for type_revenu in types_revenus_pros
1004
+ )
1005
+
1006
+ return revenus_pro
1007
+
1008
+
1009
+ def calcul_revenu_non_pro(individu, period, three_months_of_reference, parameters):
1010
+ types_revenus_non_pros = [
1011
+ 'allocation_securisation_professionnelle',
1012
+ 'dedommagement_victime_amiante',
1013
+ 'gains_exceptionnels',
1014
+ 'pensions_alimentaires_percues',
1015
+ 'pensions_invalidite',
1016
+ 'prestation_compensatoire',
1017
+ 'prime_forfaitaire_mensuelle_reprise_activite',
1018
+ 'rsa_base_ressources_patrimoine_individu',
1019
+ 'rsa_indemnites_journalieres_hors_activite',
1020
+ ]
1021
+
1022
+ # Les revenus non-pro interrompus au mois M sont neutralisés dans la limite d'un montant forfaitaire,
1023
+ # sans condition de revenu de substitution.
1024
+ montant_de_base_du_rsa = parameters(period).prestations_sociales.solidarite_insertion.minima_sociaux.rsa.rsa_m.montant_de_base_du_rsa
1025
+ montant_forfaitaire_neutralisation = 3 * montant_de_base_du_rsa
1026
+ revenus_non_pros = sum(
1027
+ max_(
1028
+ 0,
1029
+ individu(type_revenu, three_months_of_reference, options = [ADD])
1030
+ - (
1031
+ montant_forfaitaire_neutralisation
1032
+ * (individu(type_revenu, period) == 0)
1033
+ * (individu(type_revenu, period.last_month) > 0)
1034
+ )
1035
+ )
1036
+ for type_revenu in types_revenus_non_pros
1037
+ )
1038
+
1039
+ return revenus_non_pros
1040
+
1041
+
1042
+ def calcul_foyer_fiscal_projetes(individu, three_months_of_reference):
1043
+ rentes_viageres = individu.foyer_fiscal('rente_viagere_titre_onereux', three_months_of_reference, options = [ADD])
1044
+ revenus_foyer_fiscal_projetes = rentes_viageres * individu.has_role(FoyerFiscal.DECLARANT_PRINCIPAL)
1045
+ return revenus_foyer_fiscal_projetes
1046
+
1047
+
1048
+ def calcul_revenu_moyenne(individu, period, three_months_of_reference):
1049
+ # Note Auto-entrepreneurs:
1050
+ # D'après les caisses, le revenu pris en compte pour les AE pour le RSA ne prend en compte que
1051
+ # l'abattement standard sur le CA, mais pas les cotisations pour charges sociales.
1052
+
1053
+ types_revenus_activite = [
1054
+ 'salaire_net',
1055
+ 'indemnites_chomage_partiel',
1056
+ 'remuneration_apprenti',
1057
+ 'indemnites_volontariat',
1058
+ 'revenus_stage_formation_pro',
1059
+ 'bourse_recherche',
1060
+ 'hsup',
1061
+ 'etr',
1062
+ 'rpns_auto_entrepreneur_benefice',
1063
+ 'rsa_indemnites_journalieres_activite',
1064
+ ]
1065
+
1066
+ possede_ressource_substitution = individu('rsa_has_ressources_substitution', period)
1067
+
1068
+ # Les revenus pros interrompus au mois M sont neutralisés s'il n'y a pas de revenus de substitution.
1069
+ revenus_moyennes = sum(
1070
+ individu(type_revenu, three_months_of_reference, options = [ADD]) * not_(
1071
+ (individu(type_revenu, period) == 0)
1072
+ * (individu(type_revenu, period.last_month) > 0)
1073
+ * not_(possede_ressource_substitution)
1074
+ )
1075
+ for type_revenu in types_revenus_activite
1076
+ ) / 3
1077
+
1078
+ return revenus_moyennes
1079
+
1080
+
1081
+ def calcul_revenu_tns_annualises(individu, period):
1082
+ revenus_tns_annualises = 0
1083
+ if period.start.date >= date(2017, 1, 1):
1084
+ revenus_tns_annualises = individu('ppa_rsa_derniers_revenus_tns_annuels_connus', period.this_year)
1085
+ return revenus_tns_annualises
1086
+
1087
+
1088
+ def calcul_minima_sociaux(famille, period, three_months_of_reference):
1089
+ aspa = famille('aspa', period)
1090
+
1091
+ ass_i = famille.members('ass', three_months_of_reference, options = [ADD])
1092
+ aah_i = famille.members('aah', three_months_of_reference, options = [ADD])
1093
+ asi_i = famille.members('asi', three_months_of_reference, options = [ADD])
1094
+ caah_i = famille.members('caah', three_months_of_reference, options = [ADD])
1095
+ return aspa + famille.sum(ass_i + aah_i + asi_i + caah_i) / 3