1
0
Fork 0
mirror of https://github.com/betagouv/mon-entreprise synced 2025-03-12 23:15:07 +00:00

feat(économie-collaborative): renvoie vers AE ou TI si loyer net au-dessus du plafond RG

#2916

https://github.com/betagouv/mon-entreprise/issues/2916
This commit is contained in:
Jalil Arfaoui 2025-02-03 16:39:27 +01:00
parent 6687db3667
commit 4808d242b9
5 changed files with 92 additions and 7 deletions

View file

@ -1,9 +1,13 @@
location de logement:
location de logement . meublé:
avec:
plafond de loyer autorisé pour le régime général: 77700 €/an
location de logement . meublé . loyer:
location de logement . meublé . loyer . net:
titre: Loyer net
unité: €/an
location de logement . meublé . cotisations:
titre: Cotisations dues pour la location dun logement meublé
@ -11,7 +15,8 @@ location de logement . meublé . cotisations:
produit:
- assiette
- taux de cotisation
non applicable si: loyer . net > 77700 €
unité: €/an
non applicable si: loyer . net > plafond de loyer autorisé pour le régime général
avec:
assiette:

View file

@ -0,0 +1,14 @@
import { PropsWithChildren } from 'react'
import { Message } from '@/design-system'
import { SmallBody } from '@/design-system/typography/paragraphs'
export default function AvertissementDansObjectifDeSimulateur({
children,
}: PropsWithChildren) {
return (
<Message type="error">
<SmallBody>{children}</SmallBody>
</Message>
)
}

View file

@ -7100,6 +7100,37 @@ impôt . taux personnalisé:
question.fr: Quel est votre taux de prélèvement à la source ?
titre.en: personalized rate
titre.fr: taux personnalisé
location de logement:
titre.en: '[automatic] housing rental'
titre.fr: location de logement
location de logement . meublé:
avec:
plafond de loyer autorisé pour le régime général:
titre.en: '[automatic] authorized rent ceiling for the general scheme'
titre.fr: plafond de loyer autorisé pour le régime général
titre.en: '[automatic] furnished'
titre.fr: meublé
location de logement . meublé . cotisations:
avec:
assiette:
titre.en: '[automatic] plate'
titre.fr: assiette
taux de cotisation:
description.en: '[automatic] Contribution rates for short-term furnished
accommodation under the general scheme'
description.fr:
Taux de cotisation pour la location dun logement meublé de
courte durée au régime général
titre.en: '[automatic] General scheme contribution rates'
titre.fr: Taux de cotisation au régime général
titre.en: '[automatic] Contributions payable for renting furnished accommodation'
titre.fr: Cotisations dues pour la location dun logement meublé
location de logement . meublé . loyer:
titre.en: '[automatic] rent'
titre.fr: loyer
location de logement . meublé . loyer . net:
titre.en: '[automatic] Net rent'
titre.fr: Loyer net
plafond sécurité sociale:
avec:
N-1:

View file

@ -1,19 +1,53 @@
import { Trans, useTranslation } from 'react-i18next'
import AvertissementDansObjectifDeSimulateur from '@/components/AvertissementDansObjectifDeSimulateur'
import Value from '@/components/EngineValue/Value'
import { WhenApplicable } from '@/components/EngineValue/WhenApplicable'
import { WhenNotApplicable } from '@/components/EngineValue/WhenNotApplicable'
import SimulateurWarning from '@/components/SimulateurWarning'
import Simulation, {
SimulationGoal,
SimulationGoals,
} from '@/components/Simulation'
import { useEngine } from '@/components/utils/EngineContext'
export default function LocationDeMeublé() {
const engine = useEngine()
const { t } = useTranslation()
return (
<Simulation>
<SimulateurWarning simulateur="location-de-logement-meublé" />
<SimulationGoals legend="Montant de votre loyer net">
<SimulationGoal dottedName="location de logement . meublé . loyer . net" />
<SimulationGoal
dottedName="location de logement . meublé . cotisations"
small
dottedName="location de logement . meublé . loyer . net"
displayedUnit="€/an"
/>
<WhenNotApplicable
dottedName="location de logement . meublé . cotisations"
engine={engine}
>
<AvertissementDansObjectifDeSimulateur>
<Trans>
Vous dépassez le plafond autorisé (
<Value expression="location de logement . meublé . plafond de loyer autorisé pour le régime général" />
) pour déclarer vos revenus de léconomie collaborative avec un
statut social au régime général. Vous devez vous orienter vers les
statuts dautoentrepreneur ou de travailleur indépendant.
</Trans>
{t('')}
</AvertissementDansObjectifDeSimulateur>
</WhenNotApplicable>
<WhenApplicable
dottedName="location de logement . meublé . cotisations"
engine={engine}
>
<SimulationGoal
dottedName="location de logement . meublé . cotisations"
small
/>
</WhenApplicable>
</SimulationGoals>
</Simulation>
)

View file

@ -12,7 +12,7 @@ describe('Économie collaborative', () => {
it('applique correctement labattement et le taux de cotisation', () => {
const e = engine.setSituation({
'location de logement . meublé . loyer . net': '40000 €',
'location de logement . meublé . loyer . net': '40000 €/an',
})
expect(e).toEvaluate(
'location de logement . meublé . cotisations',
@ -22,14 +22,15 @@ describe('Économie collaborative', () => {
it('applique le régime général jusquà 77 700 €', () => {
const e = engine.setSituation({
'location de logement . meublé . loyer . net': '77700 €',
'location de logement . meublé . loyer . net': '77700 €/an',
})
expect(e).toBeApplicable('location de logement . meublé . cotisations')
})
it('napplique pas le régime général si plus de 77 700 €', () => {
const e = engine.setSituation({
'location de logement . meublé . loyer . net': '77701 €',
'location de logement . meublé . loyer . net': '77701 €/an',
})
expect(e).not.toBeApplicable(
'location de logement . meublé . cotisations'
)