Première ébauche des entités nécessaires au calcul des cotisations sociales

La notion d'Activité permet d'envisager la pluri-activité, avec notamment le statut d'indépendant (TNS).
La notion d'Entreprise permet:
- d'introduire la fiscalité des entreprises
- d'ordonner les concepts en allégeant l'Individu auquel est aujourd'hui rattaché les propriétés de son entreprise
- d'implémenter le calcul de certaines cotisations sociales qui dépendent de l'ensemble des salariés (taxe sur les salaires)
pull/1/head
Mael Thomas 2016-08-29 11:27:03 +02:00
parent ad87a100db
commit 60684a9dc2
11 changed files with 125 additions and 83 deletions

View File

@ -0,0 +1,21 @@
# Individu est le concept représentant une personne.
# C'est un 'record', une collection de champs nommés
Individu
# Ce concept a des propriétés non calculables.
# On peut parler de variables d'entrée, à saisir par l'utilisateur de la simulation.
date de naissance: YYYY-MM-JJ
# Et d'autres calculables. Mais toujours saisissables.
# On parle alors simplement de variables.
age = calc(date de naissance): nombre positif
# 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.
activités: 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]
# }
# -------> allez voir le concept Activité

View File

@ -0,0 +1,14 @@
Activité
# L'activité d'un individu, souvent rémunérée.
Salariat
| Indépendant
| Fonction publique
| Stage
| Demandeur Emploi
# 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.
# C'est aux TODO 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.

View File

@ -0,0 +1,52 @@
Salariat
# Sur ce concept de Salariat sont définies une liste de propriétés.
# Le salarié est embauché dans un établissement, lui même rattaché à une entreprise
établissement: Établissement
salaire de base: nombre positif (0)
salaire brut: salaire de base + primes + indemnités
salaire net: calc()
cout du travail: calc()
terme Contrat: CDI | CDD
statut: Cadre | Non cadre
# Cette propriété a pour type une énumération, mais peut-être calculée.
régime géographique:
calc() :
| Alsace-Moselle
| Outre-Mer
# les variables contenues dans le concept Régime Alsace Moselle (précisé plus loin) servent au calcul ci-dessus
régime alsace moselle: Régime Alsace Moselle
# Une instance de Salariat peut préciser le type de contrat.
contrat: Contrat
Aidé:
| Contrat unique insertion
| Contrat professionnalisation
| Emploi avenir
| Étudiant apprenti professeur
| CDD sénior
Alternance:
| Apprentissage
| Contrat professionnalisation
# Ce type Contrat n'est pas exactement une hiérarchie : on observe que Contrat Professionnalisation est à la fois un contrat aidé et un contrat d'alternance. Ce type de définition revient à combiner ces deux tâches :
# - écrire une liste de possibilités exclusives pour les contrats
# - définir des variables de calcul d'appartenance à une catégorie : aidé = contrat est (CUI ou Contrat Pro ou ...)
Contrat
Aidé:
| Contrat unique insertion
| Contrat professionnalisation
| Emploi avenir
| Étudiant apprenti professeur
| CDD sénior
Alternance:
| Apprentissage
| Contrat professionnalisation
# Il aurait été possible d'attacher ces propriétés directement au concept Salariat, mais la définition de sous-concepts nous donne de l'ordre. C'est en quelque sorte un espace de nom ('namespace').
Régime Alsace Moselle
affiliation 2012 conservée: Booléen
département activité salarié: code département
itinérance en Alsace Moselle: Booléen
itinérance en Alsace Moselle contractualisée: Booléen

View File

@ -0,0 +1,22 @@
# Le nom de ce fichier n'est qu'un guide : plusieurs concepts sont ici définis
Établissement
Entreprise
effectif: nombre positif
code INSEE: entier à 5 chiffres
code Postal = calc(code INSEE) : entier à 5 chiffres
compte AT/MP: Compte AT/MP
Compte AT/MP
code risque: caractères
appréciation du risque: très élevé | élevé | moyen | bureau
taux de risque: calc(code risque) nombre positif
Entreprise
# l'effectif est par défaut automatiquement rempli de cette façon
effectif: (sum(Établissements.effectif)): nombre positif
employés: liste Individus
établissements: liste Établissements
nombre apprenti: nombre positif
taxe sur les salaires(Cotisation, Impôt) = sum(Employés.Taxe sur les salaires)

View File

@ -0,0 +1,16 @@
# 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 emploi:
- 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 pourrait 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,76 +0,0 @@
# Malheureusement Contrat n'est pas adapté à toutes les situations: il est possible d'employer quelqu'un sans emploi
# - 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 pourrait 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é.
Individu
date de naissance: YYYY-MM-JJ
age = calc(date de naissance): nombre positif
liste Activité
Activité
# Une activité d'un individu, souvent rémunérée et cumulable.
Salariat
| Indépendant
| Fonction publique
| Stage
Salariat
# Sur ce concept de Salariat sont définies une liste de propriétés
Établissement
salaire de base: nombre positif (0)
salaire brut: salaire de base + primes + indemnités
salaire net: calc()
cout du travail: calc()
Rémunérations: liste Prime
Contrat:
| Apprentissage
| CDD Sénior
| Contrat Professionnalisation
| Contrat Unique Insertion
| Contrat Aidé
Terme Contrat: CDI | CDD
Contrat aidé:
| Contrat unique insertion
| Contrat de professionnalisation
| Emploi avenir
| Étudiant apprenti professeur
| CDD sénior
Alternance:
| Apprentissage
| Contrat professionnalisation
Statut: Cadre | Non cadre
Établissement
Entreprise
effectif: nombre positif
code INSEE: entier à 5 chiffres
code Postal = calc(code INSEE) : entier à 5 chiffres
Compte AT/MP
Compte AT/MP
code risque AT/MP: caractères
taux de risque AT/MP: nombre positif
Entreprise
effectif = sum(Etablissements.effectif)
employés: liste Individus
nombre apprenti: nombre positif
établissements: liste Établissements
taxe sur les salaires(Cotisation, Impôt) = sum(Employés.Taxe sur les salaires)

View File

@ -1,7 +0,0 @@
classe: Individu
date de naissance: Date
contrats de travail: [Contrat]
# famille: Famille etc