From 96e7526070e9429b371c1aef9afc2d6aa972dd6e Mon Sep 17 00:00:00 2001
From: sandcha <sandcha@users.noreply.github.com>
Date: Mon, 3 Mar 2025 12:28:31 +0100
Subject: [PATCH] =?UTF-8?q?Extrait=20les=20strates=20d=C3=A9mographiques?=
 =?UTF-8?q?=20dans=20un=20param=C3=A8tre=20groupes=20d=C3=A9mographiques?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Nommé tel que l'évoque la loi
Adapte la variable strate_demographique en fonction
---
 .../population/groupes_demographiques.yaml    | 97 +++++++++++++++++++
 .../variables/population.py                   | 21 +---
 2 files changed, 99 insertions(+), 19 deletions(-)
 create mode 100644 openfisca_france_dotations_locales/parameters/population/groupes_demographiques.yaml

diff --git a/openfisca_france_dotations_locales/parameters/population/groupes_demographiques.yaml b/openfisca_france_dotations_locales/parameters/population/groupes_demographiques.yaml
new file mode 100644
index 0000000..8779439
--- /dev/null
+++ b/openfisca_france_dotations_locales/parameters/population/groupes_demographiques.yaml
@@ -0,0 +1,97 @@
+description: Groupes démographiques des communes déterminés en fonction de l'importance de leur population \
+  (autrement désignés par strates démographiques)
+metadata:
+  type: single_amount
+  reference: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000033878299
+  # la référence définit les seuils mais pas de numéro de groupe (strate) qu'on déduit ici
+brackets:
+- amount:
+    2017-01-01:
+      value: 1
+  threshold:
+    2017-01-01:
+      value: 0
+- amount:
+    2017-01-01:
+      value: 2
+  threshold:
+    2017-01-01:
+      value: 500
+- amount:
+    2017-01-01:
+      value: 3
+  threshold:
+    2017-01-01:
+      value: 1_000
+- amount:
+    2017-01-01:
+      value: 4
+  threshold:
+    2017-01-01:
+      value: 2_000
+- amount:
+    2017-01-01:
+      value: 5
+  threshold:
+    2017-01-01:
+      value: 3_500
+- amount:
+    2017-01-01:
+      value: 6
+  threshold:
+    2017-01-01:
+      value: 5_000
+- amount:
+    2017-01-01:
+      value: 7
+  threshold:
+    2017-01-01:
+      value: 7_500
+- amount:
+    2017-01-01:
+      value: 8
+  threshold:
+    2017-01-01:
+      value: 10_000
+- amount:
+    2017-01-01:
+      value: 9
+  threshold:
+    2017-01-01:
+      value: 15_000
+- amount:
+    2017-01-01:
+      value: 10
+  threshold:
+    2017-01-01:
+      value: 20_000
+- amount:
+    2017-01-01:
+      value: 11
+  threshold:
+    2017-01-01:
+      value: 35_000
+- amount:
+    2017-01-01:
+      value: 12
+  threshold:
+    2017-01-01:
+      value: 50_000
+- amount:
+    2017-01-01:
+      value: 13
+  threshold:
+    2017-01-01:
+      value: 75_000
+- amount:
+    2017-01-01:
+      value: 14
+  threshold:
+    2017-01-01:
+      value: 100_000
+- amount:
+    2017-01-01:
+      value: 15
+  threshold:
+    2017-01-01:
+      value: 200_000
diff --git a/openfisca_france_dotations_locales/variables/population.py b/openfisca_france_dotations_locales/variables/population.py
index b6f6635..2e3a0e6 100644
--- a/openfisca_france_dotations_locales/variables/population.py
+++ b/openfisca_france_dotations_locales/variables/population.py
@@ -16,25 +16,8 @@ class strate_demographique(Variable):
 
     def formula(commune, period, parameters):
         pop = commune('population_dgf', period)
-
-        return (
-            + 1 * (pop <= 499)
-            + 2 * (499 < pop) * (pop <= 999)
-            + 3 * (999 < pop) * (pop <= 1999)
-            + 4 * (1999 < pop) * (pop <= 3499)
-            + 5 * (3499 < pop) * (pop <= 4999)
-            + 6 * (4999 < pop) * (pop <= 7499)
-            + 7 * (7499 < pop) * (pop <= 9999)
-            + 8 * (9999 < pop) * (pop <= 14999)
-            + 9 * (14999 < pop) * (pop <= 19999)
-            + 10 * (19999 < pop) * (pop <= 34999)
-            + 11 * (34999 < pop) * (pop <= 49999)
-            + 12 * (49999 < pop) * (pop <= 74999)
-            + 13 * (74999 < pop) * (pop <= 99999)
-            + 14 * (99999 < pop) * (pop <= 199999)
-            + 15 * (199999 < pop)
-            )
-
+        bareme_strates_demographiques = parameters(period).population.groupes_demographiques
+        return bareme_strates_demographiques.calc(pop)
 
 class population_insee(Variable):
     value_type = int
-- 
GitLab