mirror of
https://github.com/betagouv/mon-entreprise
synced 2025-03-13 00:25:04 +00:00
feat(économie-collaborative): ne compte pas les 23_000 premiers euros la première année
This commit is contained in:
parent
21d4412701
commit
455eee1cbf
7 changed files with 121 additions and 40 deletions
|
@ -10,8 +10,8 @@ location de logement meublé . courte durée:
|
|||
cotisations:
|
||||
titre: Cotisations dues pour la location d’un logement meublé de courte durée
|
||||
variations:
|
||||
- si: recettes < 23000 €/an
|
||||
alors: 0
|
||||
- si: recettes < seuil de professionalisation
|
||||
alors: 0 €/an
|
||||
- sinon:
|
||||
produit:
|
||||
- assiette
|
||||
|
@ -21,8 +21,20 @@ location de logement meublé . courte durée:
|
|||
|
||||
avec:
|
||||
assiette:
|
||||
valeur: recettes
|
||||
variations:
|
||||
- si: première année
|
||||
alors: assiette première année
|
||||
- sinon: assiette normale
|
||||
abattement: 60%
|
||||
unité: €/an
|
||||
|
||||
avec:
|
||||
assiette première année:
|
||||
formule: recettes - seuil de professionalisation
|
||||
plancher: 0
|
||||
unité: €/an
|
||||
assiette normale: recettes
|
||||
|
||||
taux de cotisation:
|
||||
titre: Taux de cotisation au régime général
|
||||
description: Taux de cotisation pour la location d’un logement meublé de courte durée au régime général
|
||||
|
|
|
@ -1,7 +1,21 @@
|
|||
location de logement meublé:
|
||||
avec:
|
||||
|
||||
date de début d'activité:
|
||||
par défaut: 01/01/2024
|
||||
question: Quand avez-vous commencé la location de meublé ?
|
||||
type: date
|
||||
|
||||
première année:
|
||||
formule: période . début d'année <= date de début d'activité
|
||||
|
||||
seuil de professionalisation: 23000 €/an
|
||||
|
||||
cotisations:
|
||||
non applicable si:
|
||||
est non applicable: location de logement meublé . courte durée . cotisations
|
||||
somme:
|
||||
- courte durée . cotisations
|
||||
|
||||
revenu net:
|
||||
formule: location de logement meublé . courte durée . recettes - cotisations
|
||||
|
|
|
@ -24,10 +24,10 @@ describe('Simulateur de location de meublé', () => {
|
|||
|
||||
it('chiffre les cotisations quand on saisi des revenus', () => {
|
||||
cy.get('input#location_de_logement_meublé___courte_durée___recettes').type(
|
||||
'1000'
|
||||
'25000'
|
||||
)
|
||||
|
||||
cy.get('input#location_de_logement_meublé___cotisations')
|
||||
cy.get('#location_de_logement_meublé___cotisations-value')
|
||||
.should('be.visible')
|
||||
.should('have.lengthOf.at.least', 1)
|
||||
})
|
||||
|
@ -37,7 +37,7 @@ describe('Simulateur de location de meublé', () => {
|
|||
'78000'
|
||||
)
|
||||
|
||||
cy.get('input#location_de_logement_meublé___cotisations').should(
|
||||
cy.get('#location_de_logement_meublé___cotisations-value').should(
|
||||
'not.exist'
|
||||
)
|
||||
|
||||
|
|
|
@ -7100,37 +7100,66 @@ 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é:
|
||||
location de logement meublé:
|
||||
avec:
|
||||
cotisations:
|
||||
titre.en: '[automatic] contributions'
|
||||
titre.fr: cotisations
|
||||
date de début d'activité:
|
||||
question.en: '[automatic] When did you start renting out furnished accommodation?'
|
||||
question.fr: Quand avez-vous commencé la location de meublé ?
|
||||
titre.en: '[automatic] start date'
|
||||
titre.fr: date de début d'activité
|
||||
première année:
|
||||
titre.en: '[automatic] first year'
|
||||
titre.fr: première année
|
||||
revenu net:
|
||||
titre.en: '[automatic] net income'
|
||||
titre.fr: revenu net
|
||||
seuil de professionalisation:
|
||||
titre.en: '[automatic] professionalization threshold'
|
||||
titre.fr: seuil de professionalisation
|
||||
titre.en: '[automatic] rental of furnished accommodation'
|
||||
titre.fr: location de logement meublé
|
||||
location de logement meublé . courte durée:
|
||||
avec:
|
||||
cotisations:
|
||||
avec:
|
||||
assiette:
|
||||
avec:
|
||||
assiette normale:
|
||||
titre.en: '[automatic] standard plate'
|
||||
titre.fr: assiette normale
|
||||
assiette première année:
|
||||
titre.en: '[automatic] first-year base'
|
||||
titre.fr: assiette première année
|
||||
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 d’un 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 short-term furnished rental
|
||||
accommodation'
|
||||
titre.fr: Cotisations dues pour la location d’un logement meublé de courte durée
|
||||
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 d’un 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 d’un 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
|
||||
recettes:
|
||||
résumé.en: '[automatic] Receipts for short-term furnished accommodation or
|
||||
short-term classified tourist accommodation'
|
||||
résumé.fr: Recettes pour un logement meublé de courte durée ou de tourisme
|
||||
classé de courte durée
|
||||
titre.en: '[automatic] revenues'
|
||||
titre.fr: recettes
|
||||
titre.en: '[automatic] short term'
|
||||
titre.fr: courte durée
|
||||
plafond sécurité sociale:
|
||||
avec:
|
||||
N-1:
|
||||
|
|
|
@ -9,6 +9,7 @@ import Simulation, {
|
|||
SimulationGoal,
|
||||
SimulationGoals,
|
||||
} from '@/components/Simulation'
|
||||
import { SimulationValue } from '@/components/Simulation/SimulationValue'
|
||||
import { useEngine } from '@/components/utils/EngineContext'
|
||||
|
||||
export default function LocationDeMeublé() {
|
||||
|
@ -43,10 +44,8 @@ export default function LocationDeMeublé() {
|
|||
dottedName="location de logement meublé . cotisations"
|
||||
engine={engine}
|
||||
>
|
||||
<SimulationGoal
|
||||
dottedName="location de logement meublé . cotisations"
|
||||
small
|
||||
/>
|
||||
<SimulationValue dottedName="location de logement meublé . cotisations" />
|
||||
<SimulationValue dottedName="location de logement meublé . revenu net" />
|
||||
</WhenApplicable>
|
||||
</SimulationGoals>
|
||||
</Simulation>
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
import { SimulationConfig } from '@/domaine/SimulationConfig'
|
||||
|
||||
export const configLocationDeMeublé: SimulationConfig = {
|
||||
'objectifs exclusifs': [],
|
||||
objectifs: [],
|
||||
'objectifs exclusifs': [
|
||||
'location de logement meublé . courte durée . recettes',
|
||||
],
|
||||
objectifs: ['location de logement meublé . cotisations'],
|
||||
'unité par défaut': '€/an',
|
||||
situation: {},
|
||||
}
|
||||
|
|
|
@ -2,6 +2,13 @@ import rules, { DottedName } from 'modele-social'
|
|||
import Engine from 'publicodes'
|
||||
import { beforeEach, describe, expect, it } from 'vitest'
|
||||
|
||||
import { Situation } from '@/domaine/Situation'
|
||||
|
||||
const situationParDéfaut = {
|
||||
date: '01/01/2024à',
|
||||
"location de logement meublé . date de début d'activité": '01/01/2022',
|
||||
} satisfies Situation
|
||||
|
||||
describe('Économie collaborative', () => {
|
||||
describe('Location de meublé', () => {
|
||||
describe('Courte durée', () => {
|
||||
|
@ -12,6 +19,7 @@ describe('Économie collaborative', () => {
|
|||
|
||||
it('applique correctement l’abattement et le taux de cotisation', () => {
|
||||
const e = engine.setSituation({
|
||||
...situationParDéfaut,
|
||||
'location de logement meublé . courte durée . recettes': '40000 €/an',
|
||||
})
|
||||
expect(e).toEvaluate(
|
||||
|
@ -22,12 +30,14 @@ describe('Économie collaborative', () => {
|
|||
|
||||
it('applique le régime général jusqu’à 77 700 €', () => {
|
||||
const e = engine.setSituation({
|
||||
...situationParDéfaut,
|
||||
'location de logement meublé . courte durée . recettes': '77700 €/an',
|
||||
})
|
||||
expect(e).toBeApplicable('location de logement meublé . cotisations')
|
||||
})
|
||||
it('n’applique pas le régime général si plus de 77 700 €', () => {
|
||||
it('n’appliquelm leblance pas le régime général si plus de 77 700 €', () => {
|
||||
const e = engine.setSituation({
|
||||
...situationParDéfaut,
|
||||
'location de logement meublé . courte durée . recettes': '77701 €/an',
|
||||
})
|
||||
|
||||
|
@ -37,11 +47,26 @@ describe('Économie collaborative', () => {
|
|||
})
|
||||
it('ne compte aucune cotisation en-dessous de 23 000 € de recettes', () => {
|
||||
const e = engine.setSituation({
|
||||
...situationParDéfaut,
|
||||
'location de logement meublé . courte durée . recettes': '22000 €/an',
|
||||
})
|
||||
|
||||
expect(e).toEvaluate('location de logement meublé . cotisations', 0)
|
||||
})
|
||||
it('ne compte pas les 23 000 premiers € de recettes la première année', () => {
|
||||
const e = engine.setSituation({
|
||||
...situationParDéfaut,
|
||||
'location de logement meublé . courte durée . recettes': '24000 €/an',
|
||||
"location de logement meublé . date de début d'activité":
|
||||
'01/02/2025',
|
||||
})
|
||||
|
||||
const cotisations = e.evaluate(
|
||||
'location de logement meublé . cotisations'
|
||||
).nodeValue
|
||||
|
||||
expect(cotisations).toBeLessThan(24_000 - 23_000)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Add table
Reference in a new issue