🔥 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 utilepull/870/head
|
@ -1,2 +0,0 @@
|
|||
[core]
|
||||
quotepath = false
|
|
@ -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/).
|
2
LICENSE
|
@ -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
|
||||
|
|
10
README.md
|
@ -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
|
||||
|
||||
|
|
|
@ -50,7 +50,6 @@ jobs:
|
|||
steps:
|
||||
- install
|
||||
- run: |
|
||||
git config --global core.quotepath false
|
||||
yarn test
|
||||
yarn test-regressions
|
||||
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
- https://thenounproject.com/search/?q=employee&i=859814
|
|
@ -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
|
||||
|
|
@ -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>
|
||||
|
|
|
@ -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 && (
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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'
|
||||
|
||||
|
|
|
@ -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%
|
||||
```
|
|
@ -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%
|
||||
```
|
|
@ -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 &
|
|
@ -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
|
||||
```
|
|
@ -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'
|
||||
|
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 132 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
|
@ -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
|
|
@ -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
|
|
@ -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é_.
|
|
@ -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, d’un mois sur l’autre, 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 d’anné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 !!
|
|
@ -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, l’existence 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 s’appliquer
|
||||
- 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 à l’Urssaf mais à la Caisse de Compensation des VRP)
|
||||
- salariés portés
|
||||
- les entrepreneur-salariés des coopératives d’activité et d’emploi (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 d’autonomie en assimilant à des salariés un plus grand nombre de travailleurs indépendants. En particulier, l’article L. 311-3 du Code de la sécurité sociale rattache au régime général [...] d’autres professions ou activités :
|
||||
- sous-agents d’assurance,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é d’organiser 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)
|
|
@ -1,4 +0,0 @@
|
|||
l’exoné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
|
||||
|
|
@ -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 l’emploi d’un même salarié, avec le bénéfice d’une aide à l’emploi de l’Etat, d’une autre mesure d’exonération totale ou partielle des cotisations patronales, de taux spécifiques, d’assiettes 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
|
|
@ -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
|
|
@ -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 l’entreprise n’a pas conclu de contrat de travail avec un salarié, au-delà de la période d’essai, dans les 12 mois précédant la nouvelle embauche
|
||||
#TODO
|
||||
# L’entreprise peut bénéficier d’une nouvelle aide, si un premier contrat de travail est rompu pour l’un des motifs suivants :
|
||||
# rupture de la période d’essai,
|
||||
# retraite,
|
||||
# démission,
|
||||
# décès,
|
||||
# licenciement pour inaptitude ou pour faute grave ou lourde.
|
||||
#
|
||||
# Dans ce cas, l’aide totale versée à l’employeur (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
|
|
@ -1 +0,0 @@
|
|||
# https://www.urssaf.fr/portail/home/outre-mer/employeur/le-cui-cae-domcontrat-dacces-a-l/les-exonerations-de-cotisations.html
|
|
@ -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 d’assurances sociales et d’allocations 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 d’activité, 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 d’assurances sociales et d’allocations 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 d’exoné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 d’imposition
|
||||
#TODO IMPORTANT résoudre la syntaxe ET OU...
|
||||
# si machin alors condition suppl
|
||||
|
||||
# méchanisme de calcul : IDEM exo droit commun
|
|
@ -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)
|
|
@ -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)
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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 l’accè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 d’acquisition de savoir-faire en entreprise et de périodes de formation théorique dispensées en centres de formation ou par l’entreprise elle-même si elle dispose d’un service de formation agréé.
|
||||
référence: https://fr.wikipedia.org/wiki/Contrat_de_professionnalisation
|
||||
# cette variable peut se calculer ! Au boulot !
|
|
@ -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 d’un contrat de travail n’est pas obligatoire dans certains cas. C’est 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é.
|
|
@ -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.
|
|
@ -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
|
|
@ -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]
|
||||
# }
|
|
@ -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
|
|
@ -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.
|
|
@ -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
|
|
@ -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
|
|
@ -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.
|
|
@ -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é
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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`.
|
|
@ -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() {
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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%;
|
||||
}
|
|
@ -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>
|
||||
)
|
||||
}
|
|
@ -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}
|
||||
|
|
|
@ -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)
|
||||
},
|
||||
|
|
|
@ -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']
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -31,7 +31,7 @@
|
|||
"Engine/*": ["engine/*"],
|
||||
"Images/*": ["images/*"],
|
||||
"Reducers/*": ["reducers/*"],
|
||||
"Règles/*": ["règles/*"],
|
||||
"Publicode/*": ["../publicode/*"],
|
||||
"Selectors/*": ["selectors/*"],
|
||||
"Types/*": ["types/*"]
|
||||
}
|
||||
|
|