Commit Graph

46 Commits (6424f2e197db0f64a65e381c4b9f40daaae7c645)

Author SHA1 Message Date
Johan Girod 2526499ab7 ⚙️ Ajoute le mécanisme somme pour les variables temporelles 2020-03-18 15:44:37 +01:00
Johan Girod 7b18252798 🔨 Première implémentation des variable temporelle
- Uniquement pour les valeur numérique
- Pour les cas simple applicable / non applicable (pas de cas mixte)
- Pas d'implémentation de mécanisme (addition / barème / etc)
2020-03-18 15:44:09 +01:00
Johan Girod e4131eee28 ⚙️ 🔥 grosse modification des barèmes
- Il n'y a plus qu'un mécanisme barème dorénavant : c'est le barème marginal de l'impôt
- On peut utiliser des variables publicode pour chaque argument des tranches
- Le mécanisme barème linéaire est remplacé par le mécanisme "grille"
- Le mécanisme barème continu est remplacé par le mécanisme "taux progressif"
- Les vues sont unifiées et simplifiées
- Seule les tranches nécessaires sont évaluée
- Les unités fonctionnent dans les barèmes
- On précise les tranches d'un barème par leur plafond et non plus par leur plafond et seuil

fix #827
2020-02-25 11:16:36 +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
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 716d950733 ⚙️ ajoute la possibilité d'écrire des nombre dans les noms de variables 2019-11-11 18:45:54 +01:00
Maxime Quandalle 648fb249ed ⚙️ Meilleure grammaire pour les unités litérales
Deplacement de la détection de la règle "words" (ie une suite de mots)
du lexer/tokenizer vers le parser. Le lexer se contente de donner les
mots un à un, et une liste de "words" est détectée via une règle Nearley.

Cela permet de corriger l'ambiguité entre unités et noms de variables qui
est dépendante du contexte et ne peut donc pas être levée au niveau du lexer.
2019-10-29 11:40:16 +01: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
Johan Girod 33cc92a397
⚙️ ajoute l'opération unaire de négation à la grammaire 2019-09-25 10:01:33 +02:00
Johan Girod 59d4054e5d
ajoute des tests pour les expressionsé 2019-09-13 10:23:55 +02:00
Johan Girod b2d0d4624a
🐎 améliore la performance du parsing
A peu près ~50% de gagné lors du parsing
Problème : long temps de blocage de l'UI lors du premier parsing des règles

Il reste encore quelques bugs
2019-09-13 10:23:55 +02:00
Johan Girod 37a3f5a139
🔨 meilleure gestion de l'ACRE / année de création
- On utilise la date de création avant 2019 / après 2019 pour savoir si la profession libérale est rattachée à la CIPAV
- On pose directement la question de l'ACRE, ce qui permet de ne pas faire d'approximation par défaut.
2019-09-06 15:31:17 +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
Marc Pasteur ec0d5304d8 Bout de code inutile dans la grammaire 2019-06-17 14:41:49 +02:00
Mael bf6455c33c 📝 ⚙️ Documentation de la grammaire 2019-06-04 16:38:10 +02:00
Mael 2e085dd71c Externalisation des fonctions de retraitement de la grammaire 2019-06-04 16:38:10 +02:00
Mael dc08b0fd0f 🐛 Fin de la réfacto 2019-06-04 16:38:10 +02:00
Mael bea8df51bc ⚙️ On rejette des interprétations ambigües de la grammaire 2019-06-04 16:38:10 +02:00
Mael c0b1d6629f ⚙️ Pas d'espace intérieur aux parenthèses; filtres en crochets 2019-06-04 16:38:10 +02:00
Mael 80d3cfd17e Les objets produits par la grammaire sont traités par treatObject
Récursivement
2019-06-04 16:38:09 +02:00
Mael 3b978d061a Réécriture de la grammaire
Elle renvoit un objet qui est une vision prefixe du contenu parsé
2019-06-04 16:38:09 +02:00
Mael a7d88e8514 Tentative de déplacement de treatString dans grammar.ne 2019-06-04 16:38:09 +02:00
Mael ced2a37490 ⚙️ Grammaire d'expressions plus complexe
Elle permet des opérations chainées.
On peut maintenant faire formule: 3 + 5 + 6
Ou 3 * (ma variable + 4)
2019-06-04 16:38:09 +02:00
Johan Girod 92e65d444c wip 2019-03-19 16:55:37 +01:00
Mael 49c1e121b4 ⚙️ Périodes en préfixe 2018-11-23 16:01:13 +00:00
Mael 29071e8d8e ⚙️ Noeud variableTransform qui regroupe les filtres et les périodes
Ce n'est pas très propre, mais difficile de faire autrement sans revoir
l'architecture des filtres, du cache, des sélecteurs de la fiche de paie
et du l'explicaiton des cotisations...
2018-11-23 16:01:13 +00:00
Mael 2addd326a1 🔨 Complémentaire moins chère pour le régime Alsace-Moselle 2018-11-08 14:08:27 +00:00
Mael d0726b616c :cogs: Ajout du type booléen dans la syntaxe 2018-09-05 17:40:19 +02:00
Mael c5d21fab6b 🐛 🔨 Erreur dans le calcul du net imposable 2018-06-27 17:04:01 +00:00
Laurent Bossavit 54f87924f9 🐛 Un identifiant de variable ne peut commencer par une apostrophe 2017-09-30 10:15:07 +02:00
Laurent Bossavit 38db8d4762 ⚙️ Autorise les apostrophes dans les noms de variables 2017-09-30 10:15:07 +02:00
Laurent Bossavit da80252ee7 ⚙️ Autorise les décimaux et pourcentages dans les expressions 2017-09-30 10:14:21 +02:00
Laurent Bossavit d4c74daa52 🐛 Corrige la régression sur la majoration chômage 2017-09-29 14:05:26 +02:00
Laurent Bossavit 1426af4f6b ⚙️ Fournit un opérateur d'inégalité 2017-09-29 14:05:26 +02:00
Laurent Bossavit d3400df8c3 ⚙️ Remplace les événements et motifs par une comparaison explicite 2017-09-29 14:04:23 +02:00
Laurent Bossavit bb7d16205f ⚙️ Tentative pour exploiter les composantes 2017-07-04 10:14:57 +02:00
mama 15776d21cb ⚙️ Ajout du mécanisme de négation de variables booléennes
Utilisation du symbole ¬ pour l'instant. Sûrement sujet à évolutions
2017-05-09 15:48:08 +02:00
mama c16d0fa823 Toute règle peut donner un simulateur sur /simu/:name
Testé sur les règles du CDD, AGIRC, APEC
TODO :
- finir AGIRC APEC
  - !statut cadre
  - assiette cotisations sociales -> indemnités CDD -> espace CDD -> CDD
booléen
2017-05-09 14:47:55 +02:00
Mael Thomas 376e72fc47 [moteur] conciliation des mécanismes existants avec le nouveau parsing d'expressions 2017-03-09 15:19:44 +01:00
Mael Thomas 1a9d112eca [moteur] intégration du nouveau type de noeud 'Variable' dans l'AST 2017-03-08 17:48:53 +01:00
Mael Thomas c1cfb20bf1 [moteur] Le parser Nearley renvoit maintenant un AST similaire au notre
Il reste à le reparser pour résoudre les variables en fonction de la situation, calculer les nodeValues, ajouter les missingVariables

Puis implémenter les modifieurs de temps

Puis ajouter le prorata à la multiplication

                             \
                              \
                               \\
                                \\
                                 >\/7
                             _.-(6'  \
                            (=___._/` \
                                 )  \ |
                                /   / |
                               /    > /
                              j    < _\
                          _.-' :      ``.
                          \ r=._\        `.
                         <`\\_  \         .`-.
                          \ r-7  `-. ._  ' .  `\
                           \`,      `-.`7  7)   )
                            \/         \|  \'  / `-._
                                       ||    .'
cjr                                     \\  (
10mar02                                  >\  >
                                     ,.-' >.'
                                    <.'_.''
                                      <'
2017-03-07 18:25:25 +01:00
Mael Thomas 578153a3b7 [moteur] 1er jet de la grammaire Nearley.js pour parser les expressions 2017-03-06 17:35:30 +01:00