Commit Graph

438 Commits (0f1ca13b7fcb365e72c24b293f481f1fc73f7f5a)

Author SHA1 Message Date
Johan Girod be1891aecb Revert "Revert "Aide à la déclaration des indépendants""
This reverts commit b5b2e56bd0.
2020-01-26 11:55:54 +01:00
Johan Girod b5b2e56bd0
Revert "Aide à la déclaration des indépendants" 2020-01-24 18:06:05 +01:00
Johan Girod 6dc39672b1 💚 répare les tests circle-ci 2020-01-23 15:09:04 +01:00
Johan Girod f29bcc2d7b Factorise les composants input entre les questions de simulation et le formulaire dnrti 2020-01-23 14:56:45 +01:00
Maxime Quandalle 7de5b632e8
🔨 Corrige la cotis maladie des prof. lib 2020-01-23 13:41:39 +01:00
Johan Girod ef90d6af68 🐛 corrige la conversion d'unité en anglais 2020-01-22 17:33:53 +01:00
Johan Girod e5b3b7a344 🎨 revient sur la version précedente du simulateur auto-entrepreur
Suite à un retour demandant quel était le type de dépense à mettre dans la case 'dépense'.
C'est ce qu'on veut éviter à tout prix : faire planner le doute sur les dépenses déductible

Par ailleurs, cela rajoute une charge cognitive (combien je vais dépenser), pas forcément necessaire.

On préfère clarifier qu'il faut bien penser à déduire les dépenses liée à l'activité pour avoir le revenu disponible
2020-01-15 17:52:40 +01:00
Johan Girod 0c94d01543 🐛 corrige les problèmes d'inversion lorsque l'on saisi 0€
fix #835
2020-01-14 15:52:38 +01:00
Maxime Quandalle 12ab3a3c4c Format objet pour les tests des mécanismes
Dans #719 nous changions la structure de données Yaml de premier niveau
d'une liste vers un objet (indexé sur le nom des règles) pour les
fichiers Publicode. Ce commit réplique ce changement pour les fichiers
de tests de mécanismes qui n'avaient pas encore été migré vers le
nouveau format.

L'attribut "test" qui servait à définir le nom du test est supprimé et
on utilise maintenant directement le nom de la règle (ou son titre s'il
est défini) comme nom du test.
2020-01-13 11:12:11 +01:00
Johan Girod fbdd7eba86 💚 répare les tests de non regression 2020-01-08 11:29:19 +01:00
Johan Girod c2358605ae prends en compte les informations de l'api entreprise dans les simulations 2020-01-07 15:53:33 +01:00
Johan Girod 4749727938 🔨 ⚙️ ajoute un mécanisme durée pour la proratisation de l'ACRE :wip: 2020-01-07 15:53:33 +01:00
Johan Girod 232168b204 💚 répare les tests de non regression 2020-01-07 15:53:32 +01:00
Johan Girod baf6d4200b 🔨 ajoute les revenus de remplacement 2020-01-07 15:53:32 +01:00
Maxime Quandalle 96ba822c58 🔨 Prime de treizième mois 2020-01-06 15:21:01 +01:00
Maxime Quandalle c4f669ebeb
🔨 Ajout de la taxe forfaitaire sur les CDD d'usage 2020-01-02 11:02:31 +01:00
Maxime Quandalle 057706a6df
Corrige les tests unitaires
La mises à jour de valeurs précises calculées dans les tests unitaires
n'est pas une solution satisfaisante. Je le fait dans ce commit mais à
terme je pense qu'il faudra déléguer intégralité de ces tests sur des
valeurs précises aux tests de régressions `yarn run test-regressions`
qui peuvent être mis à jour facilement et conserver les tests unitaires
pour des cas où la valeur précise calculée n'importe pas.
2019-12-26 18:37:55 +01:00
Maxime Quandalle bf0231dde6
🔨 Rabotage de l’ACRE en 2020
Fixes #698
2019-12-26 18:01:09 +01:00
Maxime Quandalle 258eddf564
🔨 Revalorisation du SMIC janvier 2020 2019-12-22 21:13:38 +01:00
Maxime Quandalle c8344776ad
🔨 Plafonds de la sécurité sociale 2020 2019-12-22 21:02:23 +01:00
Maxime Quandalle 2c6f2b711d
🔨 Nouveau barème taux neutre IR 2020 2019-12-22 20:55:58 +01:00
Maxime Quandalle 9393db3ba4
🔨 Nouveau barème et décote IR 2020
Note: nous n'avions pas mis à jour la décote sur 2019, elle était donc
sous-estimée pendant cette année.
2019-12-22 20:31:44 +01:00
Maxime Quandalle d89833502b
Meilleur typage des arguments des fonctions
Ajout du paramètre strictFunctionTypes dans la configuration TypeScript
voir https://www.stephanboyer.com/post/132/what-are-covariance-and-contravariance

