From f12db266d19568b2063fdda002d3e84c1a48bac2 Mon Sep 17 00:00:00 2001
From: Jalil Arfaoui <jalil@arfaoui.net>
Date: Mon, 10 Feb 2025 23:56:56 +0100
Subject: [PATCH] =?UTF-8?q?feat(=C3=A9conomie-collaborative):=20prend=20en?=
 =?UTF-8?q?=20compte=20le=20taux=20de=20cotisation=20Alsace-Moselle?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../location-de-meublé/courte-durée.publicodes |  5 ++++-
 .../location-de-meublé.publicodes             | 16 ++++++++++++++
 site/source/locales/rules-en.yaml             | 12 ++++++++++
 .../économie-collaborative.test.ts            | 22 ++++++++++++++-----
 4 files changed, 49 insertions(+), 6 deletions(-)

diff --git a/modele-social/règles/économie-collaborative/location-de-meublé/courte-durée.publicodes b/modele-social/règles/économie-collaborative/location-de-meublé/courte-durée.publicodes
index 49376cbc3..553807210 100644
--- a/modele-social/règles/économie-collaborative/location-de-meublé/courte-durée.publicodes
+++ b/modele-social/règles/économie-collaborative/location-de-meublé/courte-durée.publicodes
@@ -38,4 +38,7 @@ location de logement meublé . courte durée:
         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
-          valeur: 47.42%
+          variations:
+            - si: zone géographique . Alsace-Moselle
+              alors: 48.72%
+            - sinon:  47.42%
diff --git a/modele-social/règles/économie-collaborative/location-de-meublé/location-de-meublé.publicodes b/modele-social/règles/économie-collaborative/location-de-meublé/location-de-meublé.publicodes
index eb5d0f40c..c3e79e141 100644
--- a/modele-social/règles/économie-collaborative/location-de-meublé/location-de-meublé.publicodes
+++ b/modele-social/règles/économie-collaborative/location-de-meublé/location-de-meublé.publicodes
@@ -19,3 +19,19 @@ location de logement meublé:
 
     revenu net:
       formule: location de logement meublé . courte durée . recettes - cotisations
+
+    zone géographique:
+      question: Quelle est votre zone géographique ?
+      une possibilité:
+        possibilités:
+          - Alsace-Moselle
+          - autre
+        choix obligatoire: oui
+      par défaut: "'autre'"
+      avec:
+        Alsace-Moselle:
+          titre: Bas-Rhin, Haut-Rhin ou Moselle
+          valeur: zone géographique = 'Alsace-Moselle'
+        autre:
+          titre: Autre département
+          valeur: zone géographique = 'autre'
diff --git a/site/source/locales/rules-en.yaml b/site/source/locales/rules-en.yaml
index 7a65784cb..e9a040978 100644
--- a/site/source/locales/rules-en.yaml
+++ b/site/source/locales/rules-en.yaml
@@ -7119,6 +7119,18 @@ location de logement meublé:
     seuil de professionalisation:
       titre.en: '[automatic] professionalization threshold'
       titre.fr: seuil de professionalisation
+    zone géographique:
+      avec:
+        Alsace-Moselle:
+          titre.en: '[automatic] Bas-Rhin, Haut-Rhin or Moselle'
+          titre.fr: Bas-Rhin, Haut-Rhin ou Moselle
+        autre:
+          titre.en: '[automatic] Other department'
+          titre.fr: Autre département
+      question.en: '[automatic] What is your geographical area?'
+      question.fr: Quelle est votre zone géographique ?
+      titre.en: '[automatic] geographical area'
+      titre.fr: zone géographique
   titre.en: '[automatic] rental of furnished accommodation'
   titre.fr: location de logement meublé
 location de logement meublé . courte durée:
diff --git a/site/test/modele-social/économie-collaborative.test.ts b/site/test/modele-social/économie-collaborative.test.ts
index c228d6873..a75d32317 100644
--- a/site/test/modele-social/économie-collaborative.test.ts
+++ b/site/test/modele-social/économie-collaborative.test.ts
@@ -4,10 +4,7 @@ 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
+const situationParDéfaut = {} satisfies Situation
 
 describe('Économie collaborative', () => {
 	describe('Location de meublé', () => {
@@ -22,12 +19,27 @@ describe('Économie collaborative', () => {
 					...situationParDéfaut,
 					'location de logement meublé . courte durée . recettes': '40000 €/an',
 				})
+
 				expect(e).toEvaluate(
 					'location de logement meublé . cotisations',
 					7587.2
 				)
 			})
 
+			it('prend en compte le taux de cotisation spécial pour le Bas-Rhin, le Haut-Rhin et la Moselle', () => {
+				const e = engine.setSituation({
+					...situationParDéfaut,
+					'location de logement meublé . courte durée . recettes': '40000 €/an',
+					'location de logement meublé . zone géographique': 'Alsace-Moselle',
+				})
+
+				const cotisations = e.evaluate(
+					'location de logement meublé . cotisations'
+				).nodeValue
+
+				expect(cotisations).toEqual(7_587.2)
+			})
+
 			it('applique le régime général jusqu’à 77 700 €', () => {
 				const e = engine.setSituation({
 					...situationParDéfaut,
@@ -35,7 +47,7 @@ describe('Économie collaborative', () => {
 				})
 				expect(e).toBeApplicable('location de logement meublé . cotisations')
 			})
-			it('n’appliquelm leblance pas le régime général si plus de 77 700 €', () => {
+			it('n’applique 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',