Commit 6760eebc authored by Bertrand Matge's avatar Bertrand Matge
Browse files

Ajout d'un simulateur des indemnités en cas de licenciement abusif

Ajout du ficher de définition du simulateur (bareme-indemnites-prudhomales.xml)
Ajout du fichier de style (bareme-indemnites-prudhomales.css)
Ajout des données de références (bareme-indemnites-prudhomales.json) et de leur schéma (bareme-indemnites-prudhomales.schema.json) 
Mise à jour du README.md
parent 2ff86502
......@@ -2,7 +2,7 @@
Le site officiel de l'administration française service-public.fr référence une cinquantaine de simulateurs disponibles pour répondre à un large éventail de questions administratives qui se posent aux particuliers et aux professionnels.
Parmi ces similateurs, la DILA en a développé onze :
Parmi ces similateurs, la DILA en a développé douze :
* [Simulateur du coût du certificat d'immatriculation](https://www.service-public.fr/simulateur/calcul/cout-certificat-immatriculation)
* [Simulateur de calcul des intérêts moratoires des marchés publics](https://www.service-public.fr/simulateur/calcul/interets-moratoires)
......@@ -15,6 +15,7 @@ Parmi ces similateurs, la DILA en a développé onze :
* [Simulateur : connaître la zone de sa commune : 1, 1 bis, 2 ou 3](https://www.service-public.fr/simulateur/calcul/zones)
* [Simulateur : savoir si un logement est situé en zone tendue](https://www.service-public.fr/simulateur/calcul/zones-tendues)
* [Simulateur : barème fiscal de l'usufruit et de la nue-propriété](https://www.service-public.fr/simulateur/calcul/bareme-fiscal-usufruit/particuliers)
* [Simulateur des indemnités en cas de licenciement abusif](https://www.service-public.fr/simulateur/calcul/bareme-indemnites-prudhomales)
## Simulateur du coût du certificat d'immatriculation
Ce simulateur du coût de carte grise (certificat d’immatriculation) est disponible sur le site service-public.fr depuis le 5 avril 2016.
......@@ -70,6 +71,10 @@ Ce simulateur vous permet de déterminer si le logement est situé en zone tendu
## Simulateur : barème fiscal de l'usufruit et de la nue-propriété
Ce simulateur permet de connaître la répartition de la valeur d'un bien entre l'usufruitier et le nu-propriétaire en cas de démembrement du droit de propriété.
## Simulateur des indemnités en cas de licenciement abusif
Ce simulateur indique les montants minimum et maximum des indemnités pour dommages et intérêts susceptibles d'être fixées par le juge prud'homal en cas de licenciement irrégulier ou sans cause réelle et sérieuse.
Ces planchers et plafonds, qui s'imposent désormais au juge, ne concernent que des licenciements notifiés au salarié après le 23 septembre 2017.
# Simulateurs de la DILA sur boamp.fr
......@@ -177,7 +182,7 @@ Vous pouvez ignorer tous les autres paramètres en faisant <Enter>.
## À propos du moteur de simulation
Ce moteur est disponible sous licence MIT, et propose les fonctionnalités suivantes :
* La simulation en ligne est pleinement opérationelle et éprouvée. La DILA l'utilise pour onze simulateurs en ligne sur ses sites.
* La simulation en ligne est pleinement opérationelle et éprouvée. La DILA l'utilise pour douze simulateurs en ligne sur ses sites.
* La gestion des utilisateurs de l'interface d'administration (super admin, admin, contributeur, ...)
* La gestion (création, mise à jour, import) des sources de données de référence internes (bases de données) et externes (via des web services)
* L'import et l'export de simulateurs
......
<?xml version="1.0" encoding="utf-8"?>
<Simulator xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../doc/Simulator.xsd" name="bareme-indemnites-prudhomales" label="Simulateur des indemnités en cas de licenciement abusif" defaultView="particuliers" referer="https://www.service-public.fr/particuliers/vosdroits/R49067" dynamic="0" memo="1">
<Description><![CDATA[
Ce simulateur indique les montants minimum et maximum des indemnités pour dommages et intérêts susceptibles d'être fixées par le juge prud'homal en cas de licenciement irrégulier ou sans cause réelle et sérieuse.
Ces planchers et plafonds, qui s'imposent désormais au juge, ne concernent que des licenciements notifiés au salarié après le 23 septembre 2017.
<b>Attention </b>: le juge n'est pas lié par ces montants dans certains cas de nullité du licenciement (en cas de violation d'une liberté fondamentale, de faits de harcèlement moral ou sexuel, de licenciement discriminatoire, ...)
Pour en savoir plus cliquez <a target="_blank" rel="nofollow" href="https://www.service-public.fr/particuliers/vosdroits/F1848">ici</a>
]]></Description>
<DataSet dateFormat="d/m/Y" decimalPoint="," moneySymbol="€" symbolPosition="after">
<Data id="1" name="inputNbrAnciennete" label="Saisie par l'utilisateur : nombre d'années d'ancienneté " type="integer" max="80" unit="an(s)">
<Description><![CDATA[
L'ancienneté est calculée au jour de la rupture du contrat, c'est-à-dire à la fin du préavis, même si celui-ci n'est pas exécuté.
]]></Description>
</Data>
<Data id="2" name="anciennete1an" label="Ancienneté 0 ou 1 an" type="integer" content="#1" unit="année complète"></Data>
<Data id="3" name="anciennete2ansouplus" label="Ancienneté 2 ans ou plus" type="integer" content="#1" unit="années complètes"></Data>
<Data id="4" name="inputTypeEntreprise" label="Saisie par l'utilisateur : Choix du type d'entreprise" type="choice">
<Choices>
<Choice id="1" value="1" label="Entreprise de moins de 11 salariés"></Choice>
<Choice id="2" value="2" label="Entreprise de 11 salariés et plus"></Choice>
</Choices>
</Data>
<Data id="5" name="indemniteMiniMoins11" label="Résultat de Requête : Indemnité minimale pour les entreprises de moins de 11 salariés" type="text" source="1" index="'indemniteminimalemoinsde11'"></Data>
<Data id="6" name="indemniteMax" label="Résultat de Requête : Indemnité maximale (en mois de salaire brut)" type="text" source="1" index="'indemnitemaximale'"></Data>
<Data id="7" name="resultatIndemniteMini11etPlus" label="Résultat de Requête : Indemnité minimale pour les entreprises de 11 salariés ou +" type="text" source="1" index="'indemniteminimale11etplus'"></Data>
<Data id="8" name="indemniteMinimale" label="Indeminite Minimale" type="text" unit="mois de salaire brut"></Data>
<Data id="9" name="indemniteMaximale" label="Indemnité maximale" type="text" unit="mois de salaire brut"></Data>
</DataSet>
<Steps>
<Step id="1" name="situationSalariale" label="Situation" template="pages:article.html.twig" output="normal" dynamic="1">
<Panels>
<Panel id="1" name="panelAnciennete" label="">
<FieldSet id="1">
<Field position="1" data="1" usage="input" newline="0" label="Ancienneté du salarié dans l'entreprise " required="1" visibleRequired="0" help="1">
<PostNote><![CDATA[
En années complètes
]]></PostNote>
</Field>
<Field position="2" data="4" usage="input" newline="0" label="Type d'entreprise " required="0" visibleRequired="1" help="0" expanded="1"></Field>
</FieldSet>
</Panel>
</Panels>
<ActionList>
<Action name="btnSubmitAnciennete" label="Calculer" what="submit" for="nextStep" class="btn-primary"></Action>
</ActionList>
</Step>
<Step id="2" name="resultatIndemnites" label="Calcul du plancher et du plafond " template="pages:article.html.twig" output="normal">
<Panels>
<Panel id="1" name="panelResultatIndemnites" label="">
<FieldSet id="1">
<Field position="1" data="2" usage="output" newline="0" label="Ancienneté du salarié dans l'entreprise" required="0" visibleRequired="0" help="0"></Field>
<Field position="2" data="3" usage="output" newline="0" label="Ancienneté du salarié dans l'entreprise" required="0" visibleRequired="0" help="0"></Field>
<Field position="3" data="4" usage="output" newline="0" label="Type d'entreprise" required="0" visibleRequired="0" help="0"></Field>
<Field position="4" data="8" usage="output" newline="0" label="Indemnité minimale" required="0" visibleRequired="0" help="0" emphasize="1"></Field>
<Field position="5" data="9" usage="output" newline="0" label="Indemnité maximale" required="0" visibleRequired="0" help="0" emphasize="1"></Field>
</FieldSet>
</Panel>
</Panels>
<ActionList>
<Action name="btnPrecedent" label="Précédent" what="submit" for="priorStep" class="btn-default"></Action>
<Action name="reset" label="Nouvelle Simulation" what="submit" for="newSimulation" class="btn-primary"></Action>
</ActionList>
</Step>
</Steps>
<Sources>
<Source id="1" datasource="bareme-indemnites-prudhomales" label="Requête : Indemnités" request="SELECT indemnitemaximale, indemniteminimalemoinsde11, indemniteminimale11etplus FROM bareme WHERE ancienneteSalarie = %1$d AND ancienneteSalarie IS NOT NULL AND ancienneteSalarie &gt; -1" returnType="assocArray" returnPath="0">
<Parameter type="columnValue" origin="data" name="inputNbrAncienneteSalarie" data="1"></Parameter>
</Source>
</Sources>
<BusinessRules>
<BusinessRule id="1" name="R1" label="Contrôle ancienneté maximale">
<Conditions value="defined(#1) &amp;&amp; #1 &gt; 80">
<Connector type="all">
<Condition operand="inputNbrAnciennete" operator="present"></Condition>
<Condition operand="inputNbrAnciennete" operator="&gt;" expression="80"></Condition>
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="notifyError" target="data" data="1" value="Le nombre d'années d'ancienneté ne peut être supérieure à 80 "></Action>
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="2" name="R2" label="Demander Type d'entreprise si ancienneté &gt; 10 ans">
<Conditions value="!defined(#1) || (defined(#1) &amp;&amp; #1 &gt; 10)">
<Connector type="any">
<Condition operand="inputNbrAnciennete" operator="blank"></Condition>
<Connector type="all">
<Condition operand="inputNbrAnciennete" operator="present"></Condition>
<Condition operand="inputNbrAnciennete" operator="&gt;" expression="10"></Condition>
</Connector>
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="hideObject" target="field" step="1" panel="1" fieldset="1" field="2"></Action>
</IfActions>
<ElseActions>
<Action id="1" name="showObject" target="field" step="1" panel="1" fieldset="1" field="2"></Action>
</ElseActions>
</BusinessRule>
<BusinessRule id="3" name="R3" label="Indemnité minimale pour entreprises de moins de 11 salariés">
<Conditions value="defined(#1) &amp;&amp; defined(#4) &amp;&amp; #4 = 1">
<Connector type="all">
<Condition operand="inputNbrAnciennete" operator="present"></Condition>
<Condition operand="inputTypeEntreprise" operator="present"></Condition>
<Condition operand="inputTypeEntreprise" operator="=" expression="1"></Condition>
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="setAttribute" target="content" data="8" value="#5"></Action>
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="4" name="R4" label="Indemnité minimale pour entreprise de 11 salariés ou plus">
<Conditions value="defined(#1) &amp;&amp; defined(#4) &amp;&amp; #4 = 2">
<Connector type="all">
<Condition operand="inputNbrAnciennete" operator="present"></Condition>
<Condition operand="inputTypeEntreprise" operator="present"></Condition>
<Condition operand="inputTypeEntreprise" operator="=" expression="2"></Condition>
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="setAttribute" target="content" data="8" value="#7"></Action>
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="5" name="R5" label="Indemnité maximale">
<Conditions value="defined(#1) &amp;&amp; defined(#6)">
<Connector type="all">
<Condition operand="inputNbrAnciennete" operator="present"></Condition>
<Condition operand="indemniteMax" operator="present"></Condition>
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="setAttribute" target="content" data="9" value="#6"></Action>
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="6" name="R6" label="Choix affichage anncienneté">
<Conditions value="!defined(#1)">
<Condition operand="inputNbrAnciennete" operator="blank"></Condition>
</Conditions>
<IfActions>
<Action id="1" name="hideObject" target="field" step="2" panel="1" fieldset="1" field="1"></Action>
<Action id="2" name="hideObject" target="field" step="2" panel="1" fieldset="1" field="2"></Action>
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="7" name="R7" label="Choix affichage ancienneté (inférieur ou égal à 1 an)">
<Conditions value="defined(#1) &amp;&amp; #1 &lt;= 1">
<Connector type="all">
<Condition operand="inputNbrAnciennete" operator="present"></Condition>
<Condition operand="inputNbrAnciennete" operator="&lt;=" expression="1"></Condition>
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="hideObject" target="field" step="2" panel="1" fieldset="1" field="2"></Action>
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="8" name="R8" label="Choix affichage ancienneté (supérieur à 1 an)">
<Conditions value="defined(#1) &amp;&amp; #1 &gt; 1">
<Connector type="all">
<Condition operand="inputNbrAnciennete" operator="present"></Condition>
<Condition operand="inputNbrAnciennete" operator="&gt;" expression="1"></Condition>
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="hideObject" target="field" step="2" panel="1" fieldset="1" field="1"></Action>
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="9" name="R9" label="Cacher Type entreprise en étape 2">
<Conditions value="defined(#1) &amp;&amp; #1 &gt; 10">
<Connector type="all">
<Condition operand="inputNbrAnciennete" operator="present"></Condition>
<Condition operand="inputNbrAnciennete" operator="&gt;" expression="10"></Condition>
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="hideObject" target="field" step="2" panel="1" fieldset="1" field="3"></Action>
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="10" name="R10" label="Si ancienneté supérieure à 10 alors type entreprise pré-saisi ">
<Conditions value="defined(#1) &amp;&amp; #1 &gt; 10">
<Connector type="all">
<Condition operand="inputNbrAnciennete" operator="present"></Condition>
<Condition operand="inputNbrAnciennete" operator="&gt;" expression="10"></Condition>
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="setAttribute" target="content" data="4" value="2"></Action>
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
</BusinessRules>
</Simulator>
{
"bareme": [
{
"id": 1,
"ancienneteSalarie": 0,
"indemniteminimalemoinsde11": "0",
"indemniteminimale11etplus": "0",
"indemnitemaximale": "1"
},
{
"id": 2,
"ancienneteSalarie": 1,
"indemniteminimalemoinsde11": "0,5",
"indemniteminimale11etplus": "1",
"indemnitemaximale": "2"
},
{
"id": 3,
"ancienneteSalarie": 2,
"indemniteminimalemoinsde11": "0,5",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "3,5"
},
{
"id": 4,
"ancienneteSalarie": 3,
"indemniteminimalemoinsde11": "1",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "4"
},
{
"id": 5,
"ancienneteSalarie": 4,
"indemniteminimalemoinsde11": "1",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "5"
},
{
"id": 6,
"ancienneteSalarie": 5,
"indemniteminimalemoinsde11": "1,5",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "6"
},
{
"id": 7,
"ancienneteSalarie": 6,
"indemniteminimalemoinsde11": "1,5",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "7"
},
{
"id": 8,
"ancienneteSalarie": 7,
"indemniteminimalemoinsde11": "2",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "8"
},
{
"id": 9,
"ancienneteSalarie": 8,
"indemniteminimalemoinsde11": "2",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "8"
},
{
"id": 10,
"ancienneteSalarie": 9,
"indemniteminimalemoinsde11": "2,5",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "9"
},
{
"id": 11,
"ancienneteSalarie": 10,
"indemniteminimalemoinsde11": "2,5",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "10"
},
{
"id": 12,
"ancienneteSalarie": 11,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "10,5"
},
{
"id": 13,
"ancienneteSalarie": 12,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "11"
},
{
"id": 14,
"ancienneteSalarie": 13,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "11,5"
},
{
"id": 15,
"ancienneteSalarie": 14,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "12"
},
{
"id": 16,
"ancienneteSalarie": 15,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "13"
},
{
"id": 17,
"ancienneteSalarie": 16,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "13,5"
},
{
"id": 18,
"ancienneteSalarie": 17,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "14"
},
{
"id": 19,
"ancienneteSalarie": 18,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "14,5"
},
{
"id": 20,
"ancienneteSalarie": 19,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "15"
},
{
"id": 21,
"ancienneteSalarie": 20,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "15,5"
},
{
"id": 22,
"ancienneteSalarie": 21,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "16"
},
{
"id": 23,
"ancienneteSalarie": 22,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "16,5"
},
{
"id": 24,
"ancienneteSalarie": 23,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "17"
},
{
"id": 25,
"ancienneteSalarie": 24,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "17,5"
},
{
"id": 26,
"ancienneteSalarie": 25,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "18"
},
{
"id": 27,
"ancienneteSalarie": 26,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "18,5"
},
{
"id": 28,
"ancienneteSalarie": 27,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "19"
},
{
"id": 29,
"ancienneteSalarie": 28,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "19,5"
},
{
"id": 30,
"ancienneteSalarie": 29,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 31,
"ancienneteSalarie": 30,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 32,
"ancienneteSalarie": 31,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 33,
"ancienneteSalarie": 32,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 34,
"ancienneteSalarie": 33,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 35,
"ancienneteSalarie": 34,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 36,
"ancienneteSalarie": 35,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 37,
"ancienneteSalarie": 36,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 38,
"ancienneteSalarie": 37,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 39,
"ancienneteSalarie": 38,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 40,
"ancienneteSalarie": 39,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 41,
"ancienneteSalarie": 40,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 42,
"ancienneteSalarie": 41,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 43,
"ancienneteSalarie": 42,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 44,
"ancienneteSalarie": 43,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 45,
"ancienneteSalarie": 44,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 46,
"ancienneteSalarie": 45,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 47,
"ancienneteSalarie": 46,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 48,
"ancienneteSalarie": 47,
"indemniteminimalemoinsde11": "3",
"indemniteminimale11etplus": "3",
"indemnitemaximale": "20"
},
{
"id": 49,
"ancienneteSalarie": 48,
"indemniteminimalemoinsde11": "3",