Commit 1ff1c615 authored by Bertrand Matge's avatar Bertrand Matge

Ajout d'un calculateur de prix après réduction

Ajout du ficher de définition du simulateur (CalculReduction.xml)
Ajout du fichier de style (CalculReduction.css)
Mise à jour du README.md
parent 320fded2
......@@ -2,7 +2,7 @@
Le site officiel de l'administration française service-public.fr référence une soixantaine 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é quatorze :
Parmi ces similateurs, la DILA en a développé quinze :
* [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)
......@@ -18,6 +18,7 @@ Parmi ces similateurs, la DILA en a développé quatorze :
* [Simulateur des indemnités en cas de licenciement abusif](https://www.service-public.fr/simulateur/calcul/bareme-indemnites-prudhomales)
* [Simulateur des frais de mise en location imputables au locataire](https://www.service-public.fr/simulateur/calcul/frais-locataire)
* [Simulateur : connaître la zone de sa commune : Abis, A, B1, B2 ou C](https://www.service-public.fr/simulateur/calcul/zonage-abc)
* [Simulateur : calculer un prix après réduction](https://www.service-public.fr/simulateur/calcul/CalculReduction)
## 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.
......@@ -162,6 +163,12 @@ La zone détermine :
* Source de données : zonage-commune.json
* Schéma de la source de données : zonage-commune.schema.json
## Simulateur : calculer un prix après réduction
Ce simulateur permet de calculer le prix après l'application d'un taux de réduction (soldes, promotion, remise, rabais, ristourne...).
**Fichiers utilisés :**
* Règles de calcul : CalculReduction.xml
# Simulateurs de la DILA sur boamp.fr
La DILA a développé 3 simulateurs BOAMP à l¹attention des acheteurs publics et des entreprises titulaires d'un marché public :
......@@ -280,7 +287,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. La DILA l'utilise pour quatorze simulateurs en ligne sur ses sites.
* La simulation en ligne. La DILA l'utilise pour quinze 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="CalculReduction" label="Calculer un prix après réduction" defaultView="particuliers" referer="" dynamic="0" memo="0">
<Description><![CDATA[
<blockquote>Ce simulateur permet de calculer le prix après l'application d'un taux de réduction (soldes, promotion, remise, rabais, ristourne...).</blockquote>
]]></Description>
<DataSet dateFormat="d/m/Y" decimalPoint="," moneySymbol="€" symbolPosition="after">
<Data id="1" name="PrixOrigine" label="Prix avant réduction" type="money" min="0.01" />
<Data id="2" name="TauxReduction" label="Taux de réduction" type="percent" min="0.01" max="100" />
<Data id="3" name="ValeurReduction" label="Montant de la réduction" type="money" />
<Data id="4" name="PrixReduit" label="Prix après réduction" type="money" />
<Data id="5" name="prixapresreduction2" label="Prix aprés réduction 2" type="money" />
<Data id="6" name="TauxReduction2" label="2e taux de réduction" type="percent" min="0.01" max="100" />
<DataGroup id="1" name="Cumul" label="">
<Data id="7" name="ValeurReduction2" label="Montant de la 2e réduction" type="money" />
<Data id="8" name="ValeurReductionTotale" label="Montant total des réductions" type="money" />
<Data id="9" name="PrixFinal" label="Prix final" type="money" />
</DataGroup>
<Data id="10" name="Question_2e_Taux" label="2e taux de réduction ?" type="choice">
<Choices>
<Choice id="1" value="Oui" label="Oui" />
<Choice id="2" value="Non" label="Non" />
</Choices>
</Data>
</DataSet>
<Steps>
<Step id="1" name="CalculPrixReduit" label="Calcul du prix réduit" template="pages:article.html.twig" output="normal" dynamic="1">
<Panels>
<Panel id="1" name="Calcul" label="Calcul de réduction">
<FieldSet id="1">
<Field position="1" data="1" usage="input" newline="0" label="Indiquez ici votre prix d'origine" required="1" visibleRequired="0" colon="0" help="0">
<PreNote><![CDATA[
]]></PreNote>
</Field>
<Field position="2" data="2" usage="input" newline="0" label="Indiquez le taux de réduction à appliquer" required="1" visibleRequired="0" colon="0" help="0">
<PreNote><![CDATA[
]]></PreNote>
</Field>
</FieldSet>
<FieldSet id="2">
<Field position="1" data="3" usage="output" newline="0" label="Montant de la réduction obtenue" required="0" visibleRequired="0" colon="0" help="0" emphasize="1">
<PreNote><![CDATA[
]]></PreNote>
</Field>
<Field position="2" data="4" usage="output" newline="0" label="Prix après réduction" required="0" visibleRequired="0" colon="0" help="0" emphasize="1">
<PreNote><![CDATA[
]]></PreNote>
</Field>
<Field position="3" data="5" usage="output" newline="0" label="Prix après réduction" required="0" visibleRequired="0" colon="0" help="0" emphasize="1">
<PreNote><![CDATA[
]]></PreNote>
</Field>
</FieldSet>
<FieldSet id="3">
<Field position="1" data="10" usage="input" newline="0" label="Bénéficiez-vous d'une seconde réduction ?" required="0" visibleRequired="0" colon="0" help="0" expanded="1">
<PreNote><![CDATA[
]]></PreNote>
</Field>
</FieldSet>
<FieldSet id="4">
<Field position="1" data="6" usage="input" newline="0" label="Indiquez le 2e taux de réduction" required="0" visibleRequired="0" colon="0" help="0">
<PreNote><![CDATA[
]]></PreNote>
</Field>
</FieldSet>
<FieldSet id="5">
<Field position="1" data="7" usage="output" newline="0" label="Montant de la 2e réduction" required="0" visibleRequired="0" colon="0" help="0">
<PreNote><![CDATA[
]]></PreNote>
</Field>
<Field position="2" data="8" usage="output" newline="0" label="Montant total des réductions" required="0" visibleRequired="0" colon="0" help="0" emphasize="1">
<PreNote><![CDATA[
]]></PreNote>
</Field>
<Field position="3" data="9" usage="output" newline="0" label="Prix final" required="0" visibleRequired="0" colon="0" help="0" emphasize="1">
<PreNote><![CDATA[
]]></PreNote>
</Field>
</FieldSet>
<BlockInfo id="6" name="Merci" label="">
<Chapter id="1" name="Merci" label="">
<Section id="1" name="Merci" label="">
<Content><![CDATA[
<blockquote><b>Merci d'avoir utilisé ce simulateur.</b>
</blockquote>
]]></Content>
</Section>
</Chapter>
</BlockInfo>
</Panel>
</Panels>
<ActionList>
<Action name="Nouvelle_simulation" label="Nouvelle simulation" what="reset" for="newSimulation" />
</ActionList>
</Step>
</Steps>
<BusinessRules>
<BusinessRule id="1" name="R1" label="warning +">
<Conditions value="#2 > 100">
<Condition operand="TauxReduction" operator=">" expression="100" />
</Conditions>
<IfActions>
<Action id="1" name="notifyWarning" target="data" data="2" value="Attention, le taux ne doit pas être supérieur à 100%" />
<Action id="2" name="hideObject" target="fieldset" step="1" panel="1" fieldset="2" />
</IfActions>
<ElseActions>
<Action id="1" name="showObject" target="fieldset" step="1" panel="1" fieldset="2" />
</ElseActions>
</BusinessRule>
<BusinessRule id="2" name="R2" label="warning -">
<Conditions value="#2 &lt; 0">
<Condition operand="TauxReduction" operator="&lt;" expression="0" />
</Conditions>
<IfActions>
<Action id="1" name="notifyError" target="data" data="2" value="Attention, le taux ne peut pas être négatif" />
<Action id="2" name="hideObject" target="fieldset" step="1" panel="1" fieldset="2" />
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="3" name="R3" label="Calcul Remise">
<Conditions value="defined(#1) &amp;&amp; defined(#2) &amp;&amp; #2 > 0 &amp;&amp; #2 &lt;= 100">
<Connector type="all">
<Condition operand="PrixOrigine" operator="present" />
<Condition operand="TauxReduction" operator="present" />
<Condition operand="TauxReduction" operator=">" expression="0" />
<Condition operand="TauxReduction" operator="&lt;=" expression="100" />
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="setAttribute" target="content" data="3" value="#1 * (#2 / 100)" />
<Action id="2" name="showObject" target="fieldset" step="1" panel="1" fieldset="2" />
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="4" name="R4" label="Prix Réduit">
<Conditions value="defined(#3)">
<Condition operand="ValeurReduction" operator="present" />
</Conditions>
<IfActions>
<Action id="1" name="setAttribute" target="content" data="4" value="#1 - #3" />
<Action id="2" name="showObject" target="fieldset" step="1" panel="1" fieldset="3" />
<Action id="3" name="hideObject" target="action" step="1" action="Nouvelle_simulation" />
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="5" name="R5" label="Prix Réduit 2">
<Conditions value="defined(#3)">
<Condition operand="ValeurReduction" operator="present" />
</Conditions>
<IfActions>
<Action id="1" name="setAttribute" target="content" data="5" value="#1 - #3" />
<Action id="2" name="showObject" target="fieldset" step="1" panel="1" fieldset="3" />
<Action id="3" name="hideObject" target="action" step="1" action="Nouvelle_simulation" />
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="6" name="R6" label="warning_0">
<Conditions value="#2 = 0">
<Condition operand="TauxReduction" operator="=" expression="0" />
</Conditions>
<IfActions>
<Action id="1" name="notifyError" target="dataset" value="Le taux ne doit pas être nul" />
<Action id="2" name="hideObject" target="fieldset" step="1" panel="1" fieldset="2" />
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="7" name="R7" label="2e Réduction">
<Conditions value="#10 = 'Non'">
<Condition operand="Question_2e_Taux" operator="=" expression="Non" />
</Conditions>
<IfActions>
<Action id="1" name="showObject" target="action" step="1" action="Nouvelle_simulation" />
</IfActions>
<ElseActions>
<Action id="1" name="showObject" target="fieldset" step="1" panel="1" fieldset="4" />
</ElseActions>
</BusinessRule>
<BusinessRule id="8" name="R8" label="warning 2+">
<Conditions value="#6 > 100">
<Condition operand="TauxReduction2" operator=">" expression="100" />
</Conditions>
<IfActions>
<Action id="1" name="notifyWarning" target="data" data="6" value="Attention, le taux ne doit pas être supérieur à 100%" />
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="9" name="R9" label="warning 2-">
<Conditions value="#6 &lt; 0">
<Condition operand="TauxReduction2" operator="&lt;" expression="0" />
</Conditions>
<IfActions>
<Action id="1" name="notifyError" target="data" data="6" value="Attention, le taux ne peut pas être négatif" />
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="10" name="R10" label="Calcul Reduc 2 bis">
<Conditions value="defined(#7)">
<Connector type="all">
<Condition operand="ValeurReduction2" operator="present" />
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="setAttribute" target="content" data="8" value="#3 + #7" />
<Action id="2" name="setAttribute" target="content" data="9" value="#4 - #7" />
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="11" name="R11" label="Reduc 2">
<Conditions value="defined(#6)">
<Connector type="all">
<Condition operand="TauxReduction2" operator="present" />
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="setAttribute" target="content" data="7" value="#4 * (#6 / 100)" />
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="12" name="R12" label="Affichage départ">
<Conditions value="defined(#1) &amp;&amp; defined(#2) &amp;&amp; #2 > 0 &amp;&amp; #2 &lt;= 100">
<Connector type="all">
<Condition operand="PrixOrigine" operator="present" />
<Condition operand="TauxReduction" operator="present" />
<Condition operand="TauxReduction" operator=">" expression="0" />
<Condition operand="TauxReduction" operator="&lt;=" expression="100" />
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="showObject" target="fieldset" step="1" panel="1" fieldset="2" />
<Action id="2" name="showObject" target="fieldset" step="1" panel="1" fieldset="3" />
</IfActions>
<ElseActions>
<Action id="1" name="hideObject" target="fieldset" step="1" panel="1" fieldset="2" />
<Action id="2" name="hideObject" target="fieldset" step="1" panel="1" fieldset="3" />
</ElseActions>
</BusinessRule>
<BusinessRule id="13" name="R13" label="affiche 2e partie">
<Conditions value="defined(#1) &amp;&amp; defined(#2) &amp;&amp; defined(#10) &amp;&amp; #10 = 'Oui'">
<Connector type="all">
<Condition operand="PrixOrigine" operator="present" />
<Condition operand="TauxReduction" operator="present" />
<Condition operand="Question_2e_Taux" operator="present" />
<Condition operand="Question_2e_Taux" operator="=" expression="Oui" />
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="showObject" target="field" step="1" panel="1" fieldset="4" field="1" />
</IfActions>
<ElseActions>
<Action id="1" name="hideObject" target="field" step="1" panel="1" fieldset="4" field="1" />
</ElseActions>
</BusinessRule>
<BusinessRule id="14" name="R14" label="afficher 3eme partie">
<Conditions value="defined(#1) &amp;&amp; defined(#2) &amp;&amp; defined(#10) &amp;&amp; #10 = 'Oui' &amp;&amp; defined(#6) &amp;&amp; #6 >= 0 &amp;&amp; #6 &lt; 100">
<Connector type="all">
<Condition operand="PrixOrigine" operator="present" />
<Condition operand="TauxReduction" operator="present" />
<Condition operand="Question_2e_Taux" operator="present" />
<Condition operand="Question_2e_Taux" operator="=" expression="Oui" />
<Condition operand="TauxReduction2" operator="present" />
<Condition operand="TauxReduction2" operator=">=" expression="0" />
<Condition operand="TauxReduction2" operator="&lt;" expression="100" />
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="showObject" target="fieldset" step="1" panel="1" fieldset="5" />
</IfActions>
<ElseActions>
<Action id="1" name="hideObject" target="fieldset" step="1" panel="1" fieldset="5" />
</ElseActions>
</BusinessRule>
<BusinessRule id="15" name="R15" label="Affiche bouton">
<Conditions value="(defined(#1) &amp;&amp; defined(#2) &amp;&amp; defined(#10) &amp;&amp; #10 = 'Non') || (defined(#1) &amp;&amp; defined(#2) &amp;&amp; defined(#6) &amp;&amp; #10 = 'Oui' &amp;&amp; defined(#6) &amp;&amp; #6 >= 0 &amp;&amp; #6 &lt;= 100)">
<Connector type="any">
<Connector type="all">
<Condition operand="PrixOrigine" operator="present" />
<Condition operand="TauxReduction" operator="present" />
<Condition operand="Question_2e_Taux" operator="present" />
<Condition operand="Question_2e_Taux" operator="=" expression="Non" />
</Connector>
<Connector type="all">
<Condition operand="PrixOrigine" operator="present" />
<Condition operand="TauxReduction" operator="present" />
<Condition operand="TauxReduction2" operator="present" />
<Condition operand="Question_2e_Taux" operator="=" expression="Oui" />
<Condition operand="TauxReduction2" operator="present" />
<Condition operand="TauxReduction2" operator=">=" expression="0" />
<Condition operand="TauxReduction2" operator="&lt;=" expression="100" />
</Connector>
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="showObject" target="blockinfo" step="1" panel="1" blockinfo="6" />
<Action id="2" name="showObject" target="action" step="1" action="Nouvelle_simulation" />
</IfActions>
<ElseActions>
<Action id="1" name="hideObject" target="blockinfo" step="1" panel="1" blockinfo="6" />
<Action id="2" name="hideObject" target="action" step="1" action="Nouvelle_simulation" />
</ElseActions>
</BusinessRule>
<BusinessRule id="16" name="R16" label="afficher prixreductionBig et cacher small">
<Conditions value="defined(#1) &amp;&amp; defined(#2) &amp;&amp; (!defined(#10) || #10 = 'Non')">
<Connector type="all">
<Condition operand="PrixOrigine" operator="present" />
<Condition operand="TauxReduction" operator="present" />
<Connector type="any">
<Condition operand="Question_2e_Taux" operator="blank" />
<Condition operand="Question_2e_Taux" operator="=" expression="Non" />
</Connector>
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="showObject" target="field" step="1" panel="1" fieldset="2" field="2" />
<Action id="2" name="hideObject" target="field" step="1" panel="1" fieldset="2" field="3" />
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
<BusinessRule id="17" name="R17" label="afficher prix recduction small et cacher big">
<Conditions value="defined(#1) &amp;&amp; defined(#2) &amp;&amp; (defined(#10) &amp;&amp; #10 = 'Oui')">
<Connector type="all">
<Condition operand="PrixOrigine" operator="present" />
<Condition operand="TauxReduction" operator="present" />
<Connector type="all">
<Condition operand="Question_2e_Taux" operator="present" />
<Condition operand="Question_2e_Taux" operator="=" expression="Oui" />
</Connector>
</Connector>
</Conditions>
<IfActions>
<Action id="1" name="showObject" target="field" step="1" panel="1" fieldset="2" field="3" />
<Action id="2" name="hideObject" target="field" step="1" panel="1" fieldset="2" field="2" />
</IfActions>
<ElseActions>
</ElseActions>
</BusinessRule>
</BusinessRules>
</Simulator>
\ No newline at end of file
@import "common.css";
.step-page .section-content {
text-align: center;
background-color: #E6E0F8;
padding: .5em;
height: 5em;
width : auto;
position: relative;
}
.step-page .action_buttons button {
background-color: #A9BCF5;
display: inline-block;
margin: 10px;
font-size: 1.5em;
height: auto;
}
#PrixReduit-container, #PrixFinal-container{
background-color: #0b6ba8;
width: 370px;
position: relative;
left: 35%;
padding: 10px 0px 10px 5px;
color: #fff;
border-radius: 8px;
}
#prixapresreduction2-container {
background-color: #0b6ba8;
width: 320px;
position: relative;
left: 35%;
padding: 8px 0px 8px 4px;
color: #fff;
border-radius: 7px;
}
blockquote {
border-left: 0px solid #f2f2f2;
}
@media only screen and (max-width: 41.13em) {
blockquote {
padding: 0.75em 1.5em;
margin: 0 0 1.5em;
font-size: 14px;
border-left: 1px;
}
.form-horizontal .control-label {
text-align: left;
}
#PrixReduit-container, #PrixFinal-container{
background-color: #0b6ba8;
width: 260px;
position: relative;
left: 10%;
padding: 10px 0px 10px 5px;
color: #fff;
border-radius: 8px;
}
#prixapresreduction2-container {
background-color: #0b6ba8;
width: 250px;
position: relative;
left: 10%;
padding: 8px 0px 8px 4px;
color: #fff;
border-radius: 7px;
}
}
#prixapresreduction2-label, #prixapresreduction2, #prixapresreduction2-money-symbol{
color: #fff;
margin-left: 12px;
font-size: 14px;
}
#PrixReduit-label, #PrixReduit, #PrixReduit-money-symbol, #PrixFinal-label, #PrixFinal, #PrixFinal-money-symbol{
color: #fff;
margin-left: 14px;
font-size: 18px;
margin-top: 2px;
}
div.pre-note{
display: none;
}
div#PrixReduit-container, div#prixapresreduction2-container, div#PrixFinal-container{
display: hidden;
}
.simulator-breadcrumb {
display: none;
height: 0em;
}
div#PrixReduit-container > div.pre-note, div#PrixFinal-container > div.pre-note, div#prixapresreduction2-container > div.pre-note, div#TauxReduction-container > div.pre-not, div#ValeurReduction-container > div.pre-note, div#Question_2e_Taux-container > div.pre-note, div#TauxReduction2-container > div.pre-note, div#ValeurReduction2-container > div.pre-note {
display: none;
}
.step-page .blockinfo-chapters, .step-page .section-annotations {
margin-bottom: 0.1em;
}
.step-page fieldset, .step-page div.fieldset {
margin-top: 0;
margin-bottom: 0.1em;
}
.step-page .blockinfo-chapters, .step-page .section-annotations {
display: none;
}
.step-page .output {
margin-top: 3px;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment