From 9d14a9b59d4a2d3567107f050e0ce86c9372360f Mon Sep 17 00:00:00 2001 From: Maxime Quandalle Date: Sat, 23 Dec 2023 08:49:34 +0100 Subject: [PATCH] MAJ publicodes v1-rc5 --- package-aides-velo/package-lock.json | 151 ++-------------- package-aides-velo/package.json | 2 +- package-lock.json | 8 +- package.json | 2 +- src/aides.yaml | 170 ++++++++++-------- src/lib/components/Questions.svelte | 4 +- src/lib/components/RevenuSelector.svelte | 11 +- src/lib/engine.js | 4 + src/lib/stores.js | 2 +- .../ville/[slug]/ExplanationsText.svelte | 1 - 10 files changed, 122 insertions(+), 233 deletions(-) diff --git a/package-aides-velo/package-lock.json b/package-aides-velo/package-lock.json index f38bb86..86b5f57 100644 --- a/package-aides-velo/package-lock.json +++ b/package-aides-velo/package-lock.json @@ -1,15 +1,15 @@ { "name": "aides-velo", - "version": "3.0.11", + "version": "3.0.32", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "aides-velo", - "version": "3.0.11", + "version": "3.0.32", "license": "AGPL-3.0-or-later", "dependencies": { - "publicodes": "=1.0.0-beta.44" + "publicodes": "^1.0.0-beta.70" }, "devDependencies": { "@etalab/decoupage-administratif": "^3.0.0", @@ -666,11 +666,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, "node_modules/common-path-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", @@ -816,11 +811,6 @@ "node": ">=8" } }, - "node_modules/discontinuous-range": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", - "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==" - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -1506,38 +1496,12 @@ "node": "*" } }, - "node_modules/moo": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", - "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==" - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/nearley": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", - "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", - "dependencies": { - "commander": "^2.19.0", - "moo": "^0.5.0", - "railroad-diagrams": "^1.0.0", - "randexp": "0.4.6" - }, - "bin": { - "nearley-railroad": "bin/nearley-railroad.js", - "nearley-test": "bin/nearley-test.js", - "nearley-unparse": "bin/nearley-unparse.js", - "nearleyc": "bin/nearleyc.js" - }, - "funding": { - "type": "individual", - "url": "https://nearley.js.org/#give-to-nearley" - } - }, "node_modules/nofilter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", @@ -1832,17 +1796,9 @@ } }, "node_modules/publicodes": { - "version": "1.0.0-beta.44", - "resolved": "https://registry.npmjs.org/publicodes/-/publicodes-1.0.0-beta.44.tgz", - "integrity": "sha512-5XnzD49570ijdUrl9blm1nJNC5rNgCFlWds5g77u6xCkSZjuIhbnfQAwNkwsotlGGT1yB1fZtT3VIjugsUef2Q==", - "dependencies": { - "moo": "^0.5.1", - "nearley": "^2.19.2", - "yaml": "^1.9.2" - }, - "engines": { - "node": ">=12.16.1" - }, + "version": "1.0.0-rc.5", + "resolved": "https://registry.npmjs.org/publicodes/-/publicodes-1.0.0-rc.5.tgz", + "integrity": "sha512-y5ZxhiBDf/GjSPE9iwoSlcwFNogqhxwl45LrVrGuWeIORgdALTdtHQaPgItQpaKVRSdsZei2GoCnsAIfqLCTJw==", "peerDependencies": { "@types/mocha": "^9.0.0" } @@ -1867,23 +1823,6 @@ } ] }, - "node_modules/railroad-diagrams": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", - "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==" - }, - "node_modules/randexp": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", - "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", - "dependencies": { - "discontinuous-range": "1.0.0", - "ret": "~0.1.10" - }, - "engines": { - "node": ">=0.12" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -1943,14 +1882,6 @@ "node": ">=8" } }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "engines": { - "node": ">=0.12" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -2430,14 +2361,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, "node_modules/yargs": { "version": "17.7.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", @@ -2966,11 +2889,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, "common-path-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", @@ -3080,11 +2998,6 @@ "path-type": "^4.0.0" } }, - "discontinuous-range": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", - "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==" - }, "eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -3562,28 +3475,12 @@ "brace-expansion": "^1.1.7" } }, - "moo": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", - "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "nearley": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", - "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", - "requires": { - "commander": "^2.19.0", - "moo": "^0.5.0", - "railroad-diagrams": "^1.0.0", - "randexp": "0.4.6" - } - }, "nofilter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", @@ -3780,14 +3677,10 @@ } }, "publicodes": { - "version": "1.0.0-beta.44", - "resolved": "https://registry.npmjs.org/publicodes/-/publicodes-1.0.0-beta.44.tgz", - "integrity": "sha512-5XnzD49570ijdUrl9blm1nJNC5rNgCFlWds5g77u6xCkSZjuIhbnfQAwNkwsotlGGT1yB1fZtT3VIjugsUef2Q==", - "requires": { - "moo": "^0.5.1", - "nearley": "^2.19.2", - "yaml": "^1.9.2" - } + "version": "1.0.0-rc.5", + "resolved": "https://registry.npmjs.org/publicodes/-/publicodes-1.0.0-rc.5.tgz", + "integrity": "sha512-y5ZxhiBDf/GjSPE9iwoSlcwFNogqhxwl45LrVrGuWeIORgdALTdtHQaPgItQpaKVRSdsZei2GoCnsAIfqLCTJw==", + "requires": {} }, "queue-microtask": { "version": "1.2.3", @@ -3795,20 +3688,6 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, - "railroad-diagrams": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", - "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==" - }, - "randexp": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", - "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", - "requires": { - "discontinuous-range": "1.0.0", - "ret": "~0.1.10" - } - }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -3850,11 +3729,6 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -4186,11 +4060,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - }, "yargs": { "version": "17.7.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", diff --git a/package-aides-velo/package.json b/package-aides-velo/package.json index a3f58b3..79d6b1e 100644 --- a/package-aides-velo/package.json +++ b/package-aides-velo/package.json @@ -40,6 +40,6 @@ "typescript": "^5.0.4" }, "dependencies": { - "publicodes": "=1.0.0-beta.44" + "publicodes": "^1.0.0-beta.70" } } diff --git a/package-lock.json b/package-lock.json index da09151..ea2c058 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "jsdom": "^23.0.1", "playwright-aws-lambda": "^0.10.0", "playwright-core": "^1.40.1", - "publicodes": "=1.0.0-beta.70" + "publicodes": "^1.0.0-rc.5" }, "devDependencies": { "@actions/core": "^1.10.1", @@ -3275,9 +3275,9 @@ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" }, "node_modules/publicodes": { - "version": "1.0.0-beta.70", - "resolved": "https://registry.npmjs.org/publicodes/-/publicodes-1.0.0-beta.70.tgz", - "integrity": "sha512-Aj/B/EnbH4HGM3E+8bq1I5KJvIQ0q5+GauygZT5ynJK7AytDnoAx6pKJnn9uzxTNAAzGsYpxxVinXi7UCxnftA==", + "version": "1.0.0-rc.5", + "resolved": "https://registry.npmjs.org/publicodes/-/publicodes-1.0.0-rc.5.tgz", + "integrity": "sha512-y5ZxhiBDf/GjSPE9iwoSlcwFNogqhxwl45LrVrGuWeIORgdALTdtHQaPgItQpaKVRSdsZei2GoCnsAIfqLCTJw==", "peerDependencies": { "@types/mocha": "^9.0.0" } diff --git a/package.json b/package.json index 0a2115c..76ac60c 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "jsdom": "^23.0.1", "playwright-aws-lambda": "^0.10.0", "playwright-core": "^1.40.1", - "publicodes": "=1.0.0-beta.70" + "publicodes": "^1.0.0-rc.5" }, "overrides": { "vite": { diff --git a/src/aides.yaml b/src/aides.yaml index 1e26c31..f2a1816 100644 --- a/src/aides.yaml +++ b/src/aides.yaml @@ -114,9 +114,9 @@ aides . ile de france: jusqu’à un plafond de $plafond. applicable si: localisation . région = '11' valeur: 50% * vélo . prix - plafond: - valeur: - nom: $plafond + plafond: $plafond + avec: + $plafond: variations: - si: vélo . cargo électrique alors: 600 € @@ -131,12 +131,13 @@ aides . ile de france: - si: toutes ces conditions: - vélo . mécanique simple - - nom: pour un jeune - question: Le bénéficiaire a t-il entre 15 et 25 ans ? - type: booléen - par défaut: oui + - bénéficiaire jeune alors: 100 € - sinon: 0 € + bénéficiaire jeune: + question: Le bénéficiaire a t-il entre 15 et 25 ans ? + type: booléen + par défaut: oui lien: https://www.iledefrance-mobilites.fr/le-reseau/services-de-mobilite/velo/prime-achat-velo aides . occitanie: @@ -216,16 +217,17 @@ aides . paris: - si: vélo . mécanique alors: 33% * vélo . prix . HT - sinon: 100% * vélo . prix . HT - plafond: - nom: $plafond - variations: - - si: vélo . cargo - alors: 600€ - - si: vélo . électrique - alors: 400€ - - si: vélo . motorisation - alors: 400€ - - sinon: 0€ + plafond: $plafond + avec: + $plafond: + variations: + - si: vélo . cargo + alors: 600€ + - si: vélo . électrique + alors: 400€ + - si: vélo . motorisation + alors: 400€ + - sinon: 0€ lien: https://www.paris.fr/pages/lutte-contre-la-pollution-les-aides-a-la-mobilite-5373 aides . saint-étienne: @@ -723,21 +725,24 @@ aides . pays de la loire: - une de ces conditions: - vélo . pliant - vélo . électrique - - nom: abonné TER - question: Êtes-vous abonnés du TER Pays de la Loire ? - description: | - Sont éligibles les abonnés Tutti illimité, Métrocéane mensuels, les - abonnés annuels de Loire-Atlantique, Maine et Loire et Sarthe, ainsi - que les abonnés mensuels des réseaux de Mayenne et Vendée (hors - scolaires). - type: booléen - par défaut: oui + - abonné TER description: | Cette aide à l’achat d’un $vélo est reservée aux abonnés du TER Pays de la Loire. valeur: 50% * vélo . prix plafond: 200€ lien: https://www.paysdelaloire.fr/les-aides/aide-lachat-dun-velo-pliant-ou-assistance-electrique-vae-pour-les-abonnes-aleop + avec: + abonné TER: + question: Êtes-vous abonnés du TER Pays de la Loire ? + description: | + Sont éligibles les abonnés Tutti illimité, Métrocéane mensuels, les + abonnés annuels de Loire-Atlantique, Maine et Loire et Sarthe, ainsi + que les abonnés mensuels des réseaux de Mayenne et Vendée (hors + scolaires). + type: booléen + par défaut: oui + aides . nantes: remplace: intercommunalité @@ -2078,14 +2083,16 @@ aides . molsheim-mutzig: - localisation . epci = 'CC de la Région de Molsheim-Mutzig' - vélo . électrique variations: - - si: - nom: acheté dans un commerce du territoire - question: Le vélo est-il acheté dans un commerce de la communauté de communes ? - type: booléen - par défaut: non + - si: acheté dans un commerce du territoire alors: 200 € - sinon: 100 € lien: https://www.cc-molsheim-mutzig.fr/velos-a-assistance-electrique.htm + avec: + acheté dans un commerce du territoire: + question: Le vélo est-il acheté dans un commerce de la communauté de communes ? + type: booléen + par défaut: non + # aides . pays rhénan: # remplace: intercommunalité @@ -2215,13 +2222,14 @@ aides . sète: somme: - valeur: 25% * vélo . prix plafond: 200€ - - applicable si: - nom: acheté dans un commerce local - question: Le vélo est-il acheté dans un commerce de Sètre agglopôle méditerranée ? - type: booléen - par défaut: non + - applicable si: acheté dans un commerce local valeur: 50€ lien: https://www.agglopole.fr/bougerdecouvrir/se-deplacer/l-aide-a-l-achat-de-velos-et-trottinettes-electriques/ + avec: + acheté dans un commerce local: + question: Le vélo est-il acheté dans un commerce de Sètre agglopôle méditerranée ? + type: booléen + par défaut: non aides . vauvert: remplace: commune @@ -3016,13 +3024,7 @@ aides . mons en baroeul: jusqu’à $plafond pour ses habitants. Note: Les vélos dédiés exclusivement à des activités de loisirs ne sont pas éligibles (BMX, VTT, vélo de course) - plafond: - valeur: - nom: $plafond - variations: - - si: vélo . électrique - alors: 400 € - - sinon: 200 € + plafond: $plafond variations: - si: vélo . électrique alors: @@ -3060,6 +3062,12 @@ aides . mons en baroeul: plafond: 100€ - sinon: 0€ lien: https://www.monsenbaroeul.fr/vivre-mons-en-baroeul/se-deplacer/demander-ma-prime-velo + avec: + $plafond: + variations: + - si: vélo . électrique + alors: 400 € + - sinon: 200 € aides . annoeullin: remplace: commune @@ -3617,14 +3625,15 @@ aides . châtellrault: - localisation . epci = 'CA Grand Châtellerault' - vélo . électrique variations: - - si: - nom: ancien abonné vélibleu - type: booléen - question: Êtes-vous un ancien abonné Vélibleu d’au moins 6 mois avant le 31 décembre 2021 ? - par défaut: non + - si: ancien abonné vélibleu alors: 300€ - sinon: 200€ lien: https://www.ville-chatellerault.fr/a-votre-service/deplacements/aide-%C3%A0-l-achat-de-v%C3%A9lo + avec: + ancien abonné vélibleu: + type: booléen + question: Êtes-vous un ancien abonné Vélibleu d’au moins 6 mois avant le 31 décembre 2021 ? + par défaut: non aides . grand orb: remplace: intercommunalité @@ -4963,14 +4972,15 @@ aides . saint-avold: - localisation . epci = 'CA Saint-Avold Synergie' - vélo . électrique variations: - - si: - nom: vélo acheté localement - question: Le vélo est-il acheté sur le territoire de l'intercommune Saint-Avold ? - type: booléen - par défaut: non + - si: vélo acheté localement alors: 100€ - sinon: 50€ lien: https://casas57.fr/nos-competences/ma-mobilite/velo/aide-a-lachat-dun-velo/ + avec: + vélo acheté localement: + question: Le vélo est-il acheté sur le territoire de l'intercommune Saint-Avold ? + type: booléen + par défaut: non aides . montigny les metz: remplace: commune @@ -5444,8 +5454,7 @@ aides . amboise: - localisation . code insee = '37003' - vélo . électrique produit: - taux: - variations: + - variations: - si: revenu fiscal de référence <= 500€/mois alors: 50% - si: revenu fiscal de référence <= 800€/mois @@ -5453,8 +5462,7 @@ aides . amboise: - si: revenu fiscal de référence <= 1100€/mois alors: 30% - sinon: 0% - assiette: - valeur: vélo . prix + - valeur: vélo . prix plafond: 1200€ plancher: 200€ lien: https://www.ville-amboise.fr/57-1229/fiche/demande-d-aide-a-l-achat-d-un-velo-electrique.htm @@ -5744,11 +5752,7 @@ aides . portes du luxembourg: - localisation . epci = 'CC des Portes du Luxembourg' - vélo . électrique ou mécanique variations: - - si: - nom: assemblé en France - question: Le vélo est-il conçu et assemblé en France ? - type: booléen - par défaut: non + - si: assemblé en France alors: valeur: 40% * vélo . prix plafond: 300 € @@ -5756,6 +5760,11 @@ aides . portes du luxembourg: valeur: 33% * vélo . prix plafond: 200 € lien: https://www.portesduluxembourg.fr/la-prime-velo + avec: + assemblé en France: + question: Le vélo est-il conçu et assemblé en France ? + type: booléen + par défaut: non aides . cazouls-lès-béziers: remplace: commune @@ -6104,15 +6113,8 @@ aides . la côtière à montluel: toutes ces conditions: - localisation . epci = 'CC de la Côtière à Montluel' - une de ces conditions: - - nom: travailler à moins de 20km - question: Travaillez-vous à moins de 20km de votre domicile ? - description: Vous devez justifier d’une activité professionnelle en tant que salarié, employeur ou auto-entrepreneur - type: booléen - par défaut: oui - - nom: abonné TER - question: Êtes-vous abonné au TER ? - type: booléen - par défaut: non + - travailler à moins de 20km + - abonné TER valeur: 15% * vélo . prix plafond: variations: @@ -6122,6 +6124,16 @@ aides . la côtière à montluel: alors: 300€ - sinon: 0€ lien: https://www.3cm.fr/18967-aide-a-l-achat-d-un-velo-a-assistance-electrique.htm + avec: + travailler à moins de 20km: + question: Travaillez-vous à moins de 20km de votre domicile ? + description: Vous devez justifier d’une activité professionnelle en tant que salarié, employeur ou auto-entrepreneur + type: booléen + par défaut: oui + abonné TER: + question: Êtes-vous abonné au TER ? + type: booléen + par défaut: non aides . pays orne moselle: remplace: intercommunalité @@ -6438,7 +6450,7 @@ vélo . occasion: # concernent les vélos d'occasion. Ces règles peuvent utiliser les variables # `vélo . neuf` et `vélo . occasion` dans leur formule de calcul. rend non applicable: - règle: aides + références à: aides sauf dans: - aides . montant @@ -6527,11 +6539,15 @@ demandeur . bénéficiaire de minima sociaux: maximiser les aides: par défaut: non - remplace: - - règle: vélo . prix - par: vélo . prix pour maximiser les aides - - règle: aides . pays de la loire . abonné TER - par: oui + avec: + maximiser prix vélo: + valeur: vélo . prix pour maximiser les aides + remplace: + références à: vélo . prix + abonnement TER pays de la loire: + valeur: oui + remplace: + références à: aides . pays de la loire . abonné TER localisation: localisation . code insee: "''" diff --git a/src/lib/components/Questions.svelte b/src/lib/components/Questions.svelte index c3aac4c..a1be611 100644 --- a/src/lib/components/Questions.svelte +++ b/src/lib/components/Questions.svelte @@ -4,7 +4,7 @@ import Question from './Question.svelte'; import RevenuSelector from './RevenuSelector.svelte'; - export let goals; + export let goals = undefined; export let demandeNeufOuOccasion = false; $: engine = getEngine({ @@ -20,7 +20,7 @@ $: questions = uniq( (goals ?? ['aides . montant']) .map((ruleName) => engine.evaluate(ruleName).traversedVariables) - .flat() + .flat(), ) .filter((q) => engine.getRule(q).rawNode.question) .filter((q) => q !== 'vélo . neuf ou occasion') diff --git a/src/lib/components/RevenuSelector.svelte b/src/lib/components/RevenuSelector.svelte index 48b46b4..3ba78b2 100644 --- a/src/lib/components/RevenuSelector.svelte +++ b/src/lib/components/RevenuSelector.svelte @@ -34,8 +34,9 @@ if (!aide.nodeValue) { return null; } - const originalRuleName = aide.explanation.find(({ condition }) => condition.isActive) - .consequence.name; + const originalRuleName = aide.explanation.find( + ({ condition }) => condition.nodeValue === true, + ).consequence.name; return originalRuleName; }) @@ -43,7 +44,7 @@ return originalNames; }) - .flat() + .flat(), ); }); @@ -119,7 +120,7 @@ findAllComparaisonsValue(name, { searchedName: 'revenu fiscal de référence', unit: '€/mois', - }) + }), ); $: numberFieldIsRequired = tresholds.includes(numberFieldRequired); @@ -164,7 +165,7 @@ }; } }, - { thresholds: [], dernieresAidesDisplayed: null } + { thresholds: [], dernieresAidesDisplayed: null }, ) .thresholds.slice(1); } diff --git a/src/lib/engine.js b/src/lib/engine.js index 318ac9f..bdd3e9b 100644 --- a/src/lib/engine.js +++ b/src/lib/engine.js @@ -9,5 +9,9 @@ export const engine = new Publicodes( export function getEngine(situation) { const engineBis = engine.shallowCopy(); engineBis.setSituation(situation ?? {}); + // HACK: traversedVariablesStack are removed from the public API, but still calculated if requested. + // The way to ask the engine to compute traversedVariables is to initialize the stack with an empty array. + // cf. https://github.com/publicodes/publicodes/issues/422 https://github.com/publicodes/publicodes/pull/432 + engineBis.cache.traversedVariablesStack = []; return engineBis; } diff --git a/src/lib/stores.js b/src/lib/stores.js index e010220..3c249eb 100644 --- a/src/lib/stores.js +++ b/src/lib/stores.js @@ -17,7 +17,7 @@ export const localisationSituation = derived([localisation], ([$localisation]) = ? { 'localisation . code insee': `'${$localisation.codeInsee}'`, 'localisation . epci': `'${$localisation.epci || ''}'`, - 'localisation . ZFE': `'${$localisation.zfe ? 'oui' : 'non'}'`, + 'localisation . ZFE': `${$localisation.zfe ? 'oui' : 'non'}`, 'localisation . département': `'${$localisation.departement}'`, 'localisation . région': `'${$localisation.region}'`, } diff --git a/src/routes/(front)/(search)/ville/[slug]/ExplanationsText.svelte b/src/routes/(front)/(search)/ville/[slug]/ExplanationsText.svelte index 607d11d..60e1ef2 100644 --- a/src/routes/(front)/(search)/ville/[slug]/ExplanationsText.svelte +++ b/src/routes/(front)/(search)/ville/[slug]/ExplanationsText.svelte @@ -1,7 +1,6 @@