Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC : Gestion des variables temporelles et de la proratisation #866

Merged
merged 13 commits into from
Mar 18, 2020

Conversation

johangirod
Copy link
Contributor

@johangirod johangirod commented Feb 3, 2020

Supercede #793

Après longues réflexions, j'en arrive à un modèle qui me paraît simple, complet et logique pour la gestion de la temporalité dans le moteur de simulation.

Voir les exemples pour la paie

Introduction d'un nouveau type : les variables temporelles

  • Les variables temporelles sont un nouveau type de variable dont la valeur change en fonction du temps.
  • Les variables temporelles ont une période de définition, en dehors de laquelle elles sont considérées comme non applicable
  • Les variables temporelles ont un type générique, instancié par les types de base du moteur (nombre avec unité, booléen, null)
  • Les variables temporelles peuvent être utilisée de manière transparente en argument d'un mécanisme. Dans ce cas, le type du retour du mécanisme sera une variable temporelle.
  • La discrétion minimum d'une variables temporelle est le jour
  • Lorsque la variable temporelle est instanciée avec le type numérique, sa nodeValue est la moyenne pondérée de ses différentes valeur sur sa période de définition

Comment créer une variable temporelle ?

Via le mécanisme calendrier

Exemple 1

PSS:
  formule:
    calendrier:
      - en: 2019
        montant: 3377 €/mois
      - en: 2020
        montant: 3428 €/mois

Exemple 2

contrat salarié . salaire . brut de base:
  formule:
    calendrier:
      - depuis: date d'embauche
        montant: 2000€/mois
      - depuis: 09/08/2019
        montant: 2200€/mois

Via le l'opérateur suffixé de péridode : |

Cet opérateur permet d'associer une période à une valeur, qui devient alors une variable temporelle.

Exemple 1

loyer: 
 formule: 1214 €/mois | en 2019

Exemple 2

salaire brut: 
 formule: 2230 €/mois | depuis : date d'embauche

Exemple 3

dépenses voyage:
 formule: 
   somme: 
       - 40€ | le 24/12/2019
       - 29€ | le 25/12/2019
       - 12€ | le 25/12/2019
       - dépense hôtel

dépense hôtel: 
 formule: 38 €/jour | du 02/04/2019 au 09/04/2019

Exemple 4

primes: 
 formule: 230 €/mois | en aout 2019 + 429 €/mois | en décembre 2019

@johangirod johangirod force-pushed the engine-next branch 2 times, most recently from 6cba718 to 3669139 Compare February 14, 2020 16:35
@mquandalle
Copy link
Contributor

Juste un petit point :

Lorsque la variable temporelle est instanciée avec le type numérique, sa nodeValue est la moyenne pondérée de ses différentes valeur sur sa période de définition

Il faut voir si c'est le bon comportement pour toutes les règles. Dans certains cas (total des majorations des heures supplémentaires sur l'année, primes de manifestions sportives exonérées de cotiz, etc.), une moyenne arithmétique n'est pas correcte (car par exemple il faut regarder le détail des heures semaine par semaine pour établir la majoration et qu'une moyenne ne fonctionne pas).

@johangirod johangirod force-pushed the engine-next branch 11 times, most recently from 527c7c7 to 71d04cb Compare February 27, 2020 18:54
const cumulatedMonthlyEvaluations = [...Array(12).keys()].map(i => ({
start: convertToString(new Date(currentYear, i, 1)),
end: convertToString(new Date(currentYear, i + 1, 0)),
value: recalculWith(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Si je comprends bien, on fait ici un recalcul avec l'accumulateur depuis le début de l'année (exemple 1000€/mois sur 3 mois donne un accumulateur à 3000€) mais je ne vois pas où les variables type plafond de la sécurité sociale sont pro-ratisées (puisqu’il faut aussi considérer la valeur sur 3 mois)

@johangirod johangirod force-pushed the engine-next branch 3 times, most recently from e06db01 to 093ae60 Compare February 28, 2020 14:33
@johangirod johangirod force-pushed the engine-next branch 7 times, most recently from cdaa10f to f95ff9a Compare March 16, 2020 17:58
Johan Girod added 4 commits March 18, 2020 15:43
- 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)
@johangirod johangirod force-pushed the engine-next branch 5 times, most recently from d879ffd to cf31200 Compare March 18, 2020 15:16
@johangirod johangirod merged commit 140913f into master Mar 18, 2020
@johangirod johangirod deleted the engine-next branch March 18, 2020 15:30
@mquandalle
Copy link
Contributor

En fait je retombe sur cette ancienne PR mais calendrier n'existe pas ?

@johangirod
Copy link
Contributor Author

Non, seule l'écriture infixe avait été implémentée.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants