🔥 Rangement

* Suppression de fichiers "documentation" qui n'avaient pas été modifiés
  depuis deux ans et n'étaient plus à jour
* Déplacement de base.yaml dans un répertoire publicode de premier
  niveau. Déplacement de la traduction des règles dans le répertoire
  source/locales
* Suppression de la page /documentation/exemples qui n'était pas
  référencée sur le site, pas consultée dans nos stats, et boguée.
* Suppression de la configuration git quotepath qui ne semble plus utile
pull/870/head
Maxime Quandalle 2020-02-04 17:05:59 +01:00
parent 9baa74f857
commit e9d5f1c62b
82 changed files with 27 additions and 1487 deletions

View File

@ -1,2 +0,0 @@
[core]
quotepath = false

View File

@ -97,9 +97,7 @@ $ yarn run test-cypress
Le site est disponible en français, et en anglais sur https://mycompanyinfrance.com
Les traductions de la base de règle se trouvent dans
`source/règles/externalized.yaml`. Celles de l'Ui sont dans le fichier
`source/locales/en.yaml`
Les traductions se trouvent dans le répertoire `source/locales`.
La librairie utilisée pour la traduction de l'Ui est
[react-i18next](https://react.i18next.com/).

View File

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2018 beta.gouv.fr
Copyright (c) 2018-2020 beta.gouv.fr
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -1,12 +1,8 @@
> [🙋 We're hiring !](https://beta.gouv.fr/recrutement/2020/01/13/mon-entreprise-JS-senior.html)
![logo mon-entreprise.fr](https://mon-entreprise.fr/images/logo.svg)
This repository powers [mycompanyinfrance.fr](https://mycompanyinfrance.fr) and [mon-entreprise.fr](https://mon-entreprise.fr).
This repository powers [mycompanyinfrance.fr](https://mycompanyinfrance.fr) and [mon-entreprise.fr](https://mon-entreprise.fr) and [publi.codes](https://publi.codes).
It's a React, Redux, Webpack website hosted on Netlify with no backend.
The hiring simulator, available on both websites, embeds a [model](https://github.com/betagouv/mon-entreprise/blob/master/source/règles/base.yaml) of the french tax system as a YAML domain specific language. It enables displaying the computing rules on the Web and having a single source of logic for both the computation engine (a JS library) and the generated end-user conversation-like form.
The hiring simulator, available on both websites, embeds a [model](https://github.com/betagouv/mon-entreprise/blob/master/publicode/base.yaml) of the french tax system as a YAML domain specific language. It enables displaying the computing rules on the Web and having a single source of logic for both the computation engine (a JS library) and the generated end-user conversation-like form.
The engine with the French tax law is available as a NPM module and explained [on the wiki](https://github.com/betagouv/mon-entreprise/wiki/Librairie-de-calcul).
@ -16,7 +12,7 @@ Most of the documentation (including issues and the wiki) is written in french,
## Contribute
If you want to contribute to this application, please check out [CONTRIBUTION.md](./CONTRIBUTION.md).
If you want to contribute to this application, please check out [CONTRIBUTING.md](./CONTRIBUTING.md).
## Supported browsers

View File

@ -50,7 +50,6 @@ jobs:
steps:
- install
- run: |
git config --global core.quotepath false
yarn test
yarn test-regressions

View File

@ -1 +0,0 @@
- https://thenounproject.com/search/?q=employee&i=859814

View File

@ -1,144 +0,0 @@
- nom: forme juridique
formule:
une possibilité parmi:
- auto-entrepreneur
- auto-entrepreneur option EIRL
- EI
- EURL
- EIRL
- SARL
- SAS
- SA
- SNC
- SASU
- nom: EI
espace: forme juridique
applicable si:
toutes ces conditions:
- régime du directeur = 'indépendant'
- nombre d'associés = 1
non applicable si:
une de ces conditions:
- responsabilité limitée
- nom: EIRL
espace: forme juridique
applicable si:
toutes ces conditions:
- responsabilité limitée
- régime du directeur = 'indépendant'
- nombre d'associés = 1
- nom: EIRL
espace: forme juridique
applicable si:
toutes ces conditions:
- responsabilité limitée
- régime du directeur = 'indépendant'
- nombre d'associés = 1
- nom: auto-entrepreneur
espace: forme juridique
applicable si:
toutes ces conditions:
- régime du directeur = 'indépendant'
- nombre d'associés = 1
non applicable si:
une de ces conditions:
- responsabilité limitée
- nom: auto-entrepreneur option EIRL
espace: forme juridique
applicable si:
toutes ces conditions:
- responsabilité limitée
- régime du directeur = 'indépendant'
- nombre d'associés = 1
- nom: SARL
espace: forme juridique
applicable si:
toutes ces conditions:
- responsabilité limitée
- régime du directeur = 'indépendant'
- nombre d'associés > 1
- nom: SARL
espace: forme juridique
applicable si:
toutes ces conditions:
- responsabilité limitée
- régime du directeur = 'indépendant'
- nombre d'associés > 1
- nom: directeur minoritaire
applicable si: nombre d'associés > 1
- nom: SARL
espace: forme juridique
applicable si:
toutes ces conditions:
- responsabilité limitée
- régime du directeur = 'indépendant'
- nombre d'associés > 1
- nom: SAS
espace: forme juridique
applicable si:
toutes ces conditions:
- responsabilité limitée
- régime du directeur = 'assimilé salarié'
- nombre d'associés > 1
- nom: SASU
espace: forme juridique
applicable si:
toutes ces conditions:
- responsabilité limitée
- régime du directeur = 'assimilé salarié'
- nombre d'associés = 1
- nom: SA
espace: forme juridique
applicable si:
toutes ces conditions:
- responsabilité limitée
- régime du directeur = 'assimilé salarié'
- nombre d'associés > 1
- nom: SNC
espace: forme juridique
applicable si:
toutes ces conditions:
- régime du directeur = 'indépendant'
- nombre d'associés > 1
non applicable si:
une de ces conditions:
- responsabilité limitée
- nom: régime du directeur
formule:
une possibilité parmi:
- assimilé salarié
- indépendant
- nom: assimilé salarié
espace: régime du directeur
non applicable si:
toutes ces conditions:
- forme juridique = 'SARL'
- directeur majoritaire
- nom: nombre d'associés
unité: _
- nom: responsabilité limitée

View File

@ -648,10 +648,7 @@ function RuleValueLink({
<Value
maximumFractionDigits={0}
{...rule}
unit={
/* //TODO the unit should be integrated in the leaf rules of base.yaml and infered by mecanisms. Will be done in a future release*/
unit !== undefined ? unit : '€'
}
unit={unit !== undefined ? unit : '€'}
/>
{appendText && <> {appendText}</>}
</Link>

View File

@ -1,6 +1,6 @@
import possiblesDestinataires from 'Images/destinataires/destinataires.yaml'
import React from 'react'
import { Trans } from 'react-i18next'
import possiblesDestinataires from 'Règles/ressources/destinataires/destinataires.yaml'
import './Destinataire.css'
export default function Rule({ destinataire }) {
@ -16,8 +16,7 @@ export default function Rule({ destinataire }) {
<a href={destinataireData.lien} target="_blank">
{destinataireData.image && (
<img
src={require('Règles/ressources/destinataires/' +
destinataireData.image)}
src={require('Images/destinataires/' + destinataireData.image)}
/>
)}
{!destinataireData.image && (

View File

@ -1,6 +1,6 @@
import references from 'Images/références/références.yaml'
import { toPairs } from 'ramda'
import React from 'react'
import references from 'Règles/ressources/références/références.yaml'
import { capitalise0 } from '../../utils'
import './References.css'
@ -21,7 +21,7 @@ function Ref({ name, link }) {
<li key={name}>
<span className="imageWrapper">
{refData.image && (
<img src={require('Règles/ressources/références/' + refData.image)} />
<img src={require('Images/références/' + refData.image)} />
)}
</span>
<a href={link} target="_blank">

View File

@ -1,7 +1,7 @@
import { safeDump } from 'js-yaml'
import rules from 'Publicode/base.yaml'
import React from 'react'
import emoji from 'react-easy-emoji'
import rules from 'Règles/base.yaml'
import { Rule } from 'Types/rule'
import ColoredYaml from './ColoredYaml'

View File

@ -1,49 +0,0 @@
On discute ici des différentes syntaxes permettant d'exprimer un 'switch'.
La proposition suivante a l'avantage d'utiliser 'si' qui fait de suite comprendre cette notion de variation.
Elle semble la plus claire (1 test utilisateur...)
```yaml
formule:
assiette: assiette cotisations sociales
taux:
variations:
- si: statut cadre = non
2017: 16%
2016: 12%
- si: statut cadre = oui
2017: 6%
2016: 2%
```
Etant donné que le statut cadre est une exception, on pourrait aussi utiliser cette syntaxe bien plus succincte.
```yaml
formule:
assiette: assiette cotisations sociales
taux:
2017: 16%
2016: 12%
exception:
si: statut cadre
2017: 6%
2016: 2%
```
Dans le cas d'une variable de type énumération, il peut être commode de factoriser le sujet comparé et de parler de 'cas'.
> Mais la variable devient alors une clé, alors qu'elles sont normalement des valeurs, ça peut être perturbant
```yaml
formule:
assiette: assiette cotisations sociales
taux:
régime salarial:
- cas: agricol
2017: 16%
2016: 12%
- cas: général
2017: 6%
2016: 2%
```

View File

@ -1,47 +0,0 @@
Version 'OpenFisca'
```yaml
- seuil: 0
taux: 0%
- seuil: 1
taux: 7.8%
- seuil: 8
taux: 0%
```
Le problème de cette syntaxe, c'est que ce ne sont pas des tranches : la tranche 1 ne contient pas assez d'informations pour être calculée !
Version plus explicite :
```yaml
- de: 0
à: 1
taux: 0%
- de: 1
à: 8
taux: 7.8%
- de: 8
taux: 0%
```
Ou, étant donné que les barèmes se suivent a priori toujours et commencent à zéro :
```yaml
- en-dessous de: 1
taux: 0%
- de: 1
à: 8
taux: 7.8%
- au-dessus de: 8
taux: 0%
```
Autre version possible :
```yaml
seuils:
0: 0%
1: 7.8%
8: 0%
```

View File

@ -1,93 +0,0 @@
- Variable: ma variable
# Cette variable est valable quand les conditions de la liste 'concerne'
# sont vérifiées
concerne:
- ma condition 1
- ma condition 2
# Mais comment faire des & ? Comment dire : condition1 ET condition2 ?
# Première idée :
# Une liste c'est des OU par défaut
# Une :indentation c'est un ET par défaut
concerne:
- ma condition 1:
- ma condition 1.1
- ma condition 2
- ma condition 3:
- ma condition 3.1:
- ou ma condition 3.2
# Cela multiplie les indentations dans le cas de ET en série... trouvons mieux.
# Une liste est OU par défaut
# Un &: transforme transforme la liste suivant en ET
concerne:
- ma condition 1:
- ma condition 1.1
- ma condition 2
- ma condition 3 &:
- ma condition 3.1
- ou ma condition 3.2
# Essai dans la vrai vie
concerne & :
- effectif entreprise <= 200
- chiffre d'affaires < 50 000 000
- établissement . région ⊂ :
- Alsace
- Pays-Basque
- Bretagne
- Îles Kerguelen
- établissement . secteur ⊂ :
- industrie aéronautique
- industrie pharmaceutique
- agriculture biologique
# Et l'inverse ? Intégrer un OU dans une liste de ET (le & initial ne se transfère pas !)
conditions & :
- effectif entreprise <= 200
- chiffre d'affaires < 50 000 000
-
- entreprise . région = Alsace
- établissement . secteur = éducation
# On peut aussi partir sur des phrases qui enlèvent toute ambiguité
toutes ces conditions:
- effectif entreprise <= 200
- chiffre d'affaires < 50 000 000
- et une de ces conditions:
- entreprise . région = Alsace
- établissement . secteur = éducation
# On peut imaginer que 'toutes ces conditions' devienne en fonction du contexte:
toutes ces situations:
# On peut aussi légèrement adapter par exemple:
une de ces conditions: # devient :
et une de ces conditions:
# OPTIONS ABANDONNÉES
# alternative PAS POSSIBLE : | est réservé au strings multilignes
# concerne:
# - | ma condition 1:
# - ma condition 1.1
# - | ma condition 2
# - | ma condition 3:
# - & ma condition 3.1
# - & ma condition 3.2
# Lourd visuellement
concerne:
- :OU ma condition 1:
- ma condition 1.1
- :OU ma condition 2
- :OU ma condition 3:
- :ET ma condition 3.1
- :ET ma condition 3.2
# Puis tester avec des calculs (inclus) et &

View File

@ -1,9 +0,0 @@
Syntaxe alternative :
```yaml
multiplication:
assiette: assiette cotisations sociales
avant plafond: 0.001
plafond: plafond de la sécurité sociale
après plafond: 0
```

View File

@ -1,4 +1,5 @@
import { parseUnit } from 'Engine/units'
import rawRules from 'Publicode/base.yaml'
import {
assoc,
chain,
@ -24,8 +25,7 @@ import {
trim,
when
} from 'ramda'
import rawRules from 'Règles/base.yaml'
import translations from 'Règles/externalized.yaml'
import translations from '../locales/rules-en.yaml'
// TODO - should be in UI, not engine
import { capitalise0, coerceArray } from '../utils'
import { syntaxError, warning } from './error'

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 132 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View File

@ -1,5 +0,0 @@
description:
- travailleur non salarié
possibilités : travailleur individuel indépendant | gérant majoritaire de société
travailleur individuel indépendant: commerçant | artisan | professionnel libéral

View File

@ -1,23 +0,0 @@
# AFAIRE :
# - gérer l'aspect temporel : indemnité par jour, convertible proportionnellement.
# - les réductions de cotisations / impôts
# - créer et documenter les entités accord employeur, distance minimale domicile travail
. : ikv
nom: indemnité kilométrique vélo
description: Indemnité Kilométrique Vélo pour les salariés qui pédalent entre leur domicile et leur lieu de travail
formule:
applicable si: accord employeur ikv
multiplication:
assiette: 0.25
facteur: distance minimale domicile travail
# par jour travaillé
réduction:
cibles:
- cotisations sociales #pour l'employeur
- salaire net imposable #pour le salarié
plafond: 200
références:
Indemnité kilométrique: https://www.service-public.fr/professionnels-entreprises/vosdroits/F33808

View File

@ -1,2 +0,0 @@
Ce dossier contient tout ce qui peut ressembler à un brouillon de nouvelles règles à ajouter à la base.
Tout créativité est la bienvenue, mais gardez en tête les mécanismes qui existent déjà et le fait que tout brouillon a pour but d'être un jour _implémenté_.

View File

@ -1,67 +0,0 @@
formula API:
salaire_net <- 1200
=> 1200 for each month of 2016
Sinon :
base_function = requested_period_added_value
set_input = set_input_divide_by_period
Input is year:2013 12000€, output is month:2013-02
-> 1000€ per month, used in salaire_net_a_payer
- salaire_net is requested_period_added_value
Input is 1200 every month of 2015, requested output is year 2015
-> give SUM(months)
- effectif_entreprise is requested_period_last_value
Input is 29 every month of 2015, requested output is year 2015
-> give last value
Why not mean ?
# cotisation_sociale_mode_recouvrement
http://rfpaye.grouperf.com/article/0242/ms/rfpayems0242_0255976.html
cotisation_sociale_mode_recouvrement =
Mensuel avec régularisation en fin d'année
| Annuel
apply_bareme -> compute_cotisation_annuelle() | compute_cotisation_anticipee()
> tranche 1 à 1%, tranche 2 à 10%
Si mon mec a eu 10 000 € en décembre, et 1000 euros sinon toute l'année,
compute_cotisation_annuelle ->
- 0 tous les mois sauf déc
- en déc, assiette = 21 000. PSS = 38 616 -> il ne paie pas de tranche 2 (e.g retraite)
compute_cotisation_anticipee -> Si paiement des cotisations mensuelles en vrai:
- en décembre : il paie une grosse tranche 2 ~ 700 € !
- les autres mois il paie la tranche 1 ~ 10 €
compute_cotisation(year) - Somme(compute_cotisation(month))
= 210 - 800
Donc c'est bien correctement implémenté dans OpenFisca
URSSAF
> Ce contrôle est inévitable pour les salariés dont le salaire brut est variable, et qui peuvent donc se trouver, dun mois sur lautre, au-dessus puis en dessous du plafond de la Sécurité sociale (ou inversement).
https://www.urssaf.fr/portail/home/employeur/calculer-les-cotisations/la-base-de-calcul/lassiette-maximale/la-regularisation-annuelle.html
*C'est la DADS*
Donc selon l'URSSAF le calcul des cotisations se fait sur l'année !
Et puis :
> Vous pouvez, si vous le souhaitez, effectuer tous les mois une régularisation des plafonds de Sécurité sociale. Cette méthode permet déviter des régularisations trop importantes (en positif ou en négatif) en fin dannée.
BILAN
-------
Cette *régularisation progressive* n'est pas implémentée aujourd'hui
Elle est pourtant **obligatoire pour la DSN** !!
Je crois bien que c'est exactement ça qui est implémenté pour les deux réductions fillon et allocs. Il faut le refaire pour toutes les cotisations comportant des tranches !!

View File

@ -1,93 +0,0 @@
# https://fr.wikipedia.org/wiki/Salaire#Autres_r.C3.A9mun.C3.A9rations_du_travail
# https://contrat-de-travail.ooreka.fr/astuce/voir/297014/regimes-juridiques-du-travail-salarie-fonctionnaire-independant
# Tout individu qui décide d'avoir une activité professionnelle, que ce soit médecin, ouvrier, trappeur ou inventeur, doit choisir entre les 3 régimes de travail existant : salarié, fonctionnaire ou travailleur indépendant.
# Il n'existe aucune définition légale du contrat de travail.
Régimes juridiques du travail
---------------------------------
objectif: Hiérarchie du travail en France, dans le but de calculer les cotisations sociales. Ce qui nous intéresse, c'est toutes les exceptions qui impactent les cotisations. Vue employé. Il manque toute la partie entreprise.
Questions:
- Comment exprimer l'exclusivité des différents propriétés quand il le faut ?
Ex. choisissez votre statut : salarié classique | apprenti | stagiaire | employé services à la personne
Peut-on coder tout ça grâce à des union types ?
- Salariat
# http://francestrategie1727.fr/thematiques/nouvelles-formes-du-travail-et-de-la-protection-sociale/
# En droit du travail, la jurisprudence définit le salariat en repérant, en fonction des éléments de faits, lexistence de plusieurs critères constitutifs du contrat de travail : une prestation personnelle de travail, une rémunération, un lien de subordination
# Si ces trois critères sont réunis, il y a salariat, et les dispositions relatives au contrat de travail doivent sappliquer
- engagement: CDD | CDI | CTT (intérim)
- services à la personne
- employeurs particuliers
- organismes spécialisés
- personnes morales
- entrepreneurs individuels
- alternance: contrat de professionnalisation | apprentissage
- statut d'employé: cadre | non-cadre
- Assimilé Salarié
- journalistes (taux réduits !)
- artistes ? # http://patrickmorvan.over-blog.com/article-19134130.html
- VRP, VRP-multicartes (ne cotise pas à lUrssaf mais à la Caisse de Compensation des VRP)
- salariés portés
- les entrepreneur-salariés des coopératives dactivité et demploi (SCOP | SCIC)
- mannequins ?
- assimilation au salariat:
- gérant de succursales
- travailleur à domicile
- assistants maternels et familiaux
- concierges
- rattachés par le code de la sécurité sociale
# La définition du lien de subordination est commune au droit du travail et au droit de la sécurité sociale. Le droit de la sécurité sociale fait toutefois preuve dautonomie en assimilant à des salariés un plus grand nombre de travailleurs indépendants. En particulier, larticle L. 311-3 du Code de la sécurité sociale rattache au régime général [...] dautres professions ou activités :
- sous-agents dassurance,ouvreuses, accueillants familiaux, gérants non salariés des coopératives, gérants de sociétés à responsabilité limitée, les personnes ayant souscrit un service civique, les arbitres sportifs
- Stagiaire (indemnité)
- Doctorant (allocation de recherche)
- Étudiant-entrepreneur ?
- Travailleurs Indépendants (liberté dorganiser son travail)
- auto-entreprise ?
- agriculteur (inscrit à la chambre d'agriculture)
- commerçant (inscrit à la chambre de commerce et d'industrie)
- industriels ?
- artisan (inscrit à la chambre des métiers)
- libéral (inscrit à l'URSSAF)
- professions libérales règlementées
# Une profession libérale réglementée est celle exercée par des personnes ayant reçu un diplôme (généralement de l'enseignement supérieur) reconnu dans leur métier, qui sont tenues par un code de déontologie, et qui sont soumises au contrôle d'instances professionnelles.
- santé
- médicales
- paramédicales
...
- juridiques
- avocat
- notaire
...
- économiques
- expert-comptable
- conseiller fiscal
- techniques
- architecte
...
...
- non règlementées
# https://travailleur-independant.ooreka.fr/comprendre/profession-liberale-non-reglementee
- artiste (inscrit à la maison des artistes)
- Fonction publique (subordination à l'une des institutions suivantes)
- Fonctions: État | Collectivités | Hospitalière
- Fonctionnaire (traitement)
- Non-titulaire
- Agents contractuels
- engagement: CDI | CDD
- Auxiliaires
- Vacataires
- Stagiaires
- Emplois de cabinet
? ? ?
- Élu (traitement, indemnisation, avantage en nature) ?
- Intermittent du spectacle ? C'est un salarié, qui alterne contrats à durée déterminée, d'alternance de périodes d'emploi et de chômage -> droits de chômage adaptés
- Doctorant (allocation de recherche)
- Militaire (solde)

View File

@ -1,4 +0,0 @@
lexonération de la contribution d'assurance chômage pour trois mois dans les entreprises de 50 salariés et plus et pour quatre mois dans celles de taille inférieure pour les embauches en CDI de jeunes de moins de 26 ans sont exonérées de la part patronale
https://www.urssaf.fr/portail/home/employeur/calculer-les-cotisations/les-taux-de-cotisations/lassurance-chomage-et-lags/lexoneration-de-la-contribution.html

View File

@ -1,67 +0,0 @@
- Le JEI peut se cumuler avec le CICE sans problème.
- JEI n'est ouverte qu'à certains salariés... à préciser dans le simulateur.
- JEI est un dispositif complexe, soumis à beaucoup de conditions. l'attribution de cette aide dans les résultats est sujette à confirmation. Il faut que votre entreprise réponde aux conditions d'une JEI, et que votre employé soit elligible aux éxonérations de charges (consacré à 50% R&D + statut spécifique)
Voir https://www.service-public.fr/professionnels-entreprises/vosdroits/F31188
- JEI + Fillon + Allocs pas possible
Fillon, Allocs annulent un certain nombre de cotisations
JEI aussi
- Aide à l'embauche PME pas compatible avec JEI
Les exonérations JEI ne sont pas cumulables, pour lemploi dun même salarié, avec le bénéfice dune aide à lemploi de lEtat, dune autre mesure dexonération totale ou partielle des cotisations patronales, de taux spécifiques, dassiettes ou de montants forfaitaires de cotisations.
Le pb : dans OpenFisca on devrait pouvoir dire : CICE = - 6% de certaines cotisations !
- de quelles cotisations on parle ?
On peut simplement dire que !JEI if (Fillon || Allocs || Aide-PME)
Mais peut-on choisir (ex. pour un salaire de 3xSMIC), pas éxo allocs mais JEI ? Oui, "option entre mesures d'allègement"
https://www.urssaf.fr/portail/home/employeur/beneficier-dune-exoneration/exonerations-ou-aides-liees-au-s/jeunes-entreprises-innovantes/regles-de-cumul.html
Combien fait JEI ?
JEI > réduc allocs familiales
Fillon c'est éxo :
"zéro cotisations URSSAF au SMIC"
mmidcsa, allocs, fnal
JEI > Fillon
JEI > aide 1er employé
JEI > aide PME + aide 1er sal
Mais PME, SMIC => Aide PME + Fillon + aide allocs >> JEI
2500€ ???
---------------
Faut vraiment faire ce calcul : est-ce que JEI > aide PME + aide 1er sal + Fillon + aide allocs ??
---------------
JEI = calc, si > 0 et > aides machin machin, res calc
Toutes les aides non cumulables JEI = si estJEI, calc JEI, calc autres, si autres > JEI renvois aide
:-0
Résultat utilisateur
----------------
Je choisis JEI -> JEI sera choisi seulement si > aux éxos -> confusion possible
Ou alors : je choisis JEI (désirez-vous bénéficier du statut JEI ?) -> on utilise JEI et voilà.
-> IMPLÉ
Pour chaque aide, vérifier si JEI. Si exoneration_cotisations_employeur_jei > 0, 0.
JEI
---
- sal < 4.5x brut
exonération totale de charges sociales patronales d'assurances sociales et d'allocations familiales
= maladie (mmid sauf CSA), vieillesse (plaf + déplaf) et allocations familiales ?
? retraite ? CET ? etc.
pas éxo :
- AT/MP
- CSG et CRDS
- FNAL
- VT
- forfait sociale
- CSAutonomie
- chomage

View File

@ -1,33 +0,0 @@
- Aide: Aide embauche PME
attributs:
type: prime
thème: aide à l'embauche
par: État
démarches: demande rapide
description: |
Aide à l'embauche d'un salarié pour les entreprises de moins de 250 salariés, pour les embauche en 2016, a priori prolongée en 2017.
Le montant de l'aide pour 2 ans est égal à 4 000 € maximum pour un même salarié.
référence: https://www.service-public.fr/professionnels-entreprises/actualites/A10338
conditions à remplir:
toutes ces conditions:
- Activité = Salariat
- effectif entreprise <= 250
- 2016-01-18 < début contrat <= 2016
- durée contrat > 6 mois # CDD OK, pas cumul avec apprentissage, donc alternance seulement en Contrat Pro
- salaire de base < 1,3 * SMIC
- entreprise de droit privé # nécessaire ?
non-cumul:
# Cette prime est cumulable avec certains dispositifs existants : réduction générale des cotisations patronales sur les bas salaires, CICE, Acre
# L'aide n'est pas cumulable avec une autre aide de l'État à l'insertion, à l'accès ou au retour à l'emploi versée au titre du même salarié : contrat de génération, contrat d'apprentissage (sauf si l'embauche a lieu à l'issue de l'apprentissage), aide à l'embauche d'un premier salarié...
- Aide:
par: État
# Le montant de l'aide pour 2 ans est égal à 4 000 € maximum pour un même salarié.
# L'aide est versée sous la forme d'une prime trimestrielle de 500 €.
# Si le salarié est embauché à temps partiel, l'aide est proratisée en fonction de sa durée de travail. Par exemple, pour un CDI à temps partiel (à 80 % d'un temps plein), la prime est de 400 € par trimestre ( 3 200 € sur 2 ans).
périodicité: trimestrielle
proratisation: temps de travail
durée: 2 ans
formule: 500

View File

@ -1,43 +0,0 @@
- Aide: Aide embauche premier salarié
attributs:
type: prime
thème: aide à l'embauche
par: État
démarches: demande
description: |
Aide à l'embauche d'un premier salarié d'un montant maximal de 4 000 € pour toute embauche en CDI ou en CDD de plus de 6 mois comprise entre le 9 juin 2015 et le 31 décembre 2016.
référence: https://www.service-public.fr/professionnels-entreprises/actualites/008168
conditions à remplir:
toutes ces conditions:
- Activité = Salariat
- effectif entreprise = 0
- 2015-06-09 < début contrat <= 2016
- durée contrat > 6 mois # CDD OK, pas cumul avec apprentissage, donc alternance seulement en Contrat Pro
- salaire de base < 1.3 * SMIC
- entreprise de droit privé
#TODO Le ministère du Travail indique dans son questions-réponses que les comités d'entreprise sont également éligibles à cette aide, tout comme les groupements d'employeurs au titre de l'embauche d'un salarié permanent, mais aussi d'un salarié mis à disposition des entreprises adhérentes.
#TODO lentreprise na pas conclu de contrat de travail avec un salarié, au-delà de la période dessai, dans les 12 mois précédant la nouvelle embauche
#TODO
# Lentreprise peut bénéficier dune nouvelle aide, si un premier contrat de travail est rompu pour lun des motifs suivants :
# rupture de la période dessai,
# retraite,
# démission,
# décès,
# licenciement pour inaptitude ou pour faute grave ou lourde.
#
# Dans ce cas, laide totale versée à lemployeur (pour les 2 contrats) ne peut pas dépasser 4 000 €.
non-cumul:
# Cette prime est cumulable avec certains dispositifs existants : réduction générale des cotisations patronales sur les bas salaires, CICE, Acre
# L'aide n'est pas cumulable avec une autre aide de l'État à l'insertion, à l'accès ou au retour à l'emploi versée au titre du même salarié : contrat de génération, contrat d'apprentissage (sauf si l'embauche a lieu à l'issue de l'apprentissage), aide à l'embauche d'un premier salarié...
- Aide:
par: État
# Le montant de l'aide pour 2 ans est égal à 4 000 € maximum pour un même salarié.
# L'aide est versée sous la forme d'une prime trimestrielle de 500 €.
# Si le salarié est embauché à temps partiel, l'aide est proratisée en fonction de sa durée de travail. Par exemple, pour un CDI à temps partiel (à 80 % d'un temps plein), la prime est de 400 € par trimestre ( 3 200 € sur 2 ans).
périodicité: trimestrielle
proratisation: temps de travail
durée: 2 ans
formule: 500

View File

@ -1 +0,0 @@
# https://www.urssaf.fr/portail/home/outre-mer/employeur/le-cui-cae-domcontrat-dacces-a-l/les-exonerations-de-cotisations.html

View File

@ -1,88 +0,0 @@
- Aide: Exonération Lodeom
attributs:
type: exonération
thème:
- aide territoriale
- aide TPE
description: |
Une exonération de cotisations patronales dassurances sociales et dallocations familiales dite « exonération Lodeom » est ouverte aux employeurs situés dans les départements d'Outre-mer (Guadeloupe, Guyane, Martinique, la Réunion) ainsi qu'à Saint-Barthélemy et Saint-Martin.
Elle est accordée aux employeurs qui occupent moins de 11 salariés et aux employeurs de certains secteurs dactivité, quel que soit leur effectif.
référence: https://www.urssaf.fr/portail/home/outre-mer/employeur/exoneration-de-cotisations-dite.html
concerne:
- établissement . territoire outre-mer ⊂ :
- Guadeloupe
- Guyane
- Martinique
- la Réunion
- Saint-Barthélemy
- Saint-Martin
variables ciblées:
filtre:
Cotisation:
dû par: employeur
cibles:
- Cotisation: maladie
composante: maladie, maternité, invalidité, décès
- vieillesse
- allocations familiales
composantes:
- Aide:
variante: exonération de droit commun
conditions à remplir:
toutes ces conditions:
- effectif entreprise < 11
#TODO règles de calcul de l'effectif, maintien partiel de l'éxo en cas de croissance : https://www.urssaf.fr/portail/home/outre-mer/employeur/exoneration-de-cotisations-dite/les-employeurs-concernes-par-lex/lexoneration-de-droit-commun-pou.html
- secteur Salariat ⊂ : # Voir la remarque "Bon à savoir" de l'URSSAF : c'est bien le secteur d'activité du salarié qui importe
- Bâtiment et travaux publics, industrie
- Restauration
- Presse, production audiovisuelle
- Energies renouvelables
- Nouvelles technologies de l'information, de la communication et centres d'appel
- Pêche, cultures marines, aquaculture
- Agriculture y compris les coopératives agricoles et les SICA et leurs unions, coopératives maritimes et leurs unions
- Tourisme, restauration de tourisme y compris les activités de loisirs s'y rapportant et hôtellerie
- Transport aérien #TODO conditionné
- Transport maritime ou fluvial #TODO conditionné
# Méchanisme de calcul assez original
coefficient de réduction:
# Le principe de cette exonération :
# les cotisations cibles vont être rejouées,
# mais avec une assiette réduite à un coefficient * le smic, puis retranchées.
# la formule ci-dessous donne le coefficient qui varie sur des tranches
affine par morceaux:
multiplicateur: smic proratisé
tranches:
- seuil: 0
# Exonération totale des cotisations dassurances sociales et dallocations familiales
coefficient: 1
- seuil: 1.4
# Exonération sur la partie du salaire horaire brut limitée à 1.4
coefficient: 1.4
- seuil: 2
# le coefficient suit une fonction linéaire passant par la borne précédente et la borne suivante
#TODO est-ce clair ?
coefficient: linéaire
- seuil: 3
# Pas dexonération dès le 1er euro versé
exonération: 0
# Faire le même pour les autres conditions : CICE: [oui, non], type de réduction: [effectif, secteur]
- Aide:
variante: exonération renforcée
# Complexité énorme pour 'concerne' !!!!!!!!!!!!!!
conditions à remlir:
toutes ces conditions:
- effectif < 250 && CA < 50 000 000
- condition complexe ...
- soumis de plein droit ou sur option à un régime réel dimposition
#TODO IMPORTANT résoudre la syntaxe ET OU...
# si machin alors condition suppl
# méchanisme de calcul : IDEM exo droit commun

View File

@ -1,3 +0,0 @@
# Saint Pierre et Miquelon https://www.urssaf.fr/portail/home/outre-mer/employeur/exoneration-applicable-a-saint-p/le-calcul-de-lexoneration.html
# Même types de condition que Lodéom, calcul plus simple (conditions -> exo sur X*SMIC)

View File

@ -1,3 +0,0 @@
# Saint Pierre et Miquelon https://www.urssaf.fr/portail/home/outre-mer/employeur/exoneration-applicable-a-saint-p/le-calcul-de-lexoneration.html
# Même types de condition que Lodéom, calcul plus simple (conditions -> exo sur X*SMIC)

View File

@ -1,22 +0,0 @@
### Assurance maladie
- cotisation assurance maladie salariale supplémentaire (1,5 % du salaire brut au 1er janvier 2012)
https://baseircantec.retraites.fr/cotisations-assurance-maladie-alsace-moselle.html
Avec des taux différents pour le régime agricole.
Il semble y avoir une erreur (??) dans ce document : il indique que l'assiette est celle de la CSG, information non retrouvée ailleurs.
#### Bénéficiaires :
Voir alsace-moselle.yaml
### Apprentissage
Le taux de la taxe d'apprentissage est de 0,68 % (ou 0,44 % en Alsace-Moselle) de la masse salariale.
La taxe d'apprentissage comprend :
- une part régionale de 51 % qui constitue la fraction régionale pour l'apprentissage (FRA),
- un quota d'apprentissage de 26 % (49 % pour l'Alsace-Moselle) pour les centres de formations d'apprentis (CFA) et sections d'apprentissage (SA),
- un hors quota (23 %) destiné aux dépenses de formation hors apprentissage.
https://www.service-public.fr/professionnels-entreprises/vosdroits/F22574
http://www.juritravail.com/chiffres-et-indices/taux-cotisations-salariales-securite-sociale-cadres-non-cadres.html

View File

@ -1,32 +0,0 @@
variables du CDD:
# Evènements
- poursuite du CDD en CDI:
- embauche en CDI suivant le CDD
- CDD requalifié en CDI # quand ça arrive ?
- refus CDI avantageux # (emploi similaire, rémunération >=)
- engagement employeur complément formation professionnelle
# Evènements particuliers - Rupture
- rupture anticipée salarié
- rupture pour faute grave, lourde, cas de force majeure
- rupture CDD pendant période essai
# Types de CDD
- CDD type saisonnier
- contrat jeune vacances
- contrat aidé: # voir la définition précise dans indemnité de fin de contrat
- contrat unique insertion # (CUI)
- contrat de professionnalisation
- emploi avenir
- étudiant apprenti professeur
- CDD sénior
- CDD d'usage:
- secteur activité entreprise
- CDD type accroissement temporaire d'activité
- contrat de travail durée

View File

@ -1,8 +0,0 @@
# Cette cotisation est très compliquée de par ses conditions :
# - elle est à payer en totalité si l'entreprise n'est pas assujettie à la TVA sur son CA
# (c'est le cas des associations à but non lucratif)
# - elle est à payer proportionnellement si l'entreprise n'est pas assujettie à la TVA sur au moins 90% de son CA
# C'est donc simple si l'on pose la question du % du CA, mais on peut sûrement faire mieux !
#http://www.journaldunet.com/management/pratique/vie-de-l-entreprise/12235/le-taux-de-tva-en-2016.html

View File

@ -1,55 +0,0 @@
- contrat salarié: ATMP
nom: Cotisation d'Accidents du Travail et Maladies Professionnelles
description: Cotisation due au titre des Accidents du Travail et Maladies Professionnelles
cotisation:
branche: santé
collecteur: URSSAF
responsable: CARSAT
notes: |
Cette cotisation est particulière. Elle est calculée pour chaque établissement.
- Pour les petites entreprises, un taux par secteur.
- Pour les grandes, un taux individuel basé sur les sinistres passés.
- Pour les entreprise intermédiaires, un taux mixte.
Il nous faut arriver à exprimer à exprimer une première version du calcul de façon progressive : en prenant en main l'utilisateur.
formule:
multiplication:
assiette: cotisations . assiette
variations:
- si: entreprise . effectif >= 150
message: |
L'entreprise relève de la tarification individuelle.
Le taux AT/MP de l'établissement, privé, est accessible en ligne sur [net-entreprise](http://www.net-entreprises.fr/html/compte-accident-travail.htm) ou reçu par courrier.
taux:
variable: établissement . taux ATMP
alternative:
# mécanisme à utiliser quand la probabilité est forte pour que
# l'utilisateur ne connaisse pas cette information
message: En l'absence de cette information, estimez-le avec votre taux collectif
# il est ici redirigé vers une variable qui permet une approximation
variable: établissement . taux collectif ATMP
- si: entreprise . effectif >= 20
message: |
L'entreprise relève de la tarification mixte, une combinaison du taux individuel de l'établissement et du taux collectif du secteur de l'établissement.
Ce taux mixte est accessible en ligne sur [net-entreprise](http://www.net-entreprises.fr/html/compte-accident-travail.htm) ou reçu par courrier.
taux:
variable: établissement . taux ATMP
alternative:
message: En l'absence de cette information, estimez-le avec votre taux collectif
variable: établissement . taux collectif ATMP
- si: entreprise . effectif < 20
message: |
Votre entreprise relève du taux individuel, qui est privé.
Il est accessible en ligne sur [net-entreprise](http://www.net-entreprises.fr/html/compte-accident-travail.htm) ou reçu par courrier.
taux: établissement . taux collectif ATMP
- contrat salarié . ATMP : taux collectif ATMP
saisie:
selection: # affichera une saisie utilisateur de type <select> avec champ de recherche par mots clefs
données: https://raw.githubusercontent.com/sgmap/taux-collectifs-cotisation-atmp/master/taux-2016.csv
valeur clef: Taux net

View File

@ -1,12 +0,0 @@
- variable: indemnités journalières
si: Activité = Indépendant & catégorie Indépendant ⊂ [Commerçant, Artisan, Industriel]
Cotisation:
branche: ?
collecteur: RSI
référence: https://www.rsi.fr/ij.html
formule*:
type: linéaire
base: revenus professionnels
taux: 0.007
limite: 193080

View File

@ -1,30 +0,0 @@
- Somme: coût du travail (Salariat)
description: Coût du travail à long terme. Inclut les charges, aides et crédits différés
plus: salaire super brut
# Définition d'une somme sur de variables plutôt qu'une liste finie
-:
Réduction de Cotisation:
automatique: non
- Somme: salaire super brut (Salariat)
description: Coût du travail à court terme. Inclut les exonérations et allègements de charges
plus: salaire super brut hors allegements
-:
Réduction de Cotisation:
automatique: oui
- Somme: salaire super brut hors allegements (Salariat)
description: 'Salaire super-brut (fiche de paie): rémunération + cotisations sociales employeur'
# plus: @rémunérations + @primes et indémnités
plus:
- salaire brut
- Cotisation:
dû par: employeur
- Somme: salaire brut (Salariat)
description: Le salaire brut est l'ensemble des revenus du salarié (salaires) avant cotisations
plus: Salaire
# TODO pourquoi le salaire brut est-il dans OF différent de l'assiette des cotsoc ? pas de primes_salaires
# Refaire la part des choses

View File

@ -1,62 +0,0 @@
# TODO Aujourd'hui, nous n'avons besoin des contrats aidés que dans le contexte du motif de recours au CDD.
# Il faudra par la suite, par exemple pour un simulateur CUI, les en extraire, par exemple dans `contrat salarié`, mais toujours pouvoir les utiliser ici.
- espace: contrat salarié . CDD . motif
nom: contrat aidé
titre: Contrat aidé (CUI, alternance, ...)
# Voir le TODO de contrat salarié . CDD . événement . poursuite du CDD en CDI
# formule:
# une possibilité:
# - contrat unique d'insertion
# - emplois d'avenir
# - CDD sénior
# - alternance
# # CDD d'insertion (CDDI) https://www.service-public.fr/particuliers/vosdroits/F14100
formule: contrat salarié . CDD . motif = 'contrat aidé'
références:
Code du travail - Article L1242-3: https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=714D2E2B814371F4F1D5AA88472CD621.tpdila20v_1?idArticle=LEGIARTI000006901196&cidTexte=LEGITEXT000006072050&dateTexte=20170420
- espace: contrat salarié . CDD . motif . contrat aidé
nom: contrat unique d'insertion
# Voir le TODO de contrat salarié . CDD . événement . poursuite du CDD en CDI
# formule:
# une possibilité:
# - CUI-CAE
# - CUI-CIE
références:
CUI - dispositions générales: http://travail-emploi.gouv.fr/emploi/insertion-dans-l-emploi/contrats-aides/article/le-contrat-unique-d-insertion-cui-dispositions-generales
- espace: contrat salarié . CDD . motif . contrat aidé
nom: CDD sénior
titre: Contrat CDD sénior
- espace: contrat salarié . CDD . motif . contrat aidé
nom: emploi d'avenir
description: Contrat de travail aidé créé pour faciliter l'insertion professionnelle et laccès à une qualification pour les jeunes en difficulté
références:
Emploi d'avenir: https://www.service-public.fr/particuliers/vosdroits/F24438
- espace: contrat salarié . CDD . motif . contrat aidé
nom: alternance
# Voir le TODO de contrat salarié . CDD . événement . poursuite du CDD en CDI
# formule:
# une possibilité:
# - apprentissage
# - professionnalisation
- espace: contrat salarié . CDD . motif . contrat aidé . alternance
nom: apprentissage
description: Contrat de travail aidé destiné au jeune professionnel qui suit une formation en alternance entre une entreprise et un centre de formation.
référence: https://fr.wikipedia.org/wiki/Contrat_d'apprentissage#En_France
# cette variable peut se calculer ! Au boulot !
# y intégrer l'Étudiant apprenti professeur https://www.service-public.fr/particuliers/vosdroits/F24439
# attention ! Le contrat d'apprentissage n'est pas soumis aux dispositions légales du CDD:
# Article L1241-1
# Les dispositions du présent titre ne s'appliquent ni au contrat d'apprentissage [...]
- espace: contrat salarié . CDD . motif . contrat aidé . alternance
nom: professionnalisation
description: Contrat de travail aidé consistant en l'alternance de périodes dacquisition de savoir-faire en entreprise et de périodes de formation théorique dispensées en centres de formation ou par lentreprise elle-même si elle dispose dun service de formation agréé.
référence: https://fr.wikipedia.org/wiki/Contrat_de_professionnalisation
# cette variable peut se calculer ! Au boulot !

View File

@ -1,16 +0,0 @@
# Réflection sur la notion de haut niveau permettant d'implémenter les cotisations sociales
Malheureusement Contrat n'est pas adapté à toutes les situations: il est possible d'employer quelqu'un sans contrat:
- particuliers employeurs : plus de 8 heures par semaine ou de plus de 4 semaines consécutives dans l'année.
- La signature dun contrat de travail nest pas obligatoire dans certains cas. Cest le cas du Contrat de travail à Durée Indéterminée, considéré comme la forme normale et générale de la relation de travail entre un salarié et un employeur (Art. L1221-2 du Code du travail).
- un assimilé salarié peut sûrement ne pas avoir de contrat
> Cela dit, un contrat pourrait être noté "virtuel" pour ces cas là.
On peut alors se tourner vers le concept de "Salarié" (en y incluant tout ce qui y est assimilé).
Ce qui nous donnerait deux autres catégories : TNS (travailleur non salarié) et Fonction publique.
Mais !
- c'est étrange de se dire qu'un agent de la fonction publique, notamment contractuel, n'est pas salarié
- un stagiaire (et d'autres exceptions) n'est pas un salarié !
Autre possibilité : l'Activité.

View File

@ -1,28 +0,0 @@
- entité : activité
description: Une activité est une occupation d'un individu, souvent rémunérée.
valeur:
# Cette syntaxe indique que l'activité est une alternative entre plusieurs autres concepts incompatibles : c'est ce que l'on appelle une variante.
# Ce qui ne veux pas dire que le cumul de plusieurs activités est impossible (etc. salariat et indépendant), mais celui-ci est défini en amont dans le concept d'individu.
une possibilité:
- contrat salarié
- indépendant
- fonction publique
- stage
- inactif # (demandeur d'emploi, etc.)
# TODO ...
- activité: département
description: Département où l'activité est exercée
type: numerique
- activité: individu
description: l'individu qui exerce cette activité
# on ne spécifie pas d'information de valeur -> une activité a une propriété individu, qui ne créée pas d'entité, c'est simplement une attache à l'entité individu existante
# TODO C'est aux fonctions de contrôle que revient la tâche de vérifier la cohérence des données
# Par exemple, un on peut cumuler un emploi dans la fonction publique et une activité d'indépendant que sous certaines conditions.
# TODO durée déterminée: Booléen (Non)
# peut être un calcul allant chercher les propriétés des types : CDD pour le salariat, durée du stage, etc.

View File

@ -1,11 +0,0 @@
# Pourquoi ne pas simplement définir l'espace de nom en en-tête du fichier, par ex:
# ```espace: individu . sexe```
# pour ne pas avoir à le répéter ci-dessous ?
# -> pour pouvoir dans un futur, que l'on espère proche, éditer ou parcourir ce code source directement dans un navigateur _par espace de nom_ avec une barre de recherche avancée. La notion de fichier serait alors embêtante.
- individu . sexe : masculin
image: fa-male
- individu . sexe : masculin
image: fa-female

View File

@ -1,47 +0,0 @@
# Un des concepts de base du système, l'individu.
# C'est une collection de champs (un _record_)
- entité : individu
# individu n'est une proriété d'aucun autre objet
description: C'est le concept représentant une personne
- individu: sexe
valeur:
une possibilité:
- masculin
- féminin
# Voir ./individu.sexe.yaml, ces termes y sont définis.
# Ils sont attachés à l'espace de nom `individu . sexe`.
#
# Pourquoi les propriétés de l'objet individu sont-elles éclatées dans une liste plate ? Concrêtement, pourquoi `sexe` n'est pas une propriété écrite directement au sein de l'objet `individu` ?
# -> Pour plus de lisibilité : sexe, masculin, féminin peuvent s'étendre sur plusieurs lignes et rendraient l'objet individu illisible si elles y étaient toutes imbriquées.
# Des objets à proriété pourront être reconstitués dans le navigateur.
# Cette propriété est non calculable.
# On peut parler de variables d'entrée, à saisir par l'utilisateur de la simulation.
- individu: date de naissance
valeur:
date: JJ-MM-AAAA
# Celle-ci est calculable, mais toujours saisissable
- individu: age
valeur:
différence temporelle:
échelle: année
entre: date de naissance
et: aujourd'hui
# A ce concept est associée une liste d'un autre concept, l'Activité.
# La liste dénote le fait qu'elles peuvent se cumuler.
- individu: activités
valeur:
liste: activité
# Lors de l'éxecution du simulateur, ce concept sera instancié avec des données,
# potentiellement plusieurs fois pour construire une population :
# {
# date de naissance: 1989-08-01,
# activités: [a1, a2]
# }

View File

@ -1,21 +0,0 @@
- entité: régime alsace moselle
description: Appartenance au régime local de sécurité sociale Alsace-Moselle
référence: http://regime-local.fr/salaries/
valeur:
une de ces conditions:
- affiliation 2012 conservée
- activité . département ⊂ [57 67 68] #TODO peut-être trop complexe pour être une expression infixe
- itinérance en Alsace Moselle:
- departement établissement ⊂ [57 67 68]
- itinérance en Alsace Moselle contractualisée
- régime alsace moselle: affiliation 2012 conservée
type: booléen
- régime alsace moselle: itinérance en Alsace Moselle
description: Le salarié effectue une itinérance en Alsace-Moselle
type: booléen
- régime alsace moselle: itinérance en Alsace Moselle contractualisée
description: Le salarié effectue une itinérance en Alsace-Moselle, et celle-ci est définie explicitement dans le contrat de travail
type: booléen

View File

@ -1,2 +0,0 @@
Dans ce dossier `entités`, on définit l'individu, l'entreprise, l'établissement, le contrat etc.
Ce sont principalement des variables sans formule compliquée.

View File

@ -1,37 +0,0 @@
- entité : établissement
- établissement: entreprise
- établissement: employés
valeur:
liste: contrat salarié #TODO stagiaires, etc. ??
- établissement: effectif
valeur:
décompte: employés
- établissement: SIRET
valeur: entier à 14 chiffres
- établissement: code commune
valeur: entier à 5 chiffres
- établissement: code postal
valeur: entier à 5 chiffres
- établissement: compte AT/MP
- établissement . compte AT/MP: code risque
valeur: ?
- établissement . compte AT/MP: appréciation du risque
valeur:
une possibilité:
- très élevé
- élevé
- moyen
- faible
- établissement . compte AT/MP: taux risque
# TODO faire référence à la règle de atmp.yaml

View File

@ -1,22 +0,0 @@
http://travail-emploi.gouv.fr/droit-du-travail/temps-de-travail-et-conges/conges-et-absences/article/les-conges-payes
> Est appelée indemnité de congés payés la rémunération à laquelle le salarié a droit pendant son congé annuel.
-> le salarié n'est pas payé pendant ses jours de congés, mais reçoit une indemnité.
Son mode de calcul fait qu'elle est forcément plus elevée que le salaire qui serait reçu s'il avait travaillé !
> calcul : https://www.cogilog.com/Logiciel/exemple-bulletin-paie-conges-payes-4.html
-> QUESTIONS
- Faut-il en intégrer une estimation dans le prix d'embauche ?
Oui je pense
- Si un salarié a négocié un salaire de 40 000 euros annuels sur son contrat de travail
Il prend 25 jours de congés.
Soit :
- il reçoit donc plus d'argent pendant ses congés que pendant ses jours de travail, donc il reçoit au total plus que 40k, par exemple 40 300€
- l'employeur abaisse son taux horaire pour prendre en compte la différence et le paie bien 40k par an

View File

@ -1,15 +0,0 @@
# - Salaire: salaire de base
#
# - Salaire: salaire apprentis
#
# - Salaire: salaire contrat professionnalisation
#
# - Prime: primes salarié
# description: Indemnités, primes et avantages en argent
- Variable: cotisations . assiette
description: L'assiette de la plupart des cotisations sociales pour le calcul des cotisations sociales sur le travail salarié.
formule:
somme: ? # juste pour le type numérique
# - salaire brut
# - primes etc.

View File

@ -1,39 +0,0 @@
- Somme: salaire net à payer
description: Salaire net à payer (fiche de paie)
tags:
- rémunération
- net
somme: |
+ salaire net
+ depense_cantine_titre_restaurant_employe
+ indemnites_forfaitaires
+ remuneration_apprenti
+ stage_gratification
- Somme: salaire net
description: Salaire net d'après définition INSEE
tags:
- rémunération
- net
somme: |
+ salaire imposable
+ CRDS@revenu=activité
+ CSG@revenu=activité&déductible=non
- Somme: salaire imposable
# TODO cerfa_field
somme: |
+ salaire de base
+ primes_salaires
+ remuneration_principale
+ primes_fonction_publique
+ indemnite_residence
+ supp_familial_traitement
+ csg_deductible_salaire
+ rev_microsocial_declarant1
+ indemnite_fin_contrat
+ complementaire_sante_salarie
- hsup
plus:
type: cotisations
dû par: salarié

View File

@ -1,20 +0,0 @@
- Variable: plafond sécurité sociale
type de période: mensuel
formule:
2017: 3269
2016: 3218
2015: 3170
2014: 3129
2013: 3086
2012: 3031
2011: 2946
2010: 2885
2009: 2859
2008: 2773
2007: 2689
2006: 2589
2005: 2516
2004: 2476
2003: 2432
2002: 2352
2001: 2279

View File

@ -1,35 +0,0 @@
# Voilà un brouillon de la définition des "types de variables". Reste à coder ça d'une façon ou d'une autre.
Variable
| Cotisation
| Réduction de Cotisation
| Prestation
| Rémunération
Rémunération
| Rémunération salarié
| Avantage en nature
| ? pour les TNS
| Indemnité de stage
| ?
Rémunération salarié
domaine: Salariat
type:
| Salaire
| Prime
Cotisation
domaine: Activité
description:
- Cotisation sociale
- Prélèvement social sur les revenus du travail
- Prélèvement ayant pour base l'assiette des cotisations sociales
# contrat: Contrat
dû par: salarié | employeur
branche: santé | chômage | vieillesse | famille
collecteur: URSSAF | RSI # | ...
# D'autres attributs peuvent être ajoutés directement dans les instances de cette classe.
# Ils ne sont alors pas contraints ni obligatoires
# Example : type de retraite: base | complémentaire

View File

@ -1,33 +0,0 @@
- nom: CDI au salaire médian
situation:
contrat salarié . rémunération . brut de base: 2300
- nom: CDI au SMIC
situation:
contrat salarié . rémunération . brut de base: 1500
- nom: CDI au SMIC temps partiel 24h / semaine
situation:
contrat salarié . rémunération . brut de base: 1030
contrat salarié . temps partiel: oui
contrat salarié . temps partiel . heures par semaine: 24
- nom: CDI cadre salaire cadre médian
situation:
contrat salarié . rémunération . brut de base: 3600
contrat salarié . statut cadre: oui
- nom: CDD usage de 2 mois
situation:
contrat salarié . rémunération . brut de base: 2300
contrat salarié . type de contrat: CDD
contrat salarié . CDD . motif: 'classique . usage'
contrat salarié . CDD . durée: 2
- nom: CDD accroissement d'activité de 1 an
situation:
contrat salarié . rémunération . brut de base: 2300
contrat salarié . type de contrat: CDD
contrat salarié . CDD . motif: 'classique . accroissement activité'
contrat salarié . CDD . durée: 12

View File

@ -1,4 +0,0 @@
#TODO
Il faudra migrer les éléments des dossiers destinataires et références dans une définition de type des propriétés `cotisation` et `meta`.
Lire la note `typer les variables`.

View File

@ -10,7 +10,7 @@ const fs = require('fs')
const path = require('path')
const yaml = require('js-yaml')
const sourcePath = path.resolve(__dirname, '../règles/base.yaml')
const sourcePath = path.resolve(__dirname, '../../publicode/base.yaml')
const outPath = path.resolve(__dirname, '../types/dottednames.json')
function persistJsonFileFromYaml() {

View File

@ -6,7 +6,7 @@ let R = require('ramda')
var querystring = require('querystring')
let { safeLoad } = require('js-yaml')
let rulesTranslationPath = path.resolve('source/règles/externalized.yaml')
let rulesTranslationPath = path.resolve('source/locales/rules-en.yaml')
let UiTranslationPath = path.resolve('source/locales/en.yaml')
// TODO: This should be shared with the variable exported by Engine/rules, but
@ -24,7 +24,7 @@ let attributesToTranslate = [
function getRulesMissingTranslations() {
let rules = safeLoad(
fs.readFileSync(path.resolve('source/règles/base.yaml'), 'utf-8')
fs.readFileSync(path.resolve('publicode/base.yaml'), 'utf-8')
)
let currentExternalization = safeLoad(

View File

@ -1,38 +0,0 @@
#exampleSituations ul {
margin-top: 1.5em;
}
#exampleSituations .example {
border-bottom: 1px solid #eee;
width: 100%;
display: flex;
justify-items: space-between;
align-items: center;
}
#exampleSituations .example h2 {
width: 25%;
display: inline-block;
font-size: 120%;
text-align: center;
}
#exampleSituations .example ul {
width: 100%;
display: flex;
align-items: center;
justify-content: space-around;
list-style: none;
flex-wrap: wrap;
}
#exampleSituations .example li {
padding-top: 0;
}
#exampleSituations .example h3 {
font-size: 95%;
font-weight: 600;
color: #444;
}
#exampleSituations .example .figure {
font-size: 110%;
text-align: center;
display: inline-block;
width: 100%;
}

View File

@ -1,78 +0,0 @@
// Page listing the engine's currently implemented mecanisms and their tests
import { ThemeColorsContext } from 'Components/utils/colors'
import { analyseMany } from 'Engine/traverse'
import React, { useContext } from 'react'
import emoji from 'react-easy-emoji'
import { Trans } from 'react-i18next'
import { useSelector } from 'react-redux'
import examples from 'Règles/cas-types.yaml'
import {
parsedRulesSelector,
ruleDefaultsSelector
} from 'Selectors/analyseSelectors'
import { DottedName } from 'Types/rule'
import './ExampleSituations.css'
export default function ExampleSituations() {
return (
<div className="ui__ container" id="exampleSituations">
<h1>
{emoji('💡 ')}
<Trans>Quelques exemples de salaires</Trans>
</h1>
<ul>
{examples.map((ex: any) => (
<Example ex={ex} key={ex.nom} />
))}
</ul>
</div>
)
}
const Example = function Example({ ex: { nom, situation } }) {
const defaults = useSelector(ruleDefaultsSelector)
const parsedRules = useSelector(parsedRulesSelector)
const colors = useContext(ThemeColorsContext)
let [total, net, netAprèsImpôts] = analyseMany(parsedRules, [
'total',
'net',
'net après impôt'
])(
(dottedName: DottedName) => ({ ...defaults, ...situation }[dottedName])
).targets,
figures = [
total,
{
dottedName: 'contrat salarié . rémunération . brut de base',
nodeValue: situation['contrat salarié . rémunération . brut de base'],
title: 'Salaire brut'
},
net,
{ ...netAprèsImpôts, title: 'Après impôt' }
],
de = figures[0].nodeValue,
à = figures[3].nodeValue,
percentage = Math.round(((de - à) / de) * 100)
return (
<li className="example">
<h2>{nom}</h2>
<ul>
{figures.map(t => (
<li key={t.dottedName}>
<h3>{t.title}</h3>
<span style={{ color: colors.textColorOnWhite }} className="figure">
{Math.round(t.nodeValue)}
</span>
</li>
))}{' '}
<li key="%">
<h3>Prélèvements</h3>
<span style={{ color: colors.textColorOnWhite }} className="figure">
{percentage} %
</span>
</li>
</ul>
</li>
)
}

View File

@ -2,7 +2,6 @@ import RulePage from 'Components/RulePage'
import { SitePathsContext } from 'Components/utils/withSitePaths'
import React, { useContext } from 'react'
import { Route, Switch } from 'react-router'
import ExampleSituations from './ExampleSituations'
import RulesList from './RulesList'
export default function Documentation() {
@ -10,11 +9,6 @@ export default function Documentation() {
return (
<Switch>
<Route exact path={sitePaths.documentation.index} component={RulesList} />
<Route
exact
path={sitePaths.documentation.exemples}
component={ExampleSituations}
/>
<Route
path={sitePaths.documentation.index + '/:name+'}
component={RulePage}

View File

@ -118,7 +118,6 @@ export const constructLocalizedSitePath = (language: string) => {
},
nouveautés: t('path.nouveautés', '/nouveautés'),
documentation: {
exemples: t('path.documentation.exemples', '/exemples'),
index: t('path.documentation.index', '/documentation'),
rule: (dottedName: DottedName) => '/' + encodeRuleName(dottedName)
},

View File

@ -8,13 +8,13 @@ module.exports.default = {
resolve: {
alias: {
Engine: path.resolve('source/engine/'),
Règles: path.resolve('source/règles/'),
Actions: path.resolve('source/actions/'),
Ui: path.resolve('source/components/ui/'),
Components: path.resolve('source/components/'),
Selectors: path.resolve('source/selectors/'),
Reducers: path.resolve('source/reducers/'),
Types: path.resolve('source/types/'),
Publicode: path.resolve('publicode/'),
Images: path.resolve('source/images/')
},
extensions: ['.js', '.ts', '.tsx']

View File

@ -1,7 +1,7 @@
import { expect } from 'chai'
import Lib from '../source/engine/index'
import co2 from '../source/règles/co2.yaml'
import sasuRules from '../source/règles/sasu.yaml'
import co2 from './rules/co2.yaml'
import sasuRules from './rules/sasu.yaml'
describe('library', function() {
it('should evaluate one target with no input data', function() {

View File

@ -1,7 +1,8 @@
/*
Les mécanismes sont testés dans mécanismes/ comme le sont les variables directement dans la base YAML.
On construit dans chaque fichier une base YAML autonome, dans laquelle intervient le mécanisme à tester,
puis on teste idéalement tous ses comportements sans en faire intervenir d'autres.
Les mécanismes sont testés dans mécanismes/ comme le sont les variables
directement dans la base Publicode. On construit dans chaque fichier une base
Publicode autonome, dans laquelle intervient le mécanisme à tester, puis on
teste idéalement tous ses comportements sans en faire intervenir d'autres.
*/
import { expect } from 'chai'

View File

@ -81,7 +81,6 @@ chauffage . impact par kWh:
notes: |
La base carbone de l'ADEME ne permet malheureusement pas de faire des liens profonds vers les chiffres utilisés.
Pour l'électricité, nous retenons le chiffre de l'ADEME "Electricité - 2016 - usage : Eau Chaude Sanitaire - consommation".
références:
base carbone ADEME: http://www.bilans-ges.ademe.fr/fr/accueil
électricité: https://www.electricitymap.org/?page=country&solar=false&remote=true&wind=false&countryCode=FR

View File

@ -1,4 +1,6 @@
# Ce petit ensemble de règles a été historiquement utilisé pour tester l'externalisation du moteur, et est en train d'être réintégré progressivement dans la base centrale
# Ce petit ensemble de règles a été historiquement utilisé pour tester
# l'externalisation du moteur, et est en train d'être réintégré progressivement
# dans la base centrale
chiffre affaires:
unité par défaut: €/mois

View File

@ -31,7 +31,7 @@
"Engine/*": ["engine/*"],
"Images/*": ["images/*"],
"Reducers/*": ["reducers/*"],
"Règles/*": ["règles/*"],
"Publicode/*": ["../publicode/*"],
"Selectors/*": ["selectors/*"],
"Types/*": ["types/*"]
}