🔥 Refacto des contrôles

Ce commit supprime le concept de "contrôle" au sein du moteur, en les
remplaçant par des règles publicodes classiques. Cela permet notamment
d'uniformiser les règles d'applicabilité (désactivation via espace de
nom ou "rend non applicable" par exemple) ainsi que d'accéder à la
valeur d'un contrôle donné avec le nom de la règle correspondante.

Par ailleurs renomme le concept de "contrôle" en "notifcation" dans la
partie mon-entreprise/.
pull/1133/head
Maxime Quandalle 2020-09-07 12:14:24 +02:00
parent 29c74da20b
commit 847b4eeb4c
21 changed files with 625 additions and 732 deletions

View File

@ -16,7 +16,6 @@ let attributesToTranslate = [
'question',
'résumé',
'suggestions',
'contrôles',
'note'
]
@ -69,28 +68,6 @@ function getRulesMissingTranslations() {
}
}, {})
}
if ('contrôles' === attrToTranslate) {
return v.reduce((acc, control, i) => {
const enTrad = `contrôles.${i}.en`
const frTrad = `contrôles.${i}.fr`
if (
currentTranslation &&
currentTranslation[enTrad] &&
currentTranslation[frTrad] === control.message
) {
return {
...acc,
[frTrad]: currentTranslation[frTrad],
[enTrad]: currentTranslation[enTrad]
}
}
missingTranslations.push([dottedName, enTrad, control.message])
return {
...acc,
[frTrad]: control.message
}
}, {})
}
// Check if a human traduction exists already for this attribute and if
// it does need to be updated

View File

@ -14,7 +14,7 @@ export type Action =
| DeletePreviousSimulationAction
| ExplainVariableAction
| UpdateSituationAction
| HideControlAction
| HideNotificationAction
| LoadPreviousSimulationAction
| SetSituationBranchAction
| UpdateTargetUnitAction
@ -51,7 +51,7 @@ type UpdateSituationAction = ReturnType<typeof updateSituation>
type LoadPreviousSimulationAction = ReturnType<typeof loadPreviousSimulation>
type SetSituationBranchAction = ReturnType<typeof setSituationBranch>
type SetActiveTargetAction = ReturnType<typeof setActiveTarget>
type HideControlAction = ReturnType<typeof hideControl>
type HideNotificationAction = ReturnType<typeof hideNotification>
type ExplainVariableAction = ReturnType<typeof explainVariable>
type UpdateTargetUnitAction = ReturnType<typeof updateUnit>
@ -142,8 +142,8 @@ export function loadPreviousSimulation() {
} as const
}
export function hideControl(id: string) {
return { type: 'HIDE_CONTROL', id } as const
export function hideNotification(id: string) {
return { type: 'HIDE_NOTIFICATION', id } as const
}
export const explainVariable = (variableName: DottedName | null = null) =>

View File

@ -1,79 +0,0 @@
import { goToQuestion, hideControl } from 'Actions/actions'
import animate from 'Components/ui/animate'
import { useControls, useInversionFail } from 'Components/utils/EngineContext'
import React from 'react'
import emoji from 'react-easy-emoji'
import { useTranslation } from 'react-i18next'
import { useDispatch, useSelector } from 'react-redux'
import { RootState } from 'Reducers/rootReducer'
import { answeredQuestionsSelector } from 'Selectors/simulationSelectors'
import './Controls.css'
import { Markdown } from './utils/markdown'
import { ScrollToElement } from './utils/Scroll'
export default function Controls() {
const { t } = useTranslation()
const answeredQuestions = useSelector(answeredQuestionsSelector)
const controls = useControls()
const inversionFail = useInversionFail()
const hiddenControls = useSelector(
(state: RootState) => state.simulation?.hiddenControls
)
const dispatch = useDispatch()
if (!controls) {
return null
}
const messages = inversionFail
? [
{
message: t([
'simulateurs.inversionFail',
'Le montant saisi ne permet pas de calculer un résultat, nous vous invitons à essayer une autre valeur.'
]),
level: 'avertissement'
}
]
: controls
if (!messages?.length) return null
return (
<div id="controlsBlock">
<ul style={{ margin: 0, padding: 0 }}>
{messages.map(({ level, test, message, solution, evaluated }) =>
hiddenControls?.includes(test) ? null : (
<animate.fromTop key={message}>
<li key={test}>
<div className="control">
{emoji(level == 'avertissement' ? '⚠️' : '')}
<div className="controlText ui__ card">
<Markdown source={message} />
{solution && !answeredQuestions?.includes(solution.cible) && (
<div>
<button
key={solution.cible}
className="ui__ link-button"
onClick={() => dispatch(goToQuestion(solution.cible))}
>
{solution.texte}
</button>
</div>
)}
<button
className="hide"
aria-label="close"
onClick={() => dispatch(hideControl(test))}
>
×
</button>
</div>
</div>
</li>
<ScrollToElement />
</animate.fromTop>
)
)}
</ul>
</div>
)
}

View File

@ -1,51 +1,51 @@
.blockingControl {
.blockingNotification {
text-align: center;
font-size: 150%;
}
#controlsBlock > ul {
#notificationsBlock > ul {
list-style: none;
padding: 0;
}
#controlsBlock .control {
#notificationsBlock .notification {
margin: 1em 0;
display: flex;
align-items: center;
}
#controlsBlock .controlText {
#notificationsBlock .notificationText {
width: 100%;
padding: 1rem 2.6rem 1rem 1.6rem;
/*For the .hide element */
position: relative;
}
#controlsBlock .controlText p {
#notificationsBlock .notificationText p {
margin: 0;
}
.controlText .hide {
.notificationText .hide {
position: absolute;
top: 0rem;
right: -1.4rem;
font-size: 200%;
}
#controlExplanation {
#notificationExplanation {
}
#controlExplanation > div {
#notificationExplanation > div {
display: inline;
}
/*Disable links visually */
#controlExplanation a {
#notificationExplanation a {
color: inherit;
text-decoration: none;
}
/* Display the values of the variables in the explanation of the failed control */
#controlsBlock .variable .situationValue {
#notificationsBlock .variable .situationValue {
display: inline-block;
}
#controlsBlock img {
#notificationsBlock img {
margin: 0 1em 0 !important;
width: 1.6em !important;
height: 1.6em !important;

View File

@ -0,0 +1,81 @@
import { hideNotification } from 'Actions/actions'
import animate from 'Components/ui/animate'
import { useInversionFail, EngineContext } from 'Components/utils/EngineContext'
import React, { useContext } from 'react'
import emoji from 'react-easy-emoji'
import { useTranslation } from 'react-i18next'
import { useDispatch, useSelector } from 'react-redux'
import { RootState } from 'Reducers/rootReducer'
import './Notifications.css'
import { Markdown } from './utils/markdown'
import { ScrollToElement } from './utils/Scroll'
import { EvaluatedRule } from 'publicodes'
// To add a new notification to a simulator, you should create a publicode rule
// with the "type: notification" attribute. The display can be customized with
// the "sévérité" attribute. The notification will only be displayed if the
// publicode rule is applicable.
type Notification = Pick<EvaluatedRule, 'dottedName' | 'description'> & {
type: 'notification'
sévérité: 'avertissement' | 'information'
}
export default function Notifications() {
const { t } = useTranslation()
const engine = useContext(EngineContext)
const notifications = Object.values(engine.getParsedRules())
.filter(rule => rule['type'] === 'notification')
.filter(
notification => engine.evaluate(notification.dottedName).isApplicable
)
const inversionFail = useInversionFail()
const hiddenNotifications = useSelector(
(state: RootState) => state.simulation?.hiddenNotifications
)
const dispatch = useDispatch()
const messages: Array<Notification> = inversionFail
? [
{
dottedName: 'inversion fail',
description: t([
'simulateurs.inversionFail',
'Le montant saisi ne permet pas de calculer un résultat, nous vous invitons à essayer une autre valeur.'
]),
type: 'notification',
sévérité: 'avertissement'
}
]
: ((notifications as any) as Array<Notification>)
if (!messages?.length) return null
return (
<div id="notificationsBlock">
<ul style={{ margin: 0, padding: 0 }}>
{messages.map(({ sévérité, dottedName, description }) =>
hiddenNotifications?.includes(dottedName) ? null : (
<animate.fromTop key={dottedName}>
<li>
<div className="notification">
{emoji(sévérité == 'avertissement' ? '⚠️' : '')}
<div className="notificationText ui__ card">
<Markdown source={description} />
<button
className="hide"
aria-label="close"
onClick={() => dispatch(hideNotification(dottedName))}
>
×
</button>
</div>
</div>
</li>
<ScrollToElement />
</animate.fromTop>
)
)}
</ul>
</div>
)
}

View File

@ -24,7 +24,7 @@ import { useDispatch, useSelector } from 'react-redux'
import { situationSelector } from 'Selectors/simulationSelectors'
import InfoBulle from 'Components/ui/InfoBulle'
import './SchemeComparaison.css'
import { EngineContext } from './utils/EngineContext'
import { EngineContext, useEvaluation } from './utils/EngineContext'
type SchemeComparaisonProps = {
hideAutoEntrepreneur?: boolean
@ -39,12 +39,9 @@ export default function SchemeComparaison({
useEffect(() => {
dispatch(setSimulationConfig(dirigeantComparaison))
}, [])
const plafondAutoEntrepreneurDépassé = useContext(EngineContext)
.controls()
.find(
({ test }) =>
test.includes && test.includes('base des cotisations > plafond')
)
const plafondAutoEntrepreneurDépassé = useEvaluation(
'dirigeant . auto-entrepreneur . contrôle seuil de CA dépassé'
).isApplicable
const [showMore, setShowMore] = useState(false)
const [conversationStarted, setConversationStarted] = useState(

View File

@ -1,5 +1,5 @@
import { setSimulationConfig } from 'Actions/actions'
import Controls from 'Components/Controls'
import Notifications from 'Components/Notifications'
import Conversation, {
ConversationProps
} from 'Components/conversation/Conversation'
@ -92,7 +92,7 @@ function Questions({
</div>
<section className="ui__ full-width lighter-bg">
<div className="ui__ container">
<Controls />
<Notifications />
<Conversation customEndMessages={customEndMessages} />
</div>
</section>

View File

@ -45,7 +45,3 @@ export function useEvaluation(
export function useInversionFail() {
return useContext(EngineContext).inversionFail()
}
export function useControls() {
return useContext(EngineContext).controls()
}

View File

@ -318,34 +318,6 @@ chômage partiel . revenu net habituel:
titre.en: '[automatic] usual net income'
titre.fr: revenu net habituel
contrat salarié:
contrôles.0.en: >
[automatic] Remember that a fixed-term contract must always correspond to a
temporary business need.
[Labour Code - Article A1242-1](https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000006901194idTexte=LEGITEXT000006072050)
contrôles.0.fr: >
Rappelez-vous qu'un CDD doit toujours correspondre à un besoin temporaire de
l'entreprise.
[Code du travail - Article L1242-1](https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000006901194&cidTexte=LEGITEXT000006072050)
contrôles.1.en: >
[automatic] An internship agreement **is not an employment contract**, and
cannot be concluded to carry out a regular task corresponding to a permanent
job, or a temporary increase in the company's activity. [Education Code -
Article
A124-7](https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000029234119idTexte=LEGITEXT000006071191)
Furthermore, a company with less than 20 employees may not take on more than **3 trainees**, and no more than **15% of the workforce** for companies with more than 20 employees.
contrôles.1.fr: >
Une convention de stage **n'est pas un contrat de travail**, et ne peut pas
être conclue pour réaliser une tâche régulière correspondant à un poste de
travail permanent, ou à un accroissement temporaire de l'activité de
l'entreprise. [Code de l'éducation - Article
L124-7](https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000029234119&cidTexte=LEGITEXT000006071191)
Par ailleurs, une entreprise de moins de 20 salariés ne peut pas accueillir plus de **3&nbsp;stagiaires**, et pas plus de **15% de leffectif** pour les entreprises de plus de 20 salariés.
description.en: >
The contract that binds a company (via its establishment) to an individual,
who is then his employee.
@ -509,8 +481,6 @@ contrat salarié . CDD . congés dus en jours ouvrés:
titre.en: leave due in working days
titre.fr: congés dus en jours ouvrés
contrat salarié . CDD . congés non pris:
contrôles.0.en: '[automatic] An employee normally earns 2.08 working days off per month.'
contrôles.0.fr: Un salarié acquiert normalement 2.08 jours de congés ouvrés par mois.
description.en: How many days of paid leave the employee will not be able to
take, given the length of his / her fixed term contract. In working days,
compared to 25 days of legal leave for a twelve-month contract.
@ -541,6 +511,11 @@ contrat salarié . CDD . contrat jeune vacances:
question.fr: Est-ce un contrat jeune vacances ?
titre.en: Young holiday contract
titre.fr: Contrat jeune vacances
contrat salarié . CDD . contrôle congés non pris max:
description.en: '[automatic] An employee normally earns 2.08 working days off per month.'
description.fr: Un salarié acquiert normalement 2.08 jours de congés ouvrés par mois.
titre.en: '[automatic] control leave not taken max'
titre.fr: contrôle congés non pris max
contrat salarié . CDD . durée contrat:
description.en: '[Click here]
(https://www.service-public.fr/professionnels-entreprises/vosdroits/F31211)
@ -566,6 +541,16 @@ contrat salarié . CDD . indemnités salarié:
description.fr: Cotisations employeur spécifiques au CDD
titre.en: '[automatic] employee compensation'
titre.fr: indemnités salarié
contrat salarié . CDD . information:
description.en: "[automatic] Remember that a fixed-term contract must always
correspond to a temporary business need. [Labour Code - Article
A1242-1](https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGI\
ARTI000006901194&amp;cidTexte=LEGITEXT000006072050)"
description.fr: Rappelez-vous qu'un CDD doit toujours correspondre à un besoin
temporaire de l'entreprise. [Code du travail - Article
L1242-1](https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000006901194&cidTexte=LEGITEXT000006072050)
titre.en: '[automatic] information'
titre.fr: information
contrat salarié . CDD . motif:
description.en:
'The CDD is an exceptional contract: the reason for its use must
@ -969,12 +954,6 @@ contrat salarié . activité partielle . heures chômées:
titre.en: '[automatic] non-working hours'
titre.fr: heures chômées
contrat salarié . activité partielle . heures travaillées:
contrôles.0.en:
'[automatic] In the context of the partial activity, the working
time must be less than that stipulated in the employment contract.'
contrôles.0.fr:
Dans le cadre de l'activité partielle, le temps de travail doit
être inférieur à celui inscrit dans le contrat de travail.
description.en: '[automatic] In the case of short-time working, the number of
remaining hours worked. Must be less than the contractual time.'
description.fr: Dans le cadre du chômage partiel, le nombre d'heure restantes
@ -989,6 +968,15 @@ contrat salarié . activité partielle . heures travaillées:
suggestions.30 h/semaine.fr: 30 h/semaine
titre.en: '[automatic] remaining hours worked'
titre.fr: heures travaillées restantes
? contrat salarié . activité partielle . heures travaillées . contrôle temps de travail
: description.en:
'[automatic] In the context of the partial activity, the working
time must be less than that stipulated in the employment contract.'
description.fr:
Dans le cadre de l'activité partielle, le temps de travail doit
être inférieur à celui inscrit dans le contrat de travail.
titre.en: '[automatic] working-time control'
titre.fr: contrôle temps de travail
contrat salarié . activité partielle . indemnisation entreprise:
description.en: '[automatic] In the context of the Coronavirus crisis, the
government has announced that the short-time working allowance will be 100%
@ -1211,11 +1199,6 @@ contrat salarié . apprentissage:
titre.en: apprenticeship
titre.fr: apprentissage
contrat salarié . apprentissage . ancienneté:
contrôles.0.en: '[automatic] The maximum duration of the contract can be
extended to 4 years when the apprentice is recognised as a disabled worker.'
contrôles.0.fr:
La durée maximale du contrat peut être portée à 4 ans lorsque la
qualité de travailleur handicapé est reconnue à l'apprenti.
question.en: How long has the apprentice been employed?
question.fr: Depuis combien de temps l'apprenti est-il employé ?
titre.en: age
@ -1229,6 +1212,14 @@ contrat salarié . apprentissage . ancienneté . moins de deux ans:
contrat salarié . apprentissage . ancienneté . moins de quatre ans:
titre.en: less than four years
titre.fr: moins de quatre ans
? contrat salarié . apprentissage . ancienneté . moins de quatre ans . information
: description.en: '[automatic] The maximum duration of the contract may be
extended to 4 years when the apprentice is recognised as a disabled worker.'
description.fr:
La durée maximale du contrat peut être portée à 4 ans lorsque la
qualité de travailleur handicapé est reconnue à l'apprenti.
titre.en: '[automatic] information'
titre.fr: information
contrat salarié . apprentissage . ancienneté . moins de trois ans:
titre.en: less than three years
titre.fr: moins de trois ans
@ -1289,12 +1280,15 @@ contrat salarié . complémentaire santé:
En plus de la complémentaire santé, le dispositif collectif de l'entreprise peut proposer d'autres garanties (garanties décès, garantie dépendance, etc.).
titre.en: Complementary health insurance
titre.fr: complémentaire santé
contrat salarié . complémentaire santé . forfait:
contrôles.0.en: '[automatic] Make sure that such an inexpensive health
supplement covers the minimum care basket defined in the law.'
contrôles.0.fr:
contrat salarié . complémentaire santé . contrôle min:
description.en: '[automatic] Make sure that such an inexpensive health
supplement covers the minimum care basket defined by law.'
description.fr:
Vérifiez bien qu'une complémentaire santé si peu chère couvre le
panier de soin minimal défini dans la loi.
titre.en: '[automatic] minimum control'
titre.fr: contrôle min
contrat salarié . complémentaire santé . forfait:
description.en: >-
[automatic] The employer has the obligation to offer a complementary health
care package. He must pay at least half of the cost.
@ -1329,9 +1323,6 @@ contrat salarié . complémentaire santé . forfait:
titre.en: Complementary health insurance package
titre.fr: Forfait de complémentaire santé entreprise
contrat salarié . complémentaire santé . part employeur:
contrôles.0.en: "[automatic] The employer's share of the supplementary health
insurance must be at least 50%."
contrôles.0.fr: La part employeur de la complémentaire santé doit être de 50% au minimum
description.en: Share of complementary health insurance paid by the employer.
Must be at least 50%.
description.fr:
@ -1345,6 +1336,12 @@ contrat salarié . complémentaire santé . part employeur:
suggestions.50%.fr: 50%
titre.en: employer share
titre.fr: part employeur
contrat salarié . complémentaire santé . part employeur min:
description.en: "[automatic] The employer's share of the supplementary health
insurance must be at least 50%."
description.fr: La part employeur de la complémentaire santé doit être de 50% au minimum
titre.en: "[automatic] employer's minimum share"
titre.fr: part employeur min
contrat salarié . complémentaire santé . part salarié:
description.en: Share of the complementary health insurance paid by the
employee. Cannot be more than 50%.
@ -1390,16 +1387,6 @@ contrat salarié . contribution d'équilibre technique:
titre.en: technical equilibrium contribution
titre.fr: contribution d'équilibre technique
contrat salarié . convention collective:
contrôles.0.en: |
[automatic] Caution, the implementation of collective agreements is still
partial and unverified.
Nevertheless, this allows a first, more accurate estimate to be obtained.
than the general regime.
contrôles.0.fr: |
Attention, l'implémentation des conventions collective est encore
partielle et non vérifiée.
Néanmoins, cela permet d'obtenir une première estimation, plus précise
que le régime général.
question.en: 'Which "convention collective" is applicable to the company ? [beta] '
question.fr: "Quelle convention collective est applicable à l'entreprise ? [beta] "
titre.en: convention collective
@ -1572,6 +1559,16 @@ contrat salarié . convention collective . compta:
? contrat salarié . convention collective . compta . majoration heures supplémentaires
: titre.en: '[automatic] overtime increase'
titre.fr: majoration heures supplémentaires
contrat salarié . convention collective . contrôle décharge:
description.en: '[automatic] Please note that the implementation of the
collective agreements is still partial and unverified. Nevertheless, this
allows us to obtain a first estimate, which is more precise than the general
regime.'
description.fr: Attention, l'implémentation des conventions collective est
encore partielle et non vérifiée. Néanmoins, cela permet d'obtenir une
première estimation, plus précise que le régime général.
titre.en: '[automatic] discharge control'
titre.fr: contrôle décharge
contrat salarié . convention collective . droit commun:
titre.en: common law
titre.fr: droit commun
@ -2063,6 +2060,18 @@ contrat salarié . frais professionnels . titres-restaurant:
question.fr: Le salarié reçoit-il des titres-restaurant ?
titre.en: '[automatic] restaurant vouchers'
titre.fr: titres-restaurant
? contrat salarié . frais professionnels . titres-restaurant . contrôle taux employeur max
: description.en:
"[automatic] The employer's share of the meal voucher must be a
maximum of 60%."
description.fr: La part employeur du titre-restaurant doit être de 60% au maximum
titre.en: '[automatic] control max. employer rate'
titre.fr: contrôle taux employeur max
? contrat salarié . frais professionnels . titres-restaurant . contrôle taux employeur min
: description.en: "[automatic] The employer's share of the meal voucher must be at least 50%."
description.fr: La part employeur du titre-restaurant doit être de 50% au minimum
titre.en: '[automatic] control minimum employer rate'
titre.fr: contrôle taux employeur min
contrat salarié . frais professionnels . titres-restaurant . montant:
titre.en: '[automatic] Restaurant vouchers'
titre.fr: Titres-restaurant
@ -2088,15 +2097,7 @@ contrat salarié . frais professionnels . titres-restaurant . part déductible:
titre.en: '[automatic] Restaurant vouchers (deductible)'
titre.fr: Titres-restaurant (déductible)
? contrat salarié . frais professionnels . titres-restaurant . taux participation employeur
: contrôles.0.en:
'[automatic] The Employer-paid portion of the meal voucher must
be at least 50%.'
contrôles.0.fr: La part employeur du titre-restaurant doit être de 50% au minimum
contrôles.1.en:
'[automatic] Employer-paid portion of the meal voucher must be a
maximum of 60%.'
contrôles.1.fr: La part employeur du titre-restaurant doit être de 60% au maximum
description.en:
: description.en:
'[automatic] Employer-paid portion of the meal voucher. Must be
a minimum of 50% and a maximum of 60%.'
description.fr:
@ -2635,26 +2636,6 @@ contrat salarié . régime alsace moselle:
titre.en: Alsace-Moselle scheme
titre.fr: Régime Alsace-Moselle
contrat salarié . régime des impatriés:
contrôles.0.en: >
[automatic] The following conditions must be met in order to benefit from
the old-age contribution exemption:
- To be able to prove a minimum contribution paid elsewhere for old-age insurance
- Not having been affiliated, during the five calendar years preceding that of taking up his duties, to a compulsory French old-age insurance scheme, except for ancillary activities of a seasonal nature or for studies.
[Read the text of the law](https://www.legifrance.gouv.fr/affichCode.do;jsessionid=F5CFB7C90D1F529A2CDC9FFD20BD6E.tplgfr34s_3?idSectionTA=LEGISCTA000038510929&amp;cidTexte=LEGITEXT000006073189&amp;dateTexte=20190626)
contrôles.0.fr: >
Pour bénéficier de l'exonération de cotisations vieillesse, il faut remplir
les conditions suivantes :
- Pouvoir justifier d'une contribution minimale versée ailleurs pour une assurance vieillesse
- Ne pas avoir été affilié, au cours des cinq années civiles précédant celle de la prise de fonctions, à un régime français obligatoire d'assurance vieillesse, sauf pour des activités accessoires, de caractère saisonnier ou pour les études.
[Lire le texte de loi](https://www.legifrance.gouv.fr/affichCode.do;jsessionid=F5CFB7C90D1D1F529A2CDC9FFD20BD6E.tplgfr34s_3?idSectionTA=LEGISCTA000038510929&cidTexte=LEGITEXT000006073189&dateTexte=20190626)
description.en: >
If you are an employee or a director with the 'assimilé-salarié' social and
fiscal scheme, and if you have been called upon by a foreign company to take
@ -2688,6 +2669,9 @@ contrat salarié . régime des impatriés:
question.fr: Le salarié bénéficie-t-il du régime des impatriés ?
titre.en: impatriate scheme
titre.fr: régime des impatriés
contrat salarié . régime des impatriés . information:
titre.en: '[automatic] information'
titre.fr: information
contrat salarié . rémunération:
description.en: The remuneration is distinguished from the salary by including
non-monetary benefits paid for work. It is therefore wider than the sums of
@ -2884,23 +2868,6 @@ contrat salarié . rémunération . brut:
titre.en: gross salary with benefits
titre.fr: Rémunération brute
contrat salarié . rémunération . brut de base:
contrôles.0.en: |
[automatic] The wage entered is less than the minimum wage.
contrôles.0.fr: |
Le salaire saisi est inférieur au SMIC.
contrôles.1.en: >
[automatic] The remuneration for the traineeship is less than the [minimum
bonus]
(https://www.service-public.fr/professionnels-entreprises/vosdroits/F32131).
contrôles.1.fr: >
La rémunération du stage est inférieure à la [gratification
minimale](https://www.service-public.fr/professionnels-entreprises/vosdroits/F32131).
contrôles.2.en: >
[automatic] The monthly salary entered is high. Didn't you have the wrong
calculation period?
contrôles.2.fr: >
Le salaire mensuel saisi est élevé. Ne vous êtes-vous pas trompé de période
de calcul ?
description.en: >-
This is the negociated salary written on the employment contract in France.
It normally includes bonuses computed on a monthly basis.
@ -2934,6 +2901,19 @@ contrat salarié . rémunération . brut de base . équivalent temps plein:
suggestions.salaire médian.fr: salaire médian
titre.en: Full-time equivalent gross salary
titre.fr: Salaire brut équivalent temps plein
contrat salarié . rémunération . contrôle salaire élevé:
description.en: '[automatic] The monthly salary entered is high. Have you
entered the wrong payroll period?'
description.fr:
Le salaire mensuel saisi est élevé. Ne vous êtes-vous pas trompé
de période de calcul ?
titre.en: '[automatic] high wage control'
titre.fr: contrôle salaire élevé
contrat salarié . rémunération . contrôle smic:
description.en: '[automatic] The wage entered is below the minimum wage.'
description.fr: Le salaire saisi est inférieur au SMIC.
titre.en: '[automatic] smic control'
titre.fr: contrôle smic
contrat salarié . rémunération . heures complémentaires:
description.en: '[automatic] Compensation for overtime'
description.fr: La rémunération relative aux heures complémentaires
@ -3167,6 +3147,34 @@ contrat salarié . stage:
minimale. Celle-ci est en partie exonérée de cotisations sociales.
titre.en: internship
titre.fr: stage
contrat salarié . stage . avertissement:
description.en: >-
[automatic] An internship agreement **is not an employment contract**, and
cannot be concluded to carry out a regular task corresponding to a permanent
job, or a temporary increase in the company's activity. [Education Code -
Article
L124-7](https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000029234119&amp;cidTexte=LEGITEXT000006071191)
Furthermore, a company with less than 20 employees may not take on more than **3 trainees**, and no more than **15% of the workforce** for companies with more than 20 employees.
description.fr: >-
Une convention de stage **n'est pas un contrat de travail**, et ne peut pas
être conclue pour réaliser une tâche régulière correspondant à un poste de
travail permanent, ou à un accroissement temporaire de l'activité de
l'entreprise. [Code de l'éducation - Article
L124-7](https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000029234119&cidTexte=LEGITEXT000006071191)
Par ailleurs, une entreprise de moins de 20 salariés ne peut pas accueillir plus de **3&nbsp;stagiaires**, et pas plus de **15% de leffectif** pour les entreprises de plus de 20 salariés.
titre.en: '[automatic] warning'
titre.fr: avertissement
contrat salarié . stage . contrôle gratification minimale:
description.en: "[automatic] The remuneration for the traineeship is less than
the [minimum bonus]
(https://www.service-public.fr/professionnels-entreprises/vosdroits/F32131)\
."
description.fr: La rémunération du stage est inférieure à la [gratification
minimale](https://www.service-public.fr/professionnels-entreprises/vosdroits/F32131).
titre.en: '[automatic] minimum reward check'
titre.fr: contrôle gratification minimale
contrat salarié . stage . gratification minimale:
titre.en: minimum bonus
titre.fr: gratification minimale
@ -3313,20 +3321,36 @@ contrat salarié . temps de travail:
contrat salarié . temps de travail . base légale:
titre.en: legal base
titre.fr: base légale
contrat salarié . temps de travail . heures complémentaires:
contrôles.0.en:
contrat salarié . temps de travail . contrôle 44h max:
description.en: '[automatic] The average working week may not exceed 44 hours.'
description.fr: La durée hebdomadaire moyenne de travail ne peut pas dépasser 44h
titre.en: '[automatic] control 44h max'
titre.fr: contrôle 44h max
contrat salarié . temps de travail . contrôle 48h max:
description.en: '[automatic] The maximum weekly working time may not exceed 48 hours.'
description.fr: La durée hebdomadaire maximale de travail ne peut pas dépasser 48h
titre.en: '[automatic] control 48h max'
titre.fr: contrôle 48h max
? contrat salarié . temps de travail . contrôle heures complémentaires 10 pourcents
: description.en:
'[automatic] Unless otherwise provided by agreement, the number
of overtime hours may not exceed one tenth of the contractual duration of
the part-time contract.'
contrôles.0.fr: Sauf disposition conventionnelle, le nombre d'heures
description.fr: Sauf disposition conventionnelle, le nombre d'heures
complémentaires ne peut être supérieur à un dixième de la durée
contractuelle du temps partiel.
contrôles.1.en:
titre.en: '[automatic] overtime control 10 percent'
titre.fr: contrôle heures complémentaires 10 pourcents
contrat salarié . temps de travail . contrôle heures complémentaires max:
description.en:
'[automatic] Overtime must not cause the employee to work for a
period greater than or equal to the legal working time (35 hours).'
contrôles.1.fr: Les heures complémentaires ne doivent pas amener le salarié à
description.fr: Les heures complémentaires ne doivent pas amener le salarié à
travailler pour une durée supérieure ou égale à la durée légale du travail
(35h)
titre.en: '[automatic] max. overtime control'
titre.fr: contrôle heures complémentaires max
contrat salarié . temps de travail . heures complémentaires:
description.en: >
[automatic] Overtime hours are the hours worked by a part-time employee in
excess of his or her contractual working hours. Overtime must not cause the
@ -3377,10 +3401,6 @@ contrat salarié . temps de travail . heures complémentaires . seuil légal:
titre.en: '[automatic] statutory threshold'
titre.fr: seuil légal
contrat salarié . temps de travail . heures supplémentaires:
contrôles.0.en: '[automatic] The average working week may not exceed 44 hours.'
contrôles.0.fr: La durée hebdomadaire moyenne de travail ne peut pas dépasser 44h
contrôles.1.en: '[automatic] The maximum weekly working time may not exceed 48 hours.'
contrôles.1.fr: La durée hebdomadaire maximale de travail ne peut pas dépasser 48h
description.en: Any hour of work performed, at the employer's request, beyond
the legal 35-hour limit (or equivalent) is considered overtime. Overtime
work entitles the employee to more favourable remuneration (higher hourly
@ -3471,16 +3491,21 @@ contrat salarié . temps de travail . temps partiel:
question.fr: Le contrat est-il à temps partiel ?
titre.en: part-time
titre.fr: temps partiel
contrat salarié . temps de travail . temps partiel . heures par semaine:
contrôles.0.en: '[automatic] The minimum number of hours per week is 24,
contrat salarié . temps de travail . temps partiel . contrôle temps max:
description.en: '[automatic] Part-time work must be below the legal working time (35 hours).'
description.fr: Un temps partiel doit être en dessous de la durée de travail légale (35h)
titre.en: '[automatic] max time control'
titre.fr: contrôle temps max
contrat salarié . temps de travail . temps partiel . contrôle temps min:
description.en: '[automatic] The minimum number of hours per week is 24,
although it is possible to go lower in some cases only. [More
info](https://www.service-public.fr/particuliers/vosdroits/F32428).'
contrôles.0.fr: Le nombre minimum d'heures par semaine est 24. Il est possible
description.fr: Le nombre minimum d'heures par semaine est 24. Il est possible
de descendre plus bas dans certains cas seulement. [Plus
d'infos](https://www.service-public.fr/particuliers/vosdroits/F32428).
contrôles.1.en: '[automatic] Part-time work must be below the legal working
hours (35 hours).'
contrôles.1.fr: Un temps partiel doit être en dessous de la durée de travail légale (35h)
titre.en: '[automatic] min time control'
titre.fr: contrôle temps min
contrat salarié . temps de travail . temps partiel . heures par semaine:
question.en: What is the number of hours worked per week as part of part-time work?
question.fr: Quel est le nombre d'heures travaillées par semaine dans le cadre
du temps partiel ?
@ -3537,18 +3562,25 @@ dirigeant . auto-entrepreneur:
titre.en: auto-entrepreneur
titre.fr: auto-entrepreneur
dirigeant . auto-entrepreneur . base des cotisations:
contrôles.0.en: '[automatic] The annual turnover threshold for the
self-employment plan is exceeded. Read
more](/documentation/manager/self-contractor/ceiling)'
contrôles.0.fr: Le seuil annuel de chiffre d'affaires pour le régime de
l'auto-entreprise est dépassé. [En savoir
plus](/documentation/dirigeant/autoentrepreneur/plafond)
contrôles.1.en: The annual turnover threshold for VAT exemption is exceeded.
[Read more](/documentation/entreprise/franchise-de-TVA)
contrôles.1.fr: Le seuil annuel de chiffre d'affaires pour la franchise de TVA
est dépassé. [En savoir plus](/documentation/entreprise/franchise-de-TVA)
titre.en: contribution basis
titre.fr: base des cotisations
dirigeant . auto-entrepreneur . contrôle seuil de CA dépassé:
description.en: '[automatic] The annual turnover threshold for the
self-employment plan is exceeded. Read
more](/documentation/manager/self-entrepreneur/ceiling)'
description.fr: Le seuil annuel de chiffre d'affaires pour le régime de
l'auto-entreprise est dépassé. [En savoir
plus](/documentation/dirigeant/autoentrepreneur/plafond)
titre.en: '[automatic] Threshold control of turnover exceeded'
titre.fr: contrôle seuil de CA dépassé
dirigeant . auto-entrepreneur . contrôle seuil de TVA dépassé:
description.en:
'[automatic] The annual turnover threshold for VAT exemption is
exceeded. More information](/documentation/enterprise/VAT-exemption)'
description.fr: Le seuil annuel de chiffre d'affaires pour la franchise de TVA
est dépassé. [En savoir plus](/documentation/entreprise/franchise-de-TVA)
titre.en: '[automatic] VAT threshold control'
titre.fr: contrôle seuil de TVA dépassé
dirigeant . auto-entrepreneur . cotisations et contributions:
titre.en: Contributions
titre.fr: cotisations et contributions
@ -3682,11 +3714,6 @@ dirigeant . auto-entrepreneur . impôt . revenu imposable:
titre.en: taxable income
titre.fr: revenu imposable
dirigeant . auto-entrepreneur . impôt . versement libératoire:
contrôles.0.en: '[automatic] The payment in full discharge is not available if
your household income exceeds €27,086 per unit in 2018.'
contrôles.0.fr:
Le versement libératoire n'est pas disponible si les revenus de
votre ménage sont supérieurs à 27 086 € par part en 2018
description.en: >
With the option for the discharge payment, the income tax is paid at the
same time as your contributions (per month or per quarter) with the
@ -3702,6 +3729,14 @@ dirigeant . auto-entrepreneur . impôt . versement libératoire:
question.fr: Bénéficiez-vous du versement libératoire de l'impôt sur le revenu ?
titre.en: discharge payment
titre.fr: versement libératoire
dirigeant . auto-entrepreneur . impôt . versement libératoire . contrôle seuil:
description.en: '[automatic] The payment in full discharge is not available if
your household income exceeds €27,086 per unit in 2018.'
description.fr:
Le versement libératoire n'est pas disponible si les revenus de
votre ménage sont supérieurs à 27 086 € par part en 2018
titre.en: '[automatic] threshold control'
titre.fr: contrôle seuil
dirigeant . auto-entrepreneur . impôt . versement libératoire . montant:
description.en: >
If you have opted for the discharge payment, the income tax is paid at the
@ -3818,43 +3853,6 @@ dirigeant . auto-entrepreneur . vente ou hébergement:
titre.en: '[automatic] Sales, catering or accommodation'
titre.fr: Vente, restauration ou hébergement
dirigeant . indépendant:
contrôles.0.en: |
[automatic] When you start your business, your professional income
not being known, the dues and contributions of the first two
years are calculated on a flat-rate basis.
This base amounts to 19% of the annual Social Security ceiling for
in the first and second year of operation.
There is an adjustment in the third year based on actual income...
reported in the previous two years.
This simulator calculates the cruise contributions (after
regularization). It therefore enables you to find out the amount to
provision for accruals and deferrals.
contrôles.0.fr: >
Lorsque vous commencez votre activité, vos revenus professionnels
nétant pas connus, les cotisations et contributions des deux premières
années sont calculées sur une base forfaitaire.
Cette base sélève à 19 % du plafond annuel de la Sécurité sociale au titre de
la première et de la deuxième année dactivité.
Il y a un ajustement la troisième année en fonction des revenus réels
déclarées lors des deux années précédentes.
Ce simulateur calcul les cotisations au régime de croisière (après
régularisation). Il vous permet donc de connaître le montant à
provisionner pour la régularisation.
titre.en: indépendant
titre.fr: indépendant
dirigeant . indépendant . IJSS:
@ -4015,20 +4013,6 @@ dirigeant . indépendant . PL . PAM . CARCDSF . chirurgien-dentiste:
titre.en: '[automatic] dental surgeon'
titre.fr: chirurgien-dentiste
dirigeant . indépendant . PL . PAM . CARCDSF . chirurgien-dentiste . PCV:
contrôles.0.en: >
[automatic] You have the possibility of benefiting from a total exemption of
contribution.
for supplementary old-age pension (AHV) if you apply for it. More information
more](http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations)
contrôles.0.fr: >
Vous avez la possibilité de bénéficier d'une éxonération totale de
cotisation
pour la prestation complémentaire de vieillesse (PCV) si vous en faites la demande. [En savoir
plus](http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations)
note.en: >-
[automatic] An exemption can be granted when the 2019 professional income is
less than or equal to C 500 (value on 1 January of the year in question),
@ -4047,6 +4031,18 @@ dirigeant . indépendant . PL . PAM . CARCDSF . chirurgien-dentiste . PCV:
Cette dispense entraîne lannulation des droits pour lannée et les points non cotisés ne sont pas rachetables.
titre.en: '[automatic] PCV'
titre.fr: PCV
? dirigeant . indépendant . PL . PAM . CARCDSF . chirurgien-dentiste . PCV . info exonération
: description.en: "[automatic] You have the option of taking a full contribution
waiver for supplementary old-age benefits (AVC) if you apply for it. [More
information](http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cot\
isations)"
description.fr:
Vous avez la possibilité de bénéficier d'une exonération totale
de cotisation pour la prestation complémentaire de vieillesse (PCV) si vous
en faites la demande. [En savoir
plus](http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations)
titre.en: '[automatic] exoneration info'
titre.fr: info exonération
dirigeant . indépendant . PL . PAM . CARCDSF . chirurgien-dentiste . RID:
titre.en: '[automatic] disability and death (CARCDSF Dental Surgeon)'
titre.fr: invalidité et décès (CARCDSF chirurgien-dentiste)
@ -4114,20 +4110,7 @@ dirigeant . indépendant . PL . PAM . CARCDSF . retraite complémentaire:
titre.en: '[automatic] supplementary pension (CARCDSF)'
titre.fr: retraite complémentaire (CARCDSF)
? dirigeant . indépendant . PL . PAM . CARCDSF . retraite complémentaire . réduction de la cotisation forfaitaire
: contrôles.0.en: >
[automatic] You have the possibility of benefiting from a contribution
reduction
for the supplementary pension if you apply for it. More information
more](/documentation/lead/independent/WFP/WFP/CARCDSF/additional withdrawal/removal)
contrôles.0.fr: >
Vous avez la possibilité de bénéficier d'une réduction de cotisation
pour la retraite complémentaire si vous en faites la demande. [En savoir
plus](/documentation/dirigeant/indépendant/PL/PAM/CARCDSF/retraite-complémentaire/forfaitaire/réduction)
description.en: >
: description.en: >
[automatic] Affiliates whose net professional income for the year N-1 is
less than 85%.
@ -4167,24 +4150,22 @@ dirigeant . indépendant . PL . PAM . CARCDSF . retraite complémentaire:
annexes (2033 B et D ou 2053 et 2058 A) de lannée 2019.
titre.en: '[automatic] reduced flat-rate contribution'
titre.fr: réduction de la cotisation forfaitaire
? dirigeant . indépendant . PL . PAM . CARCDSF . retraite complémentaire . réduction de la cotisation forfaitaire . info réduction
: description.en: "[automatic] You have the possibility to benefit from a
contribution reduction for the supplementary pension if you apply for it.
Find out
more](/documentation/documentation/manager/self-employed/PL/PAM/CARCDSF/com\
plementary pension/deduction)"
description.fr: Vous avez la possibilité de bénéficier d'une réduction de
cotisation pour la retraite complémentaire si vous en faites la demande. [En
savoir
plus](/documentation/dirigeant/indépendant/PL/PAM/CARCDSF/retraite-complémentaire/forfaitaire/réduction)
titre.en: '[automatic] discount info'
titre.fr: info réduction
dirigeant . indépendant . PL . PAM . CARCDSF . sage-femme:
titre.en: '[automatic] midwife'
titre.fr: sage-femme
dirigeant . indépendant . PL . PAM . CARCDSF . sage-femme . PCV:
contrôles.0.en: >
[automatic] You have the possibility of benefiting from a total exemption of
contributions
for supplementary old-age pension (AHV) if you apply for it. More information
more](http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations)
contrôles.0.fr: >
Vous avez la possibilité de bénéficier d'une éxonération totale de
cotisation
pour la prestation complémentaire de vieillesse (PCV) si vous en faites la demande. [En savoir
plus](http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations)
description.en: >
[automatic] For 2020, the amount is set at €780, a third of which, i.e. €260
to your
@ -4230,6 +4211,18 @@ dirigeant . indépendant . PL . PAM . CARCDSF . sage-femme . PCV:
non cotisés ne sont pas rachetables.
titre.en: '[automatic] PCV'
titre.fr: PCV
? dirigeant . indépendant . PL . PAM . CARCDSF . sage-femme . PCV . info exonération
: description.en: "[automatic] You have the option of taking a full contribution
waiver for supplementary old-age benefits (AVC) if you apply for it. [More
information](http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cot\
isations)"
description.fr:
Vous avez la possibilité de bénéficier d'une exonération totale
de cotisation pour la prestation complémentaire de vieillesse (PCV) si vous
en faites la demande. [En savoir
plus](http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations)
titre.en: '[automatic] exoneration info'
titre.fr: info exonération
dirigeant . indépendant . PL . PAM . CARCDSF . sage-femme . RID:
description.en: >
[automatic] There are contribution classes to choose from, corresponding to
@ -4869,17 +4862,18 @@ dirigeant . indépendant . conjoint collaborateur . cotisations . assiette:
dirigeant . indépendant . contrats madelin:
titre.en: Madelin Contracts
titre.fr: Contrats Madelin
dirigeant . indépendant . contrats madelin . montant:
contrôles.0.en: >
[automatic] The amount of all contributions to your Madelin contracts
must be included in your operating expenses, and you have to include it in your
have indicated a contribution amount greater than expenses.
contrôles.0.fr: |
dirigeant . indépendant . contrats madelin . contrôle montant charges:
description.en:
'[automatic] The amount of all the contributions to your Madelin
contracts must be included in your operating expenses, but you have
indicated an amount of contributions greater than the expenses.'
description.fr:
Le montant de l'ensemble des cotisations à vos contrats Madelin
doit être inclus dans vos charges de fonctionnement, or ce vous
avez indiqué un montant de cotisations supérieur aux charges.
doit être inclus dans vos charges de fonctionnement, or ce vous avez indiqué
un montant de cotisations supérieur aux charges.
titre.en: '[automatic] expense control'
titre.fr: contrôle montant charges
dirigeant . indépendant . contrats madelin . montant:
titre.en: Sum of subscriptions to Madelin contracts
titre.fr: Somme des cotisations à contrats Madelin
dirigeant . indépendant . contrats madelin . mutuelle:
@ -4926,6 +4920,29 @@ dirigeant . indépendant . contrats madelin . retraite . montant:
dirigeant . indépendant . contrats madelin . retraite . plafond:
titre.en: ceiling
titre.fr: plafond
dirigeant . indépendant . contrôle base forfaitaire:
description.en: >-
[automatic] When you start your activity, as your professional income is not
known, the contributions and fees for the first two years are calculated on
a flat-rate basis.
This base is 19% of the annual Social Security ceiling for the first and second year of activity.
There is an adjustment in the third year based on the actual income declared in the two previous years.
This simulator calculates the contributions to the cruise scheme (after regularisation). It therefore allows you to know the amount to be accrued for the regularization.
description.fr: >-
Lorsque vous commencez votre activité, vos revenus professionnels nétant
pas connus, les cotisations et contributions des deux premières années sont
calculées sur une base forfaitaire.
Cette base sélève à 19 % du plafond annuel de la Sécurité sociale au titre de la première et de la deuxième année dactivité.
Il y a un ajustement la troisième année en fonction des revenus réels déclarées lors des deux années précédentes.
Ce simulateur calcul les cotisations au régime de croisière (après régularisation). Il vous permet donc de connaître le montant à provisionner pour la régularisation.
titre.en: '[automatic] flat-rate control'
titre.fr: contrôle base forfaitaire
dirigeant . indépendant . cotisations et contributions:
titre.en: all contributions
titre.fr: cotisations et contributions
@ -5460,6 +5477,19 @@ entreprise . catégorie d'activité . libérale règlementée:
question.fr: Est-ce une activité libérale règlementée ?
titre.en: regulated liberal
titre.fr: libérale règlementée
entreprise . catégorie d'activité . libérale règlementée . avertissement:
description.en: >-
[automatic] Attention, the simulator is not yet complete for regulated
professions:
- for supplementary retirement, only the interprofessional scale, that of the CIPAV, has been integrated for the moment. - Make sure that the auto-entrepreneur status is compatible with your regulated profession - for medical practitioners and medical auxiliaries (PAM), [the specificities of contribution calculation](https://www.urssaf.fr/portail/home/praticien-et-auxiliaire-medical/mes-cotisations/le-calcul-de-mes-cotisations/la-participation-de-la-cpam-a-me.html) and the [CURPS](https://www.urssaf.fr/portail/home/indépendant/mes-cotisations/quelles-cotisations/la-contribution-aux-unions-regio/qui-est-redevable-de-la-curps.html) are not yet integrated.
description.fr: >-
Attention, le simulateur n'est pas encore complet pour les professions
libérales règlementées :
- pour la retraite complémentaire, seul le barème interprofessionnel, celui de la CIPAV, a été intégré pour l'instant. - assurez-vous que le statut auto-entrepreneur est bien compatible avec votre profession règlementée - pour les praticiens et auxiliaires médicaux (PAM), [les spécificités de calcul des cotisations](https://www.urssaf.fr/portail/home/praticien-et-auxiliaire-medical/mes-cotisations/le-calcul-de-mes-cotisations/la-participation-de-la-cpam-a-me.html) et la [CURPS](https://www.urssaf.fr/portail/home/indépendant/mes-cotisations/quelles-cotisations/la-contribution-aux-unions-regio/qui-est-redevable-de-la-curps.html) ne sont pas encore intégrées.
titre.en: '[automatic] warning'
titre.fr: avertissement
? entreprise . catégorie d'activité . libérale règlementée . type d'activité libérale règlementée
: titre.en: type of regulated liberal activity
titre.fr: type d'activité libérale règlementée
@ -5579,13 +5609,6 @@ entreprise . chiffre d'affaires minimum:
titre.en: Minimum turnover
titre.fr: chiffre d'affaires minimum
entreprise . date de création:
contrôles.0.en: "[automatic] We can't see that far into the future"
contrôles.0.fr: Nous ne pouvons voir aussi loin dans le futur
contrôles.1.en:
"[automatic] This is a very old company! Are you sure you didn't
make a mistake in the seizure?"
contrôles.1.fr: Il s'agit d'une très vieille entreprise ! Êtes-vous sûr de ne
pas vous être trompé dans la saisie ?
description.en: >
[automatic] The activity start date (or creation date) is set at the time of
the
@ -5620,6 +5643,19 @@ entreprise . date de création:
suggestions.Fin 2017.fr: Fin 2017
titre.en: Creation date
titre.fr: date de création
entreprise . date de création . contrôle date future:
description.en: '[automatic] We can only see so far into the future'
description.fr: Nous ne pouvons voir aussi loin dans le futur
titre.en: '[automatic] check future date'
titre.fr: contrôle date future
entreprise . date de création . contrôle date passée:
description.en:
"[automatic] This is a very old company! Are you sure you didn't
make a mistake in the seizure?"
description.fr: Il s'agit d'une très vieille entreprise ! Êtes-vous sûr de ne
pas vous être trompé dans la saisie ?
titre.en: '[automatic] past date check'
titre.fr: contrôle date passée
entreprise . durée d'activité:
titre.en: length of service
titre.fr: durée d'activité

View File

@ -64,7 +64,7 @@ type Situation = Partial<Record<DottedName, any>>
export type Simulation = {
config: SimulationConfig
url: string
hiddenControls: Array<string>
hiddenNotifications: Array<string>
situation: Situation
initialSituation: Situation
targetUnit: string
@ -101,7 +101,7 @@ function simulation(
return {
config,
url,
hiddenControls: [],
hiddenNotifications: [],
situation: companySituation,
initialSituation: companySituation,
targetUnit: config['unité par défaut'] || '€/mois',
@ -114,12 +114,15 @@ function simulation(
}
switch (action.type) {
case 'HIDE_CONTROL':
return { ...state, hiddenControls: [...state.hiddenControls, action.id] }
case 'HIDE_NOTIFICATION':
return {
...state,
hiddenNotifications: [...state.hiddenNotifications, action.id]
}
case 'RESET_SIMULATION':
return {
...state,
hiddenControls: [],
hiddenNotifications: [],
situation: state.initialSituation,
foldedSteps: [],
unfoldedStep: null

View File

@ -39,6 +39,7 @@ dirigeant . assimilé salarié:
- contrat salarié . temps de travail . heures supplémentaires
- contrat salarié . déduction forfaitaire spécifique
- contrat salarié . régime des impatriés
- contrat salarié . rémunération . contrôle smic
- entreprise . association non lucrative
références:
Le régime des dirigeants: https://www.urssaf.fr/portail/home/employeur/creer/choisir-une-forme-juridique/le-statut-du-dirigeant/les-dirigeants-rattaches-au-regi.html
@ -75,13 +76,17 @@ dirigeant . auto-entrepreneur:
dirigeant . auto-entrepreneur . base des cotisations:
formule: entreprise . chiffre d'affaires
contrôles:
- si: base des cotisations > plafond
message: Le seuil annuel de chiffre d'affaires pour le régime de l'auto-entreprise est dépassé. [En savoir plus](/documentation/dirigeant/autoentrepreneur/plafond)
niveau: avertissement
- si: entreprise . chiffre d'affaires > entreprise . franchise de TVA
message: Le seuil annuel de chiffre d'affaires pour la franchise de TVA est dépassé. [En savoir plus](/documentation/entreprise/franchise-de-TVA)
niveau: information
dirigeant . auto-entrepreneur . contrôle seuil de CA dépassé:
type: notification
sévérité: avertissement
applicable si: base des cotisations > plafond
description: Le seuil annuel de chiffre d'affaires pour le régime de l'auto-entreprise est dépassé. [En savoir plus](/documentation/dirigeant/autoentrepreneur/plafond)
dirigeant . auto-entrepreneur . contrôle seuil de TVA dépassé:
type: notification
applicable si: entreprise . chiffre d'affaires > entreprise . franchise de TVA
description: Le seuil annuel de chiffre d'affaires pour la franchise de TVA est dépassé. [En savoir plus](/documentation/entreprise/franchise-de-TVA)
dirigeant . auto-entrepreneur . plafond:
description: |
@ -337,13 +342,14 @@ dirigeant . auto-entrepreneur . impôt . versement libératoire:
Pour en bénéficier, votre revenu fiscal de référence ne doit pas excéder 27 086 € en 2018
question: Bénéficiez-vous du versement libératoire de l'impôt sur le revenu ?
par défaut: non
contrôles:
- si:
toutes ces conditions:
- impôt . foyer fiscal . revenu fiscal de référence > 27086 €/an
- versement libératoire
message: Le versement libératoire n'est pas disponible si les revenus de votre ménage sont supérieurs à 27 086 € par part en 2018
niveau: info
dirigeant . auto-entrepreneur . impôt . versement libératoire . contrôle seuil:
type: notification
applicable si:
toutes ces conditions:
- impôt . foyer fiscal . revenu fiscal de référence > 27086 €/an
- versement libératoire
description: Le versement libératoire n'est pas disponible si les revenus de votre ménage sont supérieurs à 27 086 € par part en 2018
dirigeant . auto-entrepreneur . impôt . versement libératoire . montant:
titre: versement libératoire auto-entrepreneur
@ -433,27 +439,27 @@ dirigeant . rémunération totale:
dirigeant . indépendant:
rend non applicable: contrat salarié
formule: dirigeant = 'indépendant'
contrôles:
- si:
toutes ces conditions:
- dirigeant = 'indépendant'
- entreprise . durée d'activité . en fin d'année < 2 ans
- entreprise . date de création != 02/01/2020
message: |
Lorsque vous commencez votre activité, vos revenus professionnels
nétant pas connus, les cotisations et contributions des deux premières
années sont calculées sur une base forfaitaire.
Cette base sélève à 19 % du plafond annuel de la Sécurité sociale au titre de
la première et de la deuxième année dactivité.
dirigeant . indépendant . contrôle base forfaitaire:
type: notification
applicable si:
toutes ces conditions:
- entreprise . durée d'activité . en fin d'année < 2 ans
- entreprise . date de création != 02/01/2020
description: >-
Lorsque vous commencez votre activité, vos revenus professionnels
nétant pas connus, les cotisations et contributions des deux premières
années sont calculées sur une base forfaitaire.
Il y a un ajustement la troisième année en fonction des revenus réels
déclarées lors des deux années précédentes.
Cette base sélève à 19 % du plafond annuel de la Sécurité sociale au titre de
la première et de la deuxième année dactivité.
Ce simulateur calcul les cotisations au régime de croisière (après
régularisation). Il vous permet donc de connaître le montant à
provisionner pour la régularisation.
niveau: info
Il y a un ajustement la troisième année en fonction des revenus réels
déclarées lors des deux années précédentes.
Ce simulateur calcul les cotisations au régime de croisière (après
régularisation). Il vous permet donc de connaître le montant à
provisionner pour la régularisation.
dirigeant . indépendant . cotisations et contributions . exonérations . ACRE:
applicable si: entreprise . ACRE
@ -761,13 +767,14 @@ dirigeant . indépendant . contrats madelin . montant:
somme:
- mutuelle . montant
- retraite . montant
contrôles:
- si: entreprise . charges < montant
niveau: avertissement
message: |
Le montant de l'ensemble des cotisations à vos contrats Madelin
doit être inclus dans vos charges de fonctionnement, or ce vous
avez indiqué un montant de cotisations supérieur aux charges.
dirigeant . indépendant . contrats madelin . contrôle montant charges:
type: notification
applicable si: entreprise . charges < montant
description: >-
Le montant de l'ensemble des cotisations à vos contrats Madelin
doit être inclus dans vos charges de fonctionnement, or ce vous
avez indiqué un montant de cotisations supérieur aux charges.
dirigeant . indépendant . contrats madelin . part déductible fiscalement:
titre: Part de la cotisation à contrat Madelin qui est déductible fiscalement

View File

@ -19,13 +19,18 @@ entreprise . date de création:
Début 2019: 01/01/2019
Fin 2017: 31/12/2017
type: date
contrôles:
- si: date de création > 01/2021
niveau: avertissement
message: Nous ne pouvons voir aussi loin dans le futur
- si: date de création < 01/1900
niveau: avertissement
message: Il s'agit d'une très vieille entreprise ! Êtes-vous sûr de ne pas vous être trompé dans la saisie ?
entreprise . date de création . contrôle date future:
type: notification
sévérité: avertissement
applicable si: date de création > 01/2021
description: Nous ne pouvons voir aussi loin dans le futur
entreprise . date de création . contrôle date passée:
type: notification
sévérité: avertissement
applicable si: date de création < 01/1900
description: Il s'agit d'une très vieille entreprise ! Êtes-vous sûr de ne pas vous être trompé dans la saisie ?
entreprise . durée d'activité:
formule:
@ -377,10 +382,19 @@ entreprise . catégorie d'activité . libérale règlementée:
Il s'agit des autres personnes qui pratiquent, une science ou un art et dont l'activité intellectuelle joue le principal rôle. Leurs recettes doivent représenter la rémunération d'un travail personnel, sans lien de subordination, tout en engageant leur responsabilité technique et morale.
> Exemples de professions non-règlementées : développeur, historien, urbaniste...
références:
Liste des activités libérales: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/liste-professions-liberales
entreprise . catégorie d'activité . libérale règlementée . avertissement:
type: notification
sévérité: avertissement
description: >-
Attention, le simulateur n'est pas encore complet pour les professions libérales règlementées :
- pour la retraite complémentaire, seul le barème interprofessionnel, celui de la CIPAV, a été intégré pour l'instant.
- assurez-vous que le statut auto-entrepreneur est bien compatible avec votre profession règlementée
- pour les praticiens et auxiliaires médicaux (PAM), [les spécificités de calcul des cotisations](https://www.urssaf.fr/portail/home/praticien-et-auxiliaire-medical/mes-cotisations/le-calcul-de-mes-cotisations/la-participation-de-la-cpam-a-me.html) et la [CURPS](https://www.urssaf.fr/portail/home/indépendant/mes-cotisations/quelles-cotisations/la-contribution-aux-unions-regio/qui-est-redevable-de-la-curps.html) ne sont pas encore intégrées.
entreprise . catégorie d'activité . libérale règlementée . type d'activité libérale règlementée:
formule:
une possibilité:

View File

@ -658,19 +658,17 @@ dirigeant . indépendant . PL . PAM . CARCDSF . retraite complémentaire . rédu
annexes (2033 B et D ou 2053 et 2058 A) de lannée 2019.
unité: '%'
formule: assiette des cotisations / (85% * plafond sécurité sociale temps plein)
contrôles:
- si:
toutes ces conditions:
- dirigeant . indépendant . PL . PAM . CARCDSF
- assiette des cotisations < 85% * plafond sécurité sociale temps plein
niveau: info
message: |
Vous avez la possibilité de bénéficier d'une réduction de cotisation
pour la retraite complémentaire si vous en faites la demande. [En savoir
plus](/documentation/dirigeant/indépendant/PL/PAM/CARCDSF/retraite-complémentaire/forfaitaire/réduction)
références:
Site CARCDSF: www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations
dirigeant . indépendant . PL . PAM . CARCDSF . retraite complémentaire . réduction de la cotisation forfaitaire . info réduction:
type: notification
applicable si: assiette des cotisations < 85% * plafond sécurité sociale temps plein
description: >-
Vous avez la possibilité de bénéficier d'une réduction de cotisation
pour la retraite complémentaire si vous en faites la demande. [En savoir
plus](/documentation/dirigeant/indépendant/PL/PAM/CARCDSF/retraite-complémentaire/forfaitaire/réduction)
dirigeant . indépendant . PL . PAM . CARCDSF . chirurgien-dentiste:
applicable si: métier = 'PAM . chirurgien-dentiste'
formule: oui
@ -703,19 +701,18 @@ dirigeant . indépendant . PL . PAM . CARCDSF . chirurgien-dentiste . PCV:
assiette: assiette des cotisations
plafond: 5 * plafond sécurité sociale temps plein
taux: 0.725 %
contrôles:
- si:
toutes ces conditions:
- chirurgien-dentiste
- (assiette des cotisations / prix d'une consultation) <= 500 consultation/an
niveau: info
message: |
Vous avez la possibilité de bénéficier d'une éxonération totale de cotisation
pour la prestation complémentaire de vieillesse (PCV) si vous en faites la demande. [En savoir
plus](http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations)
références:
Site CARCDSF: www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations
dirigeant . indépendant . PL . PAM . CARCDSF . chirurgien-dentiste . PCV . info exonération:
type: notification
applicable si: (assiette des cotisations / prix d'une consultation) <= 500 consultation/an
description: >-
Vous avez la possibilité de bénéficier d'une exonération totale de
cotisation pour la prestation complémentaire de vieillesse (PCV) si vous en
faites la demande. [En savoir
plus](http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations)
dirigeant . indépendant . PL . PAM . CARCDSF . chirurgien-dentiste . taux Urssaf:
description: |
Le « taux Urssaf » (taux UR) permet de calculer la part de votre
@ -818,19 +815,18 @@ dirigeant . indépendant . PL . PAM . CARCDSF . sage-femme . PCV:
produit:
assiette: 780 €/an
taux: 1 / 3
contrôles:
- si:
toutes ces conditions:
- sage-femme
- assiette des cotisations <= 3120 €/an
niveau: info
message: |
Vous avez la possibilité de bénéficier d'une éxonération totale de cotisation
pour la prestation complémentaire de vieillesse (PCV) si vous en faites la demande. [En savoir
plus](http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations)
références:
Site CARCDSF: www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations
dirigeant . indépendant . PL . PAM . CARCDSF . sage-femme . PCV . info exonération:
type: notification
applicable si: assiette des cotisations <= 3120 €/an
description: >-
Vous avez la possibilité de bénéficier d'une exonération totale de
cotisation pour la prestation complémentaire de vieillesse (PCV) si vous en
faites la demande. [En savoir
plus](http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations)
dirigeant . indépendant . PL . PAM . PCV:
titre: Prestations complémentaires vieillesse
acronyme: PCV

View File

@ -17,19 +17,6 @@ contrat salarié:
- Particuliers employeurs : Plus de 8 heures par semaine ou de plus de 4 semaines consécutives dans l'année.
- CDI : 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).
contrôles:
- si: CDD
niveau: information
message: |
Rappelez-vous qu'un CDD doit toujours correspondre à un besoin temporaire de l'entreprise.
[Code du travail - Article L1242-1](https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000006901194&cidTexte=LEGITEXT000006072050)
- si: stage
niveau: avertissement
message: |
Une convention de stage **n'est pas un contrat de travail**, et ne peut pas être conclue pour réaliser une tâche régulière correspondant à un poste de travail permanent, ou à un accroissement temporaire de l'activité de l'entreprise. [Code de l'éducation - Article L124-7](https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000029234119&cidTexte=LEGITEXT000006071191)
Par ailleurs, une entreprise de moins de 20 salariés ne peut pas accueillir plus de **3&nbsp;stagiaires**, et pas plus de **15% de leffectif** pour les entreprises de plus de 20 salariés.
contrat salarié . CDI:
formule: contrat salarié = 'CDI'
@ -157,13 +144,18 @@ contrat salarié . frais professionnels . titres-restaurant . taux participation
suggestions:
50%: 50
60%: 60
contrôles:
- si: taux participation employeur < 50%
niveau: avertissement
message: La part employeur du titre-restaurant doit être de 50% au minimum
- si: taux participation employeur > 60%
niveau: avertissement
message: La part employeur du titre-restaurant doit être de 60% au maximum
contrat salarié . frais professionnels . titres-restaurant . contrôle taux employeur min:
type: notification
sévérité: avertissement
applicable si: taux participation employeur < 50%
description: La part employeur du titre-restaurant doit être de 50% au minimum
contrat salarié . frais professionnels . titres-restaurant . contrôle taux employeur max:
type: notification
sévérité: avertissement
applicable si: taux participation employeur > 60%
description: La part employeur du titre-restaurant doit être de 60% au maximum
contrat salarié . frais professionnels . indemnité kilométrique vélo:
icônes: 🚴
@ -255,12 +247,14 @@ contrat salarié . activité partielle . heures travaillées:
30 h/semaine: 130
20 h/semaine: 86.6666
10 h/semaine: 43.3333
contrôles:
- si: heures travaillées > temps de travail . temps contractuel
niveau: avertissement
message: >-
Dans le cadre de l'activité partielle, le temps de travail doit être inférieur
à celui inscrit dans le contrat de travail.
contrat salarié . activité partielle . heures travaillées . contrôle temps de travail:
type: notification
sévérité: avertissement
applicable si: heures travaillées > temps de travail . temps contractuel
description: >-
Dans le cadre de l'activité partielle, le temps de travail doit être inférieur
à celui inscrit dans le contrat de travail.
contrat salarié . activité partielle . indemnités:
titre: indemnités activité partielle
@ -910,13 +904,12 @@ contrat salarié . CDD . congés non pris:
3 jours: 3
10 jours: 10
par défaut: 0 jour ouvré
contrôles:
- si: congés non pris > congés dus en jours ouvrés
message: Un salarié acquiert normalement 2.08 jours de congés ouvrés par mois.
niveau: avertissement
solution:
cible: contrat salarié . CDD . durée contrat
texte: Définir la durée de contrat
contrat salarié . CDD . contrôle congés non pris max:
type: notification
sévérité: avertissement
applicable si: congés non pris > congés dus en jours ouvrés
description: Un salarié acquiert normalement 2.08 jours de congés ouvrés par mois.
contrat salarié . CDD . contrat jeune vacances:
titre: Contrat jeune vacances
@ -974,10 +967,6 @@ contrat salarié . apprentissage . ancienneté:
- moins de trois ans
- moins de quatre ans
par défaut: "'moins d'un an'"
contrôles:
- si: moins de quatre ans
niveau: information
message: La durée maximale du contrat peut être portée à 4 ans lorsque la qualité de travailleur handicapé est reconnue à l'apprenti.
contrat salarié . apprentissage . ancienneté . moins d'un an:
formule: ancienneté = 'moins d'un an'
@ -991,6 +980,12 @@ contrat salarié . apprentissage . ancienneté . moins de trois ans:
contrat salarié . apprentissage . ancienneté . moins de quatre ans:
formule: ancienneté = 'moins de quatre ans'
contrat salarié . apprentissage . ancienneté . moins de quatre ans . information:
type: notification
description: >-
La durée maximale du contrat peut être portée à 4 ans lorsque la qualité de
travailleur handicapé est reconnue à l'apprenti.
contrat salarié . stage:
description: |
Un employeur qui accueille un stagiaire doit lui verser une gratification minimale. Celle-ci est en partie exonérée de cotisations sociales.
@ -1012,6 +1007,22 @@ contrat salarié . stage:
- temps de travail . temps partiel
- temps de travail . heures supplémentaires
- régime des impatriés
- rémunération . contrôle smic
contrat salarié . stage . avertissement:
type: notification
sévérité: avertissement
description: >-
Une convention de stage **n'est pas un contrat de travail**, et ne peut pas être conclue pour réaliser une tâche régulière correspondant à un poste de travail permanent, ou à un accroissement temporaire de l'activité de l'entreprise. [Code de l'éducation - Article L124-7](https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000029234119&cidTexte=LEGITEXT000006071191)
Par ailleurs, une entreprise de moins de 20 salariés ne peut pas accueillir plus de **3&nbsp;stagiaires**, et pas plus de **15% de leffectif** pour les entreprises de plus de 20 salariés.
contrat salarié . stage . contrôle gratification minimale:
type: notification
sévérité: avertissement
applicable si: rémunération . brut de base < stage . gratification minimale
description: >-
La rémunération du stage est inférieure à la [gratification minimale](https://www.service-public.fr/professionnels-entreprises/vosdroits/F32131).
contrat salarié . stage . gratification minimale:
formule: 15% * plafond sécurité sociale temps plein
@ -1035,17 +1046,12 @@ contrat salarié . CDD:
Par défaut, faire travailler quelqu'un en France établit automatiquement un CDI à temps plein.
Certaines situations exceptionnelles permettent aux employeurs de prévoir une date de fin. Le contrat, qui est alors nécessaire, mentionne cette date de fin.
# TODO: règle de type : il faut qu'un motif et une durée soient sélectionnés pour qu'un contrat soit un CDD. Cela revient à dire que les variables CDD et motif sont obligatoires *dans le contexte* de leur attache
# implique:
# - emploi temporaire
# - motif de recours
# # C'est ici que l'on dit : si le CDD a été choisi, la réponses à motif CDD doit être donnée (on ne peut ne pas y répondre)
#
# - Variable: emploi temporaire
# description: Le contrat n'a ni pour objet ni pour effet de pourvoir durablement un emploi lié à l'activité normale et permanente de l'entreprise.
# références:
# Code du travail - Article L1242-1
#
contrat salarié . CDD . information:
type: notification
description: >-
Rappelez-vous qu'un CDD doit toujours correspondre à un besoin temporaire de l'entreprise.
[Code du travail - Article L1242-1](https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000006901194&cidTexte=LEGITEXT000006072050)
contrat salarié . cotisations . assiette:
titre: Assiette des cotisations sociales
description: |
@ -1096,32 +1102,6 @@ contrat salarié . rémunération . brut de base:
suggestions:
salaire médian: 2300 €/mois
SMIC: 1539 €/mois
contrôles:
- si:
toutes ces conditions:
- rémunération . assiette de vérification du SMIC < (SMIC contractuel - 1 €/mois)
- dirigeant != 'assimilé salarié'
- stage != oui
- apprentissage != oui
niveau: avertissement
message: |
Le salaire saisi est inférieur au SMIC.
- si:
toutes ces conditions:
- stage
- brut de base < stage . gratification minimale
niveau: avertissement
message: |
La rémunération du stage est inférieure à la [gratification minimale](https://www.service-public.fr/professionnels-entreprises/vosdroits/F32131).
- si:
toutes ces conditions:
- brut de base > 10000 €/mois
- dirigeant = non
niveau: information
message: |
Le salaire mensuel saisi est élevé. Ne vous êtes-vous pas trompé de période de calcul ?
formule:
inversion numérique:
question: Quel est le salaire ?
@ -1139,6 +1119,21 @@ contrat salarié . rémunération . brut de base:
références:
Le salaire. Fixation et paiement: http://travail-emploi.gouv.fr/droit-du-travail/remuneration-et-participation-financiere/remuneration/article/le-salaire-fixation-et-paiement
contrat salarié . rémunération . contrôle smic:
type: notification
sévérité: avertissement
applicable si: assiette de vérification du SMIC < (SMIC contractuel - 1 €/mois)
description: Le salaire saisi est inférieur au SMIC.
contrat salarié . rémunération . contrôle salaire élevé:
type: notification
applicable si:
toutes ces conditions:
- brut de base >= 10000 €/mois
- dirigeant = non
description: >-
Le salaire mensuel saisi est élevé. Ne vous êtes-vous pas trompé de période de calcul ?
contrat salarié . rémunération . brut de base . équivalent temps plein:
applicable si: temps de travail . temps partiel
titre: Salaire brut équivalent temps plein
@ -1979,16 +1974,18 @@ contrat salarié . temps de travail . temps partiel:
contrat salarié . temps de travail . temps partiel . heures par semaine:
par défaut: 32 heures/semaine
question: Quel est le nombre d'heures travaillées par semaine dans le cadre du temps partiel ?
contrôles:
- si:
toutes ces conditions:
- temps partiel
- heures par semaine < 24
niveau: avertissement
message: Le nombre minimum d'heures par semaine est 24. Il est possible de descendre plus bas dans certains cas seulement. [Plus d'infos](https://www.service-public.fr/particuliers/vosdroits/F32428).
- si: heures par semaine >= base légale
niveau: avertissement
message: Un temps partiel doit être en dessous de la durée de travail légale (35h)
contrat salarié . temps de travail . temps partiel . contrôle temps min:
type: notification
sévérité: avertissement
applicable si: heures par semaine < 24
description: Le nombre minimum d'heures par semaine est 24. Il est possible de descendre plus bas dans certains cas seulement. [Plus d'infos](https://www.service-public.fr/particuliers/vosdroits/F32428).
contrat salarié . temps de travail . temps partiel . contrôle temps max:
type: notification
sévérité: avertissement
applicable si: heures par semaine >= base légale
description: Un temps partiel doit être en dessous de la durée de travail légale (35h)
contrat salarié . temps de travail . quotité de travail:
description: Temps de travail en proportion du temps complet légal.
@ -2013,20 +2010,23 @@ contrat salarié . temps de travail . heures supplémentaires:
aucune: 0
39h / semaine: 17.33
42h / semaine: 30.33
contrôles:
- si:
toutes ces conditions:
- heures supplémentaires > 9 heures/semaine * période . semaines par mois
- heures supplémentaires <= 13 heures/semaine * période . semaines par mois
niveau: info
message: La durée hebdomadaire moyenne de travail ne peut pas dépasser 44h
- si: heures supplémentaires > 13 heures/semaine * période . semaines par mois
niveau: avertissement
message: La durée hebdomadaire maximale de travail ne peut pas dépasser 48h
références:
service-public.fr: https://www.service-public.fr/particuliers/vosdroits/F2391
contrat salarié . temps de travail . contrôle 44h max:
type: notification
applicable si:
toutes ces conditions:
- heures supplémentaires > 9 heures/semaine * période . semaines par mois
- heures supplémentaires <= 13 heures/semaine * période . semaines par mois
description: La durée hebdomadaire moyenne de travail ne peut pas dépasser 44h
contrat salarié . temps de travail . contrôle 48h max:
type: notification
sévérité: avertissement
applicable si: heures supplémentaires > 13 heures/semaine * période . semaines par mois
description: La durée hebdomadaire maximale de travail ne peut pas dépasser 48h
contrat salarié . temps de travail . heures supplémentaires . majoration:
description: |
La rémunération des heures supplémentaires fait l'objet d'un ou plusieurs taux de majoration, fixés par convention ou accord collectif d'entreprise ou d'établissement (ou, à défaut, par convention ou accord de branche). Chaque taux est au minimum fixé à 10%.
@ -2055,14 +2055,18 @@ contrat salarié . temps de travail . heures complémentaires:
applicable si: temps partiel
question: Combien d'heures complémentaires (non récupérées en repos) sont effectuées par mois ?
par défaut: 0 heure/mois
contrôles:
- si: heures complémentaires > seuil légal
niveau: information
message: Sauf disposition conventionnelle, le nombre d'heures complémentaires ne peut être supérieur à un dixième de la durée contractuelle du temps partiel.
# TODO: Le système d'unité ne fait pas la conversion mois/semaines automatiquement donc nous devons ajouter un terme "semaines par mois" manuellement
- si: heures complémentaires + temps partiel . heures par semaine * période . semaines par mois >= base légale * période . semaines par mois
niveau: avertissement
message: Les heures complémentaires ne doivent pas amener le salarié à travailler pour une durée supérieure ou égale à la durée légale du travail (35h)
contrat salarié . temps de travail . contrôle heures complémentaires 10 pourcents:
type: notification
applicable si: heures complémentaires > heures complémentaires . seuil légal
description: Sauf disposition conventionnelle, le nombre d'heures complémentaires ne peut être supérieur à un dixième de la durée contractuelle du temps partiel.
# TODO: Le système d'unité ne fait pas la conversion mois/semaines automatiquement donc nous devons ajouter un terme "semaines par mois" manuellement
contrat salarié . temps de travail . contrôle heures complémentaires max:
type: notification
sévérité: avertissement
applicable si: heures complémentaires + temps partiel . heures par semaine * période . semaines par mois >= base légale * période . semaines par mois
description: Les heures complémentaires ne doivent pas amener le salarié à travailler pour une durée supérieure ou égale à la durée légale du travail (35h)
contrat salarié . temps de travail . heures complémentaires . majoration:
description: >
@ -2502,10 +2506,12 @@ contrat salarié . complémentaire santé . part employeur:
50%: 50
100%: 100
par défaut: 50%
contrôles:
- si: part employeur < 50%
niveau: avertissement
message: La part employeur de la complémentaire santé doit être de 50% au minimum
contrat salarié . complémentaire santé . part employeur min:
type: notification
sévérité: avertissement
applicable si: part employeur < 50%
description: La part employeur de la complémentaire santé doit être de 50% au minimum
contrat salarié . complémentaire santé . part salarié:
description: Part de la complémentaire santé payée par l'employé. Ne peut pas être supérieure à 50%
@ -2537,10 +2543,12 @@ contrat salarié . complémentaire santé . forfait:
basique: 40
élevé: 100
alsace moselle basique: 30
contrôles:
- si: complémentaire santé . forfait < 15 €/mois
message: Vérifiez bien qu'une complémentaire santé si peu chère couvre le panier de soin minimal défini dans la loi.
niveau: avertissement
contrat salarié . complémentaire santé . contrôle min:
type: notification
sévérité: avertissement
applicable si: complémentaire santé . forfait < 15 €/mois
description: Vérifiez bien qu'une complémentaire santé si peu chère couvre le panier de soin minimal défini dans la loi.
contrat salarié . régime alsace moselle:
titre: Régime Alsace-Moselle
@ -3220,20 +3228,20 @@ contrat salarié . régime des impatriés:
- vieillesse
- retraite complémentaire
- protection sociale . retraite . base
contrôles:
- si: contrat salarié . régime des impatriés
niveau: information
message: |
Pour bénéficier de l'exonération de cotisations vieillesse, il faut remplir les conditions suivantes :
- Pouvoir justifier d'une contribution minimale versée ailleurs pour une assurance vieillesse
- Ne pas avoir été affilié, au cours des cinq années civiles précédant celle de la prise de fonctions, à un régime français obligatoire d'assurance vieillesse, sauf pour des activités accessoires, de caractère saisonnier ou pour les études.
[Lire le texte de loi](https://www.legifrance.gouv.fr/affichCode.do;jsessionid=F5CFB7C90D1D1F529A2CDC9FFD20BD6E.tplgfr34s_3?idSectionTA=LEGISCTA000038510929&cidTexte=LEGITEXT000006073189&dateTexte=20190626)
références:
impots.gouv.fr: https://www.impots.gouv.fr/portail/particulier/questions/puis-je-beneficier-du-regime-des-impatries
bofip: http://bofip.impots.gouv.fr/bofip/5694-PGP
Article 155B du Code général des impôts: https://www.legifrance.gouv.fr/affichCodeArticle.do?cidTexte=LEGITEXT000006069577&idArticle=LEGIARTI000006307476&dateTexte=&categorieLien=cid
contrat salarié . régime des impatriés . information:
type: notification
description: >-
Pour bénéficier de l'exonération de cotisations vieillesse, il faut remplir les conditions suivantes :
- Pouvoir justifier d'une contribution minimale versée ailleurs pour une assurance vieillesse
- Ne pas avoir été affilié, au cours des cinq années civiles précédant celle de la prise de fonctions, à un régime français obligatoire d'assurance vieillesse, sauf pour des activités accessoires, de caractère saisonnier ou pour les études.
[Lire le texte de loi](https://www.legifrance.gouv.fr/affichCode.do;jsessionid=F5CFB7C90D1D1F529A2CDC9FFD20BD6E.tplgfr34s_3?idSectionTA=LEGISCTA000038510929&cidTexte=LEGITEXT000006073189&dateTexte=20190626)
contrat salarié . taxe sur les salaires:
unité: €/mois
taxe:
@ -3583,17 +3591,18 @@ contrat salarié . convention collective:
- SVP
- compta
- optique
contrôles:
- si:
toutes ces conditions:
- convention collective != non
- convention collective != 'droit commun'
niveau: avertissement
message: |
Attention, l'implémentation des conventions collective est encore
partielle et non vérifiée.
Néanmoins, cela permet d'obtenir une première estimation, plus précise
que le régime général.
contrat salarié . convention collective . contrôle décharge:
type: notification
sévérité: avertissement
applicable si:
toutes ces conditions:
- convention collective != non
- convention collective != 'droit commun'
description: >-
Attention, l'implémentation des conventions collective est encore partielle
et non vérifiée. Néanmoins, cela permet d'obtenir une première estimation,
plus précise que le régime général.
contrat salarié . convention collective . droit commun:
formule: convention collective = 'droit commun'

View File

@ -227,16 +227,20 @@ activité transfrontalière simultanée . activité non salariée:
activité transfrontalière simultanée . activité non salariée . nombre:
question: Dans combien de pays autre que la France exercerez-vous une activité non salariée ?
type: nombre
contrôles:
- si: nombre > 2
message: >
Ce formulaire ne permet pas de déclarer une activité dans plus de
3 pays
niveau: avertissement
- si: nombre < 1
message: >
Vous devez déclarer un pays au moins
niveau: avertissement
activité transfrontalière simultanée . activité non salariée . nombre max:
type: notification
sévérité: avertissement
applicable si: nombre > 2
description: >
Ce formulaire ne permet pas de déclarer une activité dans plus de 3 pays
activité transfrontalière simultanée . activité non salariée . nombre min:
type: notification
sévérité: avertissement
applicable si: nombre < 1
description: >
Vous devez déclarer un pays au moins
activité transfrontalière simultanée . activité non salariée . n°1:
titre: activité non salarié n°1

View File

@ -1,19 +0,0 @@
import { evaluateNode } from './evaluation'
export let evaluateControls = (cache, situation, parsedRules) => {
return Object.values(parsedRules)
.filter(rule => !!rule.contrôles)
.map(rule =>
rule.contrôles.map(contrôle => ({
...contrôle,
evaluated: evaluateNode(
{ ...cache, contextRule: [rule.dottedName] },
situation,
parsedRules,
contrôle.testExpression
)
}))
)
.flat()
.filter(contrôle => contrôle.evaluated.nodeValue === true)
}

View File

@ -1,6 +1,5 @@
/* eslint-disable @typescript-eslint/ban-types */
import { mapObjIndexed } from 'ramda'
import { evaluateControls } from './controls'
import { evaluationError, warning } from './error'
import { evaluateNode } from './evaluation'
import { convertNodeToUnit, simplifyNodeUnit } from './nodeUnits'
@ -145,10 +144,6 @@ export default class Engine<Names extends string> {
return result
}
controls() {
return evaluateControls(this.cache, this.situation, this.parsedRules)
}
getWarnings() {
return this.warnings
}

View File

@ -160,26 +160,7 @@ export default function<Names extends string>(
unit: child.unit,
explanation: child
}
},
contrôles: map((control: any) => {
const testExpression = parse(rules, rule, parsedRules)(control.si)
if (
!testExpression.explanation &&
!(testExpression.category === 'reference')
)
throw new Error(
'Ce contrôle ne semble pas être compris :' + control['si']
)
return {
dottedName: dottedName,
level: control['niveau'],
test: control['si'],
message: control['message'],
testExpression,
solution: control['solution']
}
})
}
})(rule)
parsedRules[dottedName] = {

View File

@ -10,19 +10,6 @@ type translateAttribute = (
) => Rule
/* Traduction */
const translateContrôle: translateAttribute = (prop, rule, translation, lang) =>
assoc(
'contrôles',
rule.contrôles!.map((control, i) => ({
...control,
message: translation[`${prop}.${i}.${lang}`]?.replace(
/^\[automatic\] /,
''
)
})),
rule
)
const translateSuggestion: translateAttribute = (
prop,
rule,
@ -50,7 +37,6 @@ export const attributesToTranslate = [
'question',
'résumé',
'suggestions',
'contrôles',
'note'
]
@ -58,9 +44,6 @@ const translateProp = (lang: string, translation: Translation) => (
rule: Rule,
prop: string
) => {
if (prop === 'contrôles' && rule?.contrôles) {
return translateContrôle(prop, rule, translation, lang)
}
if (prop === 'suggestions' && rule?.suggestions) {
return translateSuggestion(prop, rule, translation, lang)
}

View File

@ -1,15 +1,5 @@
import { Temporal } from '../temporal'
type Contrôle = {
si: string
message: string
niveau: 'avertissement' | 'information'
solution?: {
cible: string
texte: string
}
}
type BaseUnit = string
export type Unit = {
@ -30,7 +20,6 @@ export type Rule = {
note?: string
suggestions?: { [description: string]: number }
références?: { [source: string]: string }
contrôles?: Array<Contrôle>
}
export type Rules<Names extends string = string> = Record<Names, Rule>

View File

@ -1,77 +0,0 @@
import { expect } from 'chai'
import Engine, { parseRules } from '../source/index'
describe('controls', function() {
let rawRules = {
net: { formule: 'brut - cotisation' },
cotisation: { formule: 235 },
'résident en France': { formule: 'oui' },
brut: {
unité: '€',
question: 'Quel est le salaire brut ?',
contrôles: [
{
si: 'brut < 300',
niveau: 'bloquant',
message:
'Malheureux, je crois que vous vous êtes trompé dans votre saisie.'
},
{
si: 'brut < 1000',
niveau: 'bloquant',
message: 'Toujours pas, nous avons des standards en France !'
},
{
si: 'brut < 1500',
niveau: 'avertissement',
message: 'Toujours pas, nous avons des standards en France !'
},
{
si: 'brut > 100000',
niveau: 'information',
message: 'Oulah ! Oulah !'
},
{
si: {
'toutes ces conditions': ['brut > 1000000', 'résident en France']
},
niveau: 'information',
message: 'Vous êtes un contribuable hors-pair !'
}
]
}
}
it('Should parse blocking controls', function() {
let controls = Object.values(parseRules(rawRules)).find(r => r.contrôles)
.contrôles
expect(
controls.filter(({ level }) => level == 'bloquant')
).to.have.lengthOf(2)
})
it('Should allow imbricated conditions', function() {
const engine = new Engine(rawRules)
let controls = engine.setSituation({ brut: 2000000 }).controls()
expect(
controls.find(
({ message }) => message === 'Vous êtes un contribuable hors-pair !'
)
).to.exist
let controls2 = engine.setSituation({ brut: 100001 }).controls()
expect(controls2.find(({ message }) => message === 'Oulah ! Oulah !')).to
.exist
let controls3 = engine.setSituation({ brut: 100 }).controls()
expect(
controls3.find(
({ message }) =>
message ===
'Malheureux, je crois que vous vous êtes trompé dans votre saisie.'
)
).to.exist
})
})