Malheureusement a nécessité l'ajout de any a plusieurs endroits.
2019-12-18 18:47:54 +01:00
Johan Girod a1d1e7d0ef 🖋️ améliore les informations concernant la micro entreprise 2019-12-18 14:02:00 +01:00
Maxime Quandalle 1b963b8bbe Ajout de l'option "allowJs" dans tsconfig.js
Cela permet l'inférence de type à partir des fichiers js qui ne sont pas
encore convertis en TypeScript.
Par ailleurs suppression des dernières traces de Flow.
Ajout d'options plus strictes pour dans la config tsconfig.js
2019-12-17 11:34:12 +01:00
Johan Girod 00b122fa97 ⚙️ ajoute la conversion d'unité
Gros changements en perspective :
- Supprime la notion de période, au bénéfice de celle d'unité
  (`période : mensuelle` devient `unité: €/mois`)
- Améliore les rapports d'erreur avec des messages plus clair
- Ajoute un avertissement lorsque des types ne sont pas compatible
- Ajoute la conversion automatique d'unité dans le moteur
- Ajoute une notion d'unité par défaut de la simulation,
  c'est l'unité vers laquelle les règles qui ne spécifient pas
  d'unité seront converties
- Ajoute une notion d'unité par défaut des règles, qui spécifie
  l'unité de la règle qui prévaut lorsque qu'il n'y a pas
  d'unité par défaut de la simulation (utile pour les question ou
  pour s'assurer du bon type d'une règle)
2019-12-16 11:34:04 +01:00
Johan Girod 6b7f50fe4a ⚙️ ajoute la comparaison des dates 2019-12-16 11:33:38 +01:00
Johan Girod e798dd6d02 ⚙️ support les mois au lieu de date complète 2019-12-16 11:33:38 +01:00
Johan Girod a19843dc21 ⚙️ ajoute le parsing des dates 2019-12-16 11:33:38 +01:00
Maxime Quandalle 6f11f66d91 🐛🔨 Correction de la décote de l'IR
Le plafond utilisé dans le mécanisme décote n'était pas le bon. cc #805
Par ailleurs mise à jour du plafond avec la valeur de 2019.
2019-12-13 10:43:36 +01:00
Maxime Quandalle a45ea0c79e Mécanisme encadrement
Permet de définir un plafond et/ou un plancher sur une valeur
2019-12-12 10:45:56 +01:00
Maxime Quandalle 8044207d3d Améliorations simulateur artiste-auteur
Intégration des retours de l'URSSAF, ajout de l'option surcotisation
pour la retraite, changement de l'espace de nom de premier niveau.
2019-12-10 20:13:14 +01:00
Maxime Quandalle 206794e293 Ajoute des tests de régressions artiste-auteur 2019-12-10 20:13:14 +01:00
Maxime Quandalle 52afb99ecf
Nom de la variable CDD dans les tests de régression
Nous utilisions `cdd` au lieu de `CDD` dans deux tests.

Ajouter un `throw error` si on utilise une variable qui n'existe pas
dans les règles ?
2019-11-12 17:08:57 +01:00
Johan Girod cb6d97e6de 💚 répare les test unitaires 2019-11-12 11:11:39 +01:00
Johan Girod f224272f5c 🔨⚙️🔥 refactore les règles pour une meilleure lisibilité
Et pour faire passer les tests jest au passage.
A noter : il faudra vraiment se pencher sur la notion d'applicable / non applicable
Une variable non applicable a une valeur '0' / 'false', mais une variable
à false n'est pas considérée comme non applicable. Je pense qu'il serait avantageux
de simplifier le modèle en introduisant une symetrie entre applicable si et la valeur
d'une variable.
2019-11-11 18:47:43 +01:00
Johan Girod 41d3e17ce2 wip 2019-11-11 18:47:43 +01:00
Johan Girod 53f67bb329 🔨 debug les règles pour les sportifs 2019-11-11 18:46:41 +01:00
Johan Girod 66c09a8f64 ⚙️🔥 refactor parseReference pour moins de bugs
note: il y a encore du boulot, mais c'est mieux
2019-11-11 18:46:41 +01:00
Johan Girod 3bb5c1ec67 🔨 décommente les règles pour les sportifs 2019-11-11 18:45:54 +01:00
Johan Girod ccb8f47a83 ⚙️ ajoute la possibilité de desactiver une branche via un booléen 2019-11-11 18:45:11 +01:00
Johan Girod c0bd229cde ⚙️ supporte plusieurs remplacement d'un coup 2019-11-11 18:44:34 +01:00
Johan Girod a63d02601f ⚙️ ajoute la gestion des filtre pour les variables remplacée 2019-11-11 18:44:34 +01:00
Johan Girod 2fe72b955b Ajoute un test pour le remplacement associatif 2019-11-11 18:44:34 +01:00
Johan Girod bf9c8dd011 ⚙️ supporte les tableaux de contextes pour les remplacement 2019-11-11 18:44:34 +01:00
Johan Girod f52b6b9808 ⚙️ ajoute la possibilité de restreindre le remplacement à un contexte donné 2019-11-11 18:44:34 +01:00
Johan Girod 988597a792 ⚙️ emplèche les boucles infinies dans le remplacement lorsque c'est possible 2019-11-11 18:44:34 +01:00
Johan Girod db3b2a514c ⚙️ ajoute un mécanisme de remplacement de règle
Co-authored-by: Maxime Quandalle <maxime.quandalle@beta.gouv.fr>
2019-11-11 18:44:34 +01:00
Maxime Quandalle 6f21c3cfa4
Merge pull request #782 from betagouv/cpf
1% CPF
2019-11-11 15:18:19 +01:00
Maxime Quandalle 4c7a1656bb
🔨 Renomme les variables des réductions LODEOM 2019-11-11 15:09:34 +01:00
Maxime Quandalle 0f7823ca19
🔨 Ré-introduction de la cotisation 1% CPF
Dans 16ae29bdc, j'avais supprimé la cotisation de 1% sur les CDD pour
financer le CIF. Cette cotisation n'avait en fait pas été supprimée mais
remplacée par une cotisation pour financer le CPF...

This reverts commit 16ae29bdcc.
2019-11-11 15:03:33 +01:00
Maxime Quandalle 6de970f0e3 🔥 Migration vers TypeScript
Outils
======

Ce commit retire le tooling de Flow, et ajoute le support de TypeScript
pour les fichiers .ts et .tsx. Il n'est pas nécessaire de tout migrer
d'un coup ce qui facilite la transition. On garde en effet le
compilateur Babel avec un preset TypeScript (ce qui permet donc de
retirer à la fois les types Flow et TypeScript) plutôt que d'utiliser le
compilateur standard pour la conversion du code. Cela permet aussi de
mieux s'intégrer avec d'autres outils, notamment les test-runners.

Ajout d'une nouvelle commande `yarn run type-check`, intégrée dans
CircleCI.

Par ailleurs ajout du support de l'opérateur ?? pour donner des valeurs
par défaut (nullish-coalescing-operator).

Typage des libraires tierces
============================

Les principales libraires que nous utilisons ont un typage TypeScript de
bon niveau, ce qui facilite l'intégration. J'ai mis à jour react-i18next
et i18next afin de corriger un problème de typage.

Typage du code
==============

Le typage est loin d'être complet dans ce commit, en particulier il
manque les types relatifs au state Redux, ainsi qu'au moteur (règle,
explication). Néanmoins le typage des contextes fonctionne, en
particulier sitePaths (avec un type récursif non trivial !) qui a déjà
permis de détecter un lien mort.

Le typage des "paths" (Components/, Règles/, etc.) fonctionne bien, y
compris avec l'auto-complétion automatique des import par Typescript.

TypeScript se révèle déjà bien agréable dans VSCode (auto-complétion,
refacto, etc.) ! Reste à migrer progressivement le reste du code !
2019-10-30 10:20:48 +01:00
Maxime Quandalle 5901f589d6
🔨 Réductions de cotisations avec heures supplémentaires
Le paramètre SMIC utilisé dans le calcul des réductions, en particulier
de la réduction générale, doit prendre en compte les heures supplémentaires.

Cette non prise en compte nous conduisait à sur-estimer le montant des
cotisations sociales sur les heures supplémentaires.
2019-10-22 13:31:08 +02:00
Maxime Quandalle 1e7730dd25
Snapshot testing
Ajout de tests de non-regressions des calculs afin d'éviter de déployer
silencieusement des effets de bord non-désirés dans les règles de calculs.

J'ai ajouté Jest pour sa fonction de snapshot testing qui est
particulièrement adaptée pour ce type de cas (voir #717). J'ai essayé
avec mocha-snapshot sans succès.

J'ai eu un petit peu de mal à configurer Jest, car il n'est pas possible
de ré-utiliser la configuration Webpack, qu'il faut alors dupliquer. C'est
pourquoi j'ai limité l'utilisation de Jest aux seuls tests de snapshot.
À voir s'il y a un intérêt à migrer les tests Mocha vers Jest ultérieurement.

Fixes #717
2019-10-22 10:35:31 +02:00
Maxime Quandalle 9be4ff0ca3
⚙️ Support des unités dans les formules litérales
Implémentation de #730
2019-10-17 15:04:06 +02:00
Maxime Quandalle 41e44482b8
🔥 Supprime des fonctions "utils" inutiles
Ces fonctions n'étaient utilisées qu'une fois ou deux et constituent des
indirections inutiles : getIframeOption, parseDataAttributes,
setToSessionStorage, getFromSessionStorage et isNumeric.

Préférer les fonctions de la "bibliothèque standard": sessionStorage et
URLSearchParams.
2019-10-13 20:36:21 +02:00
Maxime Quandalle 1ccaf94a1c
⚙️ Nouvelle syntaxe de définition publicodes
* Définition à partir du nom complet en notation pointée (plutôt que
  comme deux attributs indépendants "name" et "espace")
* Structure de données de premier niveau "dictionnaire" plutôt que liste,
  s'aligne mieux avec notre contrainte d'unicité des noms
* Possibilité de définir les règles à partir d'une liste dans les tests,
  dans ce cas il ne faut plus utiliser l'attribut "espace" mais renseigner
  directement la notation pointée dans le "nom".
2019-10-13 11:46:29 +02:00
Mael 0eba339309 La librairie prend la notation pointée en entrée 2019-10-07 16:38:29 +02:00
Johan Girod 57a7b30f14 🎨🔥 change la recherche d'entreprise
- On utilise un nouveau composant qui se base sur la dernière version de l'api SIRENE
- On sépare les données entre la simulation des cotisations et la création d'entreprise
- On gagne des lignes !
2019-10-07 11:06:05 +02:00
Maxime Quandalle 944cddd337
🔨 Renomme coût du travail en prix du travail
Et ajout d'une explication dans la description

Co-authored-by: Johan Girod <johan.girod@beta.gouv.fr>
2019-10-02 13:51:17 +02:00
Maxime Quandalle 8c328099ec
🔨 Ré-intégration de la médecine du travail
Supprimée au niveau des cotisations patronales dans fb54d4c, ce commit
ré-intégre ce coût au niveau d'une nouvelle variable "coût du travail"
qui inclut également les aides différées.

Note: une variable "coût d'embauche" existait précédemment mais n'était
plus utilisée 4784bcd2
2019-10-01 18:28:33 +02:00
Maxime Quandalle fb54d4cb90
🔨 La medecine du travail n'est pas une cotisation patronale 2019-10-01 14:01:03 +02:00
Mael 3739957039
Merge pull request #697 from betagouv/renommage
Renommage de syso à mon-entreprise
2019-09-30 11:44:47 +02:00
Marc Pasteur 728cfad31b
🔨 MAJ de la réduction Fillon - octobre 2019
Closes #435 #570
2019-09-27 12:48:08 +02:00
Mael d80588bf97 Renommage de syso en mon-entreprise 2019-09-25 17:53:55 +02:00
Johan Girod d1f9ef383b
🎨 améliore l'affichage des valeurs négatives 2019-09-25 10:01:34 +02:00
Johan Girod 33cc92a397
⚙️ ajoute l'opération unaire de négation à la grammaire 2019-09-25 10:01:33 +02:00
Maxime Quandalle 0ddc2d0469
Ajout des règles dans le state Redux
Déplace la logique de changement de période d'un component vers un reducer
2019-09-18 14:10:10 +02:00
Maxime Quandalle 3fbd94bc65
🔥 Suppression de redux-form
Supprime aussi redux-batched-action. Le code résultant est plus concis
(alors que l'on supprime une dépendance !), et plus clair car il y a moins
d'indirections pour se conformer aux API de redux-form.
2019-09-17 12:54:18 +02:00
Johan Girod 59d4054e5d
ajoute des tests pour les expressionsé 2019-09-13 10:23:55 +02:00
Johan Girod 28d70b44d2
🔨 remplace 'auto entrepreneur' par 'auto-entrepreneur' 2019-09-13 10:23:55 +02:00
Johan Girod 9ee4bdc76c
💚 augmente le timeout du test de librairie 2019-09-06 15:31:19 +02:00
Johan Girod 74c278cb76
🔨 enlève la valeur par défaut pour le taux personnalisé 2019-09-04 17:29:29 +02:00
Maxime Quandalle 6344d2f2e1
Amélioration des pages de documentations pour rend non applicable
- ajout des traductions
- ajout d'une notice "désactivée par" quand une règle est désactivée
  par un régime d'exception actif
2019-09-04 09:14:28 +02:00
Maxime Quandalle 1ffb97c2f6
Renomme "désactive" en "rend non applicable"
Ajout de tests, amélioration de la doc
2019-09-03 22:45:54 +02:00
Johan Girod b069a447ce
🔨 ajoute une variable taux horaire pour le calcul de rémunération des heures sup 2019-09-03 18:12:08 +02:00
Johan Girod 352a1467a2
💚 répare les tests unitaires 2019-09-03 18:12:07 +02:00
Johan Girod d6b1f2808a
🔨 ajoute la défiscalisation des heures supplémentaires 2019-09-03 18:12:06 +02:00
Johan Girod a247e5d57c
🔨 Ajoute la reduction de cotisations pour les heures supplémentaires
TODO: uniformiser la façon de gérer les réductions sur la fiche de paie, entre employeur et salarié
2019-09-03 18:11:41 +02:00
Mael 1431c02f34 Introduction du faux pourcentage (%)
Quand une variable est destinée à être saisie par l'utilisateur, on veut
qu'il saisisse 50, pas 0.5 pour exprimer 50%.

On pourrait lui faire saisir 50 et convertir en direct vers la vraie
valeur de 0.5, mais c'est compliqué aujourd'hui dans reduxForm
(l'attribut "normalize" ne suffit pas, car la valeur 0.5 sera visible
après un bref instant de debounce).

Je pense qu'il serai quand même mieux que nous stockions les variables
qui sont des ratios comme 0.5 et que l'UI se charge d'afficher et de
faire saisir ces valeurs sous forme 50%.
2019-07-23 19:07:40 +02:00
Mael 6606bb4f34 Unités des barèmes et composantes 2019-07-23 17:03:00 +02:00
Mael 0d0fcabe1b Tests des unités dans les tests de mécanismes 2019-07-23 17:03:00 +02:00
Mael 1adce3e514 ⚙️ On abandonne NegatedVariable
C'est illisible dans l'explication, je n'arrive pas à faire mieux que '≠
oui'
2019-07-23 17:03:00 +02:00
Mael 1ca341a5b5 Implémentation plus générique des unités 2019-07-23 17:03:00 +02:00
Maxime Quandalle 3ea46f5d54 Suppression des sous-questions
Fonctionnalité inutilisée
2019-07-16 17:21:54 +02:00
Maxime Quandalle db90552f6a Répare les liens interne dans la documentation
Les liens dans le markdown ne prenaient pas en compte le `basename`
configuré via react-router/history.

Utilisation de `react-markdown` au lieu de `marked` qui s'inter-opère
mieux avec notre UI.
2019-07-16 17:21:54 +02:00
Mael 7087b309fe Renommage de fichier 2019-07-12 10:33:02 +02:00
Mael 4785155f25 Correction des tests 2019-07-12 10:33:02 +02:00
Mael 0fafa68258 Remplacemement des formats en unités dans les tests 2019-07-12 10:33:02 +02:00
Mael a75b22d083 Début de l'implémentation des unités 2019-07-12 10:33:02 +02:00
Johan Girod cf64ed5899
🔨 Améliore les simulateurs pour être au plus proche des attentes utilisateurs
Suite aux retours utilisateurs rassemblé par l'Acoss (cc Agnes Nardon) :
- Uniformise les nom de tous les champs entre les différents simulateurs
- Pour la comparaison des régimes, on ne parle plus du CA, mais du montant dégagé pour la rémunération du dirigeant (plus clair)
- Supprime la notion de charge pour les auto-entrepreneur
- Tant que la simulation complète de l'entreprise n'est pas développé (cf #562), on enlève la notion de chiffre d'affaires des simulateurs de revenus. Elle est en effet triviale à calculer (rem total + charges) et laisse perplexe les utilisateurs même les plus renseignés
2019-07-01 19:28:12 +02:00
Marc Pasteur 8250ee633b Ajout d'un test sur le mécanisme du minimum 2019-06-17 14:41:49 +02:00
Johan Girod 2b49965940
Merge pull request #530 from betagouv/comparaison-régime-v2
Comparaison régime améliorée
2019-06-12 17:57:33 +02:00
Johan Girod 28a0588735
Rétablit les liens rapide en dessous de la question courante
Avec un nouveau mécanisme : ils sont toujours visible et disparaissent au fur et à mesure que l'on répond aux questions
2019-06-05 18:48:16 +02:00
Johan Girod f11f0579fd
Affiche automatiquement la question après la première valeur rentrée
🔥 Et supprime le code gérant  dans le state
2019-06-05 15:16:46 +02:00
Mael bea8df51bc ⚙️ On rejette des interprétations ambigües de la grammaire 2019-06-04 16:38:10 +02:00
Mael dd9f340272 ⚙️ Les filtres de variables sont [mon filtre] et plus (mon filtre) 2019-06-04 16:38:10 +02:00
Mael 3dbea14933 Plus d'expressions testées 2019-06-04 16:38:10 +02:00
Mael a7d88e8514 Tentative de déplacement de treatString dans grammar.ne 2019-06-04 16:38:09 +02:00
Mael 528c714e26 Test des nombres dans les expressions 2019-06-04 16:38:09 +02:00