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

Tests #35

Merged
merged 17 commits into from
Mar 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions app/faq/FAQ.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,16 @@
id: fenetre
réponse: |
Une fenêtre, dans le parcours gestes, c'est une petite fenêtre ? Une baie vitrée, ça compte pour combien de fenêtres ? Car le coût n'est pas le même entre une lucarne et une baie vitrée !
- question: Que met-on dans l'enveloppe des travaux MaPrimeRénov' accompagnée ?
catégorie: accompagnée
id: enveloppe
réponse: |
Si à l'occasion de mes travaux, j'isole par l'intérieur ma cuisine, et je suis donc plus ou moins contraint à la refaire (ou tout du moins, c'est une bonne ocasion), dois-je écarte de l'enveloppe MPRA (MaPrimeRénov accompagnée) les dépenses concernant la cuisine, qui d'ailleurs ne seront pas assujetties à une TVA de 5,5 % ?

Plus précisément, si des travaux sont partagés entre isolation et confort, où les mettre ?

La page ["La TVA à taux réduit"](https://www.anah.gouv.fr/sites/default/files/2024-02/202402_Guide_des_aides_WEBA.pdf#page=32) donne des éléments de réponse, à creuser pour donner une réponse claire.

Le jeu de test ANAH nous donne aussi des indices : il semble bien que MPRA est souvent appliquée sur la totalité d'enveloppes qui comporte plus que 5 % de TVA, par exemple la ligne `32188`, ce qui laisse penser que l'assiette MPRA peut en effet contenir des travaux à la TVA de 10 %, donc des travaux qui ne sont pas strictement de l'amélioration de la performance énergétique !

Exemple précis : je fais l'isolation par l'intérieur de ma maison sur 2 faces. Je dois donc refaire la peinture, c'est automatique. Est-ce que la peinture est incluse dans l'assiette MPRA ?
94 changes: 94 additions & 0 deletions app/personas/Tests.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
import { Section } from '@/components/UI'
import rawTests from '@/app/règles/tests.csv'
import { GreenCell, Table } from './TestsUI'
import rules from '@/app/règles/rules'
import Publicodes from 'publicodes'
import { formatValue } from '@/node_modules/publicodes/dist/index'
import Link from 'next/link'
import useSetSearchParams from '@/components/useSetSearchParams'
import { encodeSituation } from '@/components/publicodes/situationUtils'

const tests = rawTests.filter((test) => test['aide complémentaire'] === 0)

const engine = new Publicodes(rules)

export default function Tests() {
return (
<Section>
<h2>Tests</h2>
<p>
Pour assurer la fiabilité de notre modèle de calcul, voici une liste de
tests effectués via un modèle tiers.
</p>
<Table>
<thead>
<tr>
<th scope="col">Classe de revenu</th>
<th scope="col">Sauts DPE</th>
<th scope="col">Travaux HT</th>
<th scope="col">Bonus passoire</th>
<th scope="col">Aide MPR-A test</th>
<th scope="col">Aide MPR-A recalculée</th>
</tr>
</thead>
<tbody>
{tests.map((test) => {
const situation = {
travaux: test['montant de travaux HT'],
'travaux . TTC': test['montant de travaux TTC'],
investissement: 9999999, //TODO dirty, this happens because "plafond" still applies to a rule for which we set a value
sauts: test['saut de classe'],
'MPR . accompagnée . bonus . condition':
test['bonus passoire'] === '0,1' ? 'oui' : 'non',
'ménage . revenu . classe': `"${
{
TMO: 'très modeste',
MO: 'modeste',
INT: 'intermédiaire',
SUP: 'supérieure',
}[test['ressource ménage']]
}"`,
}
console.log(situation)
const evaluation = engine
.setSituation(situation)
.evaluate('MPR . accompagnée')

const value = formatValue(evaluation)

const expectedValue = test['aide MPR']

const valid =
Math.round(evaluation.nodeValue) ===
Math.round(
typeof expectedValue === 'string'
? expectedValue.replace(',', '.')
: expectedValue,
)
return (
<tr key={JSON.stringify(test)}>
<td>{test['ressource ménage']}</td>
<td>{test['saut de classe']}</td>
<td>{test['montant de travaux HT']} €</td>
<td>{test['bonus passoire']}</td>
<td>{expectedValue} €</td>

{valid ? <GreenCell>{value}</GreenCell> : <td>{value}</td>}
<td>
<Link
href={
'/documentation/MPR/accompagnée/?' +
new URLSearchParams(encodeSituation(situation)).toString()
}
>
Inspection
</Link>
</td>
</tr>
)
})}
</tbody>
</Table>
</Section>
)
}
13 changes: 13 additions & 0 deletions app/personas/TestsUI.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
'use client'
import styled from 'styled-components'

export const Table = styled.table`
width: 100%;
td {
text-align: center;
}
`

export const GreenCell = styled.td`
background: #c4fad5;
`
2 changes: 2 additions & 0 deletions app/personas/page.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import Footer from '@/components/Footer'
import { Suspense } from 'react'
import Personas from '../Personas'
import Tests from './Tests'

export default function PersonasPage() {
return (
<Suspense>
<Personas />
<Tests />
<Footer />
</Suspense>
)
Expand Down
82 changes: 60 additions & 22 deletions app/règles/index.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -229,14 +229,17 @@ DPE . actuel . efficace:
DPE . actuel:
titre: Votre DPE actuel
question: Quel est le DPE actuel de votre logement ?
sous-titre: Si vous ne le connaissez pas, n'hésitez pas à faire des tests, cela ne vous engage pas.
description: |
Le DPE, c'est le Diagnostic de Performance Énergétique de votre logement.

Il mesure d'un côté l'énergie nécessaire pour y maintenir une température standard, et de l'autre l'empreinte climat associée.

Le DPE est exprimé comme une note de A (très bon) à G (passoire thermique).

Si vous ne connaissez pas le DPE actuel de votre logement, vous pourrez en trouver une estimation en 2 clics avec le service [Go Renov](https://particulier.gorenove.fr).
Si votre logement n'a pas de DPE, ou s'il date d'avant septembre 2021, date de mise en place du nouveau DPE, [il vous faudra le faire réaliser](https://www.economie.gouv.fr/particuliers/immobilier-diagnostic-performance-energetique-dpe) pour obtenir une aide MaPrimeRénov'. Son prix n'est pas réglementé mais varie entre 120 et 300 €.

Cela dit, **n'hésitez pas à faire une simulation avec un DPE estimé** : aucune saisie faite sur Mes Aides Réno ne vous engage à quoique ce soit. Vous pourrez obtenir une estimation de votre DPE en 2 clics avec le service [Go Renov](https://particulier.gorenove.fr).
par défaut:
variations:
- si: simulation . mode = 'moyen'
Expand Down Expand Up @@ -322,10 +325,14 @@ travaux:
# Elle n'est pas lisible directement, elle résulte d'une inversion de formule à la main
# Car il semble y avoir un bug résultant d'un choc entre les mécanismes `plafond` et `résoudre la référence circulaire`
# https://github.com/publicodes/publicodes/issues/443
formule: investissement / (1 - MPR . accompagnée . pourcent écrêté)
plafond: investissement + MPR . accompagnée . pourcent écrêté * travaux . plafond
formule: investissement / (1 - MPR . accompagnée . pourcent dont bonus)
plafond: investissement + MPR . accompagnée . pourcent dont bonus * travaux . plafond
résoudre la référence circulaire: oui

travaux . TTC:
formule: travaux * 1.055
description: Nous considérons par défaut que les travaux de l'enveloppe concernent tous de la performance énergétique, ou des travaux liés tels que définis [sur cette page "TVA à taux réduit"](https://www.anah.gouv.fr/sites/default/files/2024-02/202402_Guide_des_aides_WEBA.pdf#page=32), et donc assujettis à un taux réduit de 5,5 %.

MPR . accompagnée . avance:
applicable si:
une de ces conditions:
Expand All @@ -334,9 +341,44 @@ MPR . accompagnée . avance:
formule: 0.7 * montant

MPR . accompagnée . montant:
formule: pourcent écrêté * travaux . plafonnés
formule: montant écrêté
unité: €

MPR . accompagnée . montant écrêté:
description: |
L'écrêtement fixe une limite maximum de subvention par la puissance publique en % des travaux *toutes taxes comprises (TTC)*.

Si le montant total des aides était amené à dépasser le pourcentage d'écrêtement, alors c'est MaPrimeRénov' accompagnée qui serait réduite pour ne pas le dépasser, comme cela est expliqué dans les notes de bas de page de [ce tableau expliquant les cumuls](https://www.anah.gouv.fr/sites/default/files/2024-02/202402_Guide_des_aides_WEBA.pdf#page=25).

> Cela dit, le modèle actuel Mes Aides Réno ne donne pas encore la possibilité de calculer les autres aides, hors MPR (MaPrimeRénov').

Prenons l'exemple simple sans cumule, pour des travaux de 70 000 €, et un ménage qui peut bénéficier de 35 % d'aide MaPrimeRénov' accompagnée, bonifiée pour une sortie de passoire de 10 %, soit 45 %. L'assiette de l'aide est de 70 000 € pour un gain de 4 classes de DPE : notre citoyen a limité sa dépense totale au montant maximum couvert par MaPrimeRénov Accompagnée.

L'écrêtement se fait à 40 %, mais *sur l'enveloppe TTC des dépenses*. Ainsi, dans notre cas, les 45 % d'aide seront rabaissés à 40 %... mais le 40 % est appliqué à l'enveloppe avec TVA, soit 70 000 * 105,5 % = 73 850 €, donc un écrêtement à 29 540 €, là où l'aide était de 70 000 * 45 % = 31 500 €. L'écrêtement n'a donc pas pour effet de baisser l'aide de 10 %, mais d'un montant moindre.

L'écrêtement se fait sur ["*la dépense TTC*"](https://www.anah.gouv.fr/sites/default/files/2024-02/202402_Guide_des_aides_WEBA.pdf#page=24), donc s'il avait fait une dépense totale de 100 000 €, même si l'aide MPR-A a pour assiette un plafond de 70 000 €, l'écrêtement se ferait sur 100 000 € HT + TVA.

valeur: montant avant écrêtement
plafond: pourcent d'écrêtement * travaux . TTC

MPR . accompagnée . montant avant écrêtement:
formule: pourcent dont bonus * travaux . plafonnés

MPR . accompagnée . pourcent d'écrêtement:
titre: Taux maximum toutes aides sur enveloppe TTC
description: |
Le taux maximum toutes aides confondu ne peut pas dépasser un certain pourcentage de l'enveloppe de travaux, et ce pourcentage dépend de votre classe de revenu.

Il se calcule sur l'enveloppe **TTC**.
variations:
- si: ménage . revenu . classe = 'très modeste'
alors: 100 %
- si: ménage . revenu . classe = 'modeste'
alors: 80 %
- si: ménage . revenu . classe = 'intermédiaire'
alors: 60 %
- sinon: 40 %

investissement:
titre: Votre investissement
description: |
Expand Down Expand Up @@ -387,6 +429,20 @@ MPR . choix:
- 'accompagnée'
- 'non accompagnée'

MPR . non accompagnée . pourcentage d'écrêtement:
description: |
Semble s'appliquer sur la dépense HT. Ce n'est pas dit explicitement, mais on le déduit du fait que le TTC est clairement précisé pour l'écrêtement de MPR accompagnée.

Pour le détail de cet écrêtement, voir [cette page du guide complet PDF ANAH](https://www.anah.gouv.fr/sites/default/files/2024-02/202402_Guide_des_aides_WEBA.pdf#page=24).
variations:
- si: ménage . revenu . classe = 'très modeste'
alors: 90 %
- si: ménage . revenu . classe = 'modeste'
alors: 75 %
- si: ménage . revenu . classe = 'intermédiaire'
alors: 60 %
- sinon: 40 %

MPR . non accompagnée . conditions excluantes:
une de ces conditions:
- ménage . revenu . classe = "supérieure"
Expand Down Expand Up @@ -439,11 +495,6 @@ MPR . accompagnée . bonus:
applicable si: condition
valeur: 10 %

MPR . accompagnée . écrêté: pourcent dont bonus > écrêtement
MPR . accompagnée . pourcent écrêté:
valeur: pourcent dont bonus
plafond: écrêtement

MPR . accompagnée . pourcent dont bonus: pourcent brut + bonus

MPR . accompagnée . sauts minimum: 2
Expand Down Expand Up @@ -472,19 +523,6 @@ MPR . accompagnée . pourcent brut:

En 2024, c'est l'ANAH qui gère directement les CEE, en toute transparence pour le citoyen.

MPR . accompagnée . écrêtement:
titre: Taux maximum toutes aides
description: |
Le taux maximum toutes aides confondu ne peut pas dépasser un certain pourcentage de l'enveloppe de travaux, et ce pourcentage dépend de votre classe de revenu.
variations:
- si: ménage . revenu . classe = 'très modeste'
alors: 100 %
- si: ménage . revenu . classe = 'modeste'
alors: 80 %
- si: ménage . revenu . classe = 'intermédiaire'
alors: 60 %
- sinon: 40 %

PTZ:
applicable si:
toutes ces conditions:
Expand Down
Loading