Skip to content

Commit

Permalink
Merge pull request #1270 from openfisca/msa_rente_at to forked 37.0.1
Browse files Browse the repository at this point in the history
Intégration du calcul de la rente d'accident du travail
  • Loading branch information
Morendil authored and frtomas committed Mar 21, 2019
1 parent bbd1448 commit 648ecf5
Show file tree
Hide file tree
Showing 11 changed files with 844 additions and 1 deletion.
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,26 @@
# Changelog

## 38.1.0bis [#1270](https://github.com/openfisca/openfisca-france/pull/1270)

* Évolution du système socio-fiscal.
* Périodes concernées : toutes.
* Zones impactées :
- `revenus/remplacement/rente_accident_travail`.
- `parameters/accident_travail/rente/*`.
* Détails :
- Permet le calcul de `rente_accident_travail`.
- Ajoute les variables:
- `demande_rachat` (en entrée)
- `pcrtp_nombre_actes_assistance` (en entrée)
- `indemnite_accident_travail`
- `pcrtp`
- `rente_accident_travail_apres_rachat`
- `rente_accident_travail_base`
- `rente_accident_travail_exploitant_agricole`
- `rente_accident_travail_rachat`
- `rente_accident_travail_salaire_utile`
- `rente_accident_travail_salarie`

### 37.0.1 [#1289](https://github.com/openfisca/openfisca-france/pull/1289)

* Correction cosmétique de ce fichier (CHANGELOG.md)
Expand Down
172 changes: 172 additions & 0 deletions openfisca_france/model/revenus/remplacement/rente_accident_travail.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,175 @@ class rente_accident_travail(Variable):
label = u"Montant mensuel de la rente d’accident du travail"
reference = u"https://www.legifrance.gouv.fr/affichCodeArticle.do?cidTexte=LEGITEXT000006073189&idArticle=LEGIARTI000006743072&dateTexte=&categorieLien=cid"
definition_period = MONTH

def formula(individu, period):
previous_year = period.start.period('year').offset(-1)
non_salarie_agricole = individu('tns_benefice_exploitant_agricole', previous_year, options=[ADD]) != 0
rente_accident_travail_salarie = individu('rente_accident_travail_salarie', period)
rente_accident_travail_exploitant_agricole = individu('rente_accident_travail_exploitant_agricole', period)

return where(non_salarie_agricole, rente_accident_travail_exploitant_agricole, rente_accident_travail_salarie)


class rente_accident_travail_salarie(Variable):
value_type = float
entity = Individu
label = u"Montant de la rente d’accident du travail pour les victimes salariées"
reference = u"https://www.legifrance.gouv.fr/affichCodeArticle.do?cidTexte=LEGITEXT000006073189&idArticle=LEGIARTI000006743072&dateTexte=&categorieLien=cid"
definition_period = MONTH

def formula(individu, period):
previous_year = period.start.period('year').offset(-1)
salarie = individu('salaire_net', previous_year, options=[ADD]) != 0
rente_accident_travail_rachat = individu('rente_accident_travail_rachat', period)
taux_incapacite = individu('taux_accident_travail', period)
rente_accident_travail_base = individu('rente_accident_travail_base', period) * salarie
rente_accident_travail_apres_rachat = individu('rente_accident_travail_apres_rachat', period)

montant_rente_accident_travail = where(rente_accident_travail_rachat != 0, rente_accident_travail_apres_rachat,
rente_accident_travail_base)

return select(
[taux_incapacite < 0.1, taux_incapacite >= 0.1],
[0, montant_rente_accident_travail / 12]
)


class rente_accident_travail_exploitant_agricole(Variable):
value_type = float
entity = Individu
label = u"Montant de la rente d’accident du travail pour les chefs d'exploitation ou d'entreprise agricole"
reference = u"https://www.legifrance.gouv.fr/affichCodeArticle.do?cidTexte=LEGITEXT000006071367&idArticle=LEGIARTI000006598097&dateTexte=&categorieLien=cid"
definition_period = MONTH

def formula(individu, period):
previous_year = period.start.period('year').offset(-1)
non_salarie_agricole = individu('tns_benefice_exploitant_agricole', previous_year, options=[ADD]) != 0
rente_accident_travail_rachat = individu('rente_accident_travail_rachat', period)
taux_incapacite = individu('taux_accident_travail', period)
rente_accident_travail_base = individu('rente_accident_travail_base', period) * non_salarie_agricole
rente_accident_travail_apres_rachat = individu('rente_accident_travail_apres_rachat', period)

montant_rente_accident_travail = where(rente_accident_travail_rachat != 0, rente_accident_travail_apres_rachat,
rente_accident_travail_base)
return select(
[taux_incapacite < 0.3, taux_incapacite >= 0.3],
[0, montant_rente_accident_travail / 12]
)


class indemnite_accident_travail(Variable):
value_type = float
entity = Individu
label = u"Indemnité selon le taux d'incapacité"
reference = u"https://www.legifrance.gouv.fr/affichCode.do?idSectionTA=LEGISCTA000006172216&cidTexte=LEGITEXT000006073189"
definition_period = MONTH

def formula(individu, period, parameters):
indem_at = parameters(period).accident_travail.rente.taux
taux_incapacite = individu('taux_accident_travail', period)

return indem_at.indemnite_accident_travail.baremes.calc(taux_incapacite * 100)


class rente_accident_travail_base(Variable):
value_type = float
entity = Individu
label = u"Montant de base de la rente d’accident du travail"
reference = u"https://www.legifrance.gouv.fr/affichCodeArticle.do?cidTexte=LEGITEXT000006073189&idArticle=LEGIARTI000006743072&dateTexte=&categorieLien=cid"
definition_period = MONTH

def formula(individu, period, parameters):
param_rente_at = parameters(period).accident_travail.rente.taux
taux_incapacite = individu('taux_accident_travail', period)
taux = param_rente_at.bareme.calc(taux_incapacite)
taux_rente_accident_travail = select([taux_incapacite < param_rente_at.taux_minimum], [0], default=taux)
rente_accident_travail_base = individu('rente_accident_travail_salaire_utile', period) * taux_rente_accident_travail

return rente_accident_travail_base


class demande_rachat(Variable):
value_type = bool
entity = Individu
label = u"La victime a demandé le rachat partiel de la rente"
definition_period = MONTH


class rente_accident_travail_apres_rachat(Variable):
value_type = float
entity = Individu
label = u"Rente d’accident du travail, reliquat suite à conversion en capital"
definition_period = MONTH

def formula(individu, period, parameters):
rente_at = parameters(period).accident_travail.rente.taux
age = max_(individu('age', period), 16)
rente_accident_travail_rachat = individu('rente_accident_travail_rachat', period)
conversion_rente_capital = rente_at.capital_representatif[age]
rente_accident_travail_base = individu('rente_accident_travail_base', period)
rente_apres_rachat = rente_accident_travail_base - (rente_accident_travail_rachat / conversion_rente_capital)

return rente_apres_rachat


class rente_accident_travail_rachat(Variable):
value_type = float
entity = Individu
label = u"Rachat de la rente d’accident du travail"
reference = u"https://www.legifrance.gouv.fr/eli/arrete/2016/12/19/AFSS1637858A/jo/texte"
definition_period = MONTH

def formula(individu, period, parameters):
rente_at = parameters(period).accident_travail.rente.taux
demande_rachat = individu('demande_rachat', period)
age = max_(individu('age', period), 16)
conversion_rente_capital = rente_at.capital_representatif[age]
rente_accident_travail_base = individu('rente_accident_travail_base', period)
rachat = (rente_accident_travail_base * conversion_rente_capital) / 4

return rachat * demande_rachat


class pcrtp_nombre_actes_assistance(Variable):
value_type = int
entity = Individu
label = u"Nombre d'actes nécessitant l'assistance d'une tierce personne"
reference = u"https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=6D8F7F6917ADFBDEAFE1D8A432F39229.tplgfr23s_2?idArticle=LEGIARTI000027267037&cidTexte=LEGITEXT000006073189&dateTexte=20181218"
definition_period = MONTH


class pcrtp(Variable):
value_type = float
entity = Individu
label = u"Prestation complémentaire pour recours à tierce personne (PCRTP)"
reference = u"https://www.legifrance.gouv.fr/affichCode.do?idSectionTA=LEGISCTA000006172216&cidTexte=LEGITEXT000006073189"
definition_period = MONTH

def formula(individu, period, parameters):
rente_at = parameters(period).accident_travail.rente.taux
taux_incapacite = individu('taux_accident_travail', period)
pcrtp_nombre_actes_assistance = individu('pcrtp_nombre_actes_assistance', period)
montant_pcrtp = rente_at.pcrtp[pcrtp_nombre_actes_assistance]

return montant_pcrtp * (taux_incapacite >= 0.8)


class rente_accident_travail_salaire_utile(Variable):
value_type = float
entity = Individu
label = u"Salaire utile pour calculer la rente d’accident du travail"
reference = u"https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=7392B9902E4B974EAE8783FAF2D69849.tplgfr30s_1?idArticle=LEGIARTI000006750376&cidTexte=LEGITEXT000006073189&dateTexte=20180823"
definition_period = MONTH

def formula(individu, period, parameters):
previous_year = period.start.period('year').offset(-1)
rente_at = parameters(period).accident_travail.rente

salaire_net = individu('salaire_net', previous_year, options=[ADD])
tns_benefice_exploitant_agricole = individu('tns_benefice_exploitant_agricole', previous_year, options=[ADD])
salaire = max_(salaire_net, tns_benefice_exploitant_agricole)
salaire_net_base = max_(rente_at.salaire_net.salaire_minimum, salaire)
coef = salaire_net_base / rente_at.salaire_net.salaire_minimum
bareme = rente_at.salaire_net.bareme.calc(coef)
return rente_at.salaire_net.salaire_minimum * bareme
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
description: Barème utilisé pour la détermination de rente_accident_travail_salaire_utile (cf. formule)
reference: https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=7392B9902E4B974EAE8783FAF2D69849.tplgfr30s_1?idArticle=LEGIARTI000006750376&cidTexte=LEGITEXT000006073189&dateTexte=20180823
unit: currency
brackets:
- rate:
2018-01-01:
value: 1
threshold:
2018-01-01:
value: 0
- rate:
2018-01-01:
value: 0.3333334
threshold:
2018-01-01:
value: 2
- rate:
2018-01-01:
value: 0
threshold:
2018-01-01:
value: 8
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
description: Salaire minimum des rentes
reference: "https://www.legifrance.gouv.fr/affichCodeArticle.do?cidTexte=LEGITEXT000006073189&idArticle=LEGIARTI000006743072&dateTexte=&categorieLien=cid"
unit: currency
values:
2002-01-01:
value: 15171.24
2003-01-01:
value: 15398.80
2004-01-01:
value: 15660.59
2005-01-01:
value: 15973.78
2006-01-01:
value: 16261.30
2007-01-01:
value: 16554.00
2008-01-01:
value: 16736.09
2008-09-01:
value: 16869.97
2009-04-01:
value: 17038.66
2010-04-01:
value: 17192.00
2011-04-01:
value: 17553.03
2012-04-01:
value: 17921.64
2013-04-01:
value: 18154.62
2016-04-01:
value: 18281.80
2017-04-01:
value: 18336.64
2018-04-01:
value: 18520.00
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
description: Tranches de taux d'accident du travail
unit: currency
brackets:
- rate:
2018-01-01:
value: 0.5
threshold:
2018-01-01:
value: 0
- rate:
2018-01-01:
value: 1.5
threshold:
2018-01-01:
value: 0.5
Loading

0 comments on commit 648ecf5

Please sign in to comment.