diff --git a/source/components/rule/Algorithm.js b/source/components/rule/Algorithm.js index bdbc7ddb9..cd5575171 100644 --- a/source/components/rule/Algorithm.js +++ b/source/components/rule/Algorithm.js @@ -8,18 +8,20 @@ import './Algorithm.css' import { ShowValuesProvider } from './ShowValuesContext' let Conditions = ({ + 'rendu non applicable': disabledBy, parentDependency, 'applicable si': applicable, 'non applicable si': notApplicable }) => { let listElements = [ parentDependency?.nodeValue === false && ( -
  • - - Désactivée - {' '} - car dépend de {makeJsx(parentDependency)} -
  • + + ), + ...disabledBy?.explanation?.isDisabledBy?.map( + (dependency, i) => + dependency?.nodeValue === true && ( + + ) ), applicable &&
  • {makeJsx(applicable)}
  • , notApplicable &&
  • {makeJsx(notApplicable)}
  • @@ -35,6 +37,17 @@ let Conditions = ({ ) : null } +function ShowIfDisabled({ dependency }) { + return ( +
  • + + Désactivée + {' '} + car dépend de {makeJsx(dependency)} +
  • + ) +} + export default compose(withTranslation())( class Algorithm extends React.Component { render() { diff --git a/source/components/rule/Rule.js b/source/components/rule/Rule.js index 1118f206f..ba689b0af 100644 --- a/source/components/rule/Rule.js +++ b/source/components/rule/Rule.js @@ -1,4 +1,5 @@ import { T } from 'Components' +import PeriodSwitch from 'Components/PeriodSwitch' import withColours from 'Components/utils/withColours' import withLanguage from 'Components/utils/withLanguage' import withSitePaths from 'Components/utils/withSitePaths' @@ -31,7 +32,6 @@ import Examples from './Examples' import RuleHeader from './Header' import References from './References' import './Rule.css' -import PeriodSwitch from 'Components/PeriodSwitch' let LazySource = React.lazy(() => import('./RuleSource')) @@ -166,7 +166,9 @@ export default compose( /> {displayedRule['rend non applicable'] && (
    -

    Rend non applicable :

    +

    + Rend non applicable les règles suivantes :{' '} +

      {displayedRule['rend non applicable'].map(ruleName => (
    • diff --git a/source/engine/known-mecanisms.yaml b/source/engine/known-mecanisms.yaml index 6b0976b77..4c56b2a36 100644 --- a/source/engine/known-mecanisms.yaml +++ b/source/engine/known-mecanisms.yaml @@ -117,7 +117,7 @@ rend non applicable: description: | Permet de désactiver l'application de certaines règles pour la situation saisie. - > Ce mécanisme est utile pour encoder les régimes d'exceptions (par exemple le [régime des impatriés]()) sans avoir à modifier la définition des règles de base. + > Ce mécanisme est utile pour encoder les régimes d'exceptions (par exemple le [régime des impatriés](/documentation/contrat-salarié/régime-des-impatriés)) sans avoir à modifier la définition des règles de base. barème: type: numeric diff --git a/source/engine/parseRule.js b/source/engine/parseRule.js index edb2e2903..9fb7fec9c 100644 --- a/source/engine/parseRule.js +++ b/source/engine/parseRule.js @@ -1,3 +1,4 @@ +import { T } from 'Components' import { ShowValuesConsumer } from 'Components/rule/ShowValuesContext' import RuleLink from 'Components/RuleLink' import evaluate from 'Engine/evaluateRule' @@ -130,12 +131,12 @@ export default (rules, rule, parsedRules) => { parsedRules[rule.dottedName]['rendu non applicable'] = { evaluate: (cache, situation, parsedRules, node) => { - const nodeValue = node.explanation.isDisabledBy - .map(disablerNode => - evaluateNode(cache, situation, parsedRules, disablerNode) - ) - .some(x => x.nodeValue === true) - return rewriteNode(node, nodeValue, node.explanation, {}) + const isDisabledBy = node.explanation.isDisabledBy.map(disablerNode => + evaluateNode(cache, situation, parsedRules, disablerNode) + ) + const nodeValue = isDisabledBy.some(x => x.nodeValue === true) + const explanation = { ...node.explanation, isDisabledBy } + return { ...node, explanation, nodeValue } }, jsx: (nodeValue, { isDisabledBy }) => { return ( @@ -143,12 +144,12 @@ export default (rules, rule, parsedRules) => { <>

      Exception{isDisabledBy.length > 1 && 's'}

      - Cette règle ne s'applique pas pour :{' '} + Cette règle ne s'applique pas pour :{' '} {isDisabledBy.map((rule, i) => ( - <> + {i > 0 && ', '} - + ))}

      diff --git a/source/locales/en.yaml b/source/locales/en.yaml index b9d3bd27b..ff8eb628f 100644 --- a/source/locales/en.yaml +++ b/source/locales/en.yaml @@ -764,6 +764,8 @@ Année d'activité: Years of activity Commerçant, artisan, ou libéral ?: Trader, craftsman, or liberal? Revenir à la documentation: Go back to documentation Voir le code source: See the source code +Rend non applicable les règles suivantes: Makes the following rules not applicable +Cette règle ne s'applique pas pour: This rule does not apply for pour les accidents de trajet/travail et maladie pro: for commuting accidents, work accidents and professional illness jour: day diff --git a/test/mécanismes/rend-non-applicable.yaml b/test/mécanismes/rend-non-applicable.yaml index 2e1ee62cb..5ec454856 100644 --- a/test/mécanismes/rend-non-applicable.yaml +++ b/test/mécanismes/rend-non-applicable.yaml @@ -7,7 +7,7 @@ - nom: contribution formule: impôt - test: règle désactivé + test: règle désactivée exemples: - nom: evasion fiscale situation: