diff --git a/source/components/simulationConfigs/assimilé.yaml b/source/components/simulationConfigs/assimilé.yaml index 7cb0622a0..50bb36b3f 100644 --- a/source/components/simulationConfigs/assimilé.yaml +++ b/source/components/simulationConfigs/assimilé.yaml @@ -14,7 +14,7 @@ objectifs: - entreprise . chiffre d'affaires minimum objectifs secondaires: - - contrat salarié . temps de travail + - contrat salarié . cotisations questions: à l'affiche: diff --git a/source/components/simulationConfigs/salarié.yaml b/source/components/simulationConfigs/salarié.yaml index 35aa549ac..7b6cb3ee0 100644 --- a/source/components/simulationConfigs/salarié.yaml +++ b/source/components/simulationConfigs/salarié.yaml @@ -8,6 +8,7 @@ objectifs: objectifs secondaires: - contrat salarié . temps de travail + - contrat salarié . cotisations questions: à l'affiche: diff --git a/source/engine/mecanismViews/Somme.css b/source/engine/mecanismViews/Somme.css index b5ee73115..b10a4bb2f 100644 --- a/source/engine/mecanismViews/Somme.css +++ b/source/engine/mecanismViews/Somme.css @@ -132,7 +132,7 @@ } /* Nested Mecanism */ -.nested .mecanism-somme__row { +.mecanism-somme__row + .nested { padding-left: 2em; border-top: 1px dashed rgba(51, 51, 80, 0.15); } diff --git a/source/engine/mecanismViews/Somme.js b/source/engine/mecanismViews/Somme.js index 3b2321fc4..821158786 100644 --- a/source/engine/mecanismViews/Somme.js +++ b/source/engine/mecanismViews/Somme.js @@ -34,7 +34,7 @@ function Row({ v, i, unit }) { return [
setFolded(!folded)}>
diff --git a/source/règles/base.yaml b/source/règles/base.yaml index 54f80a24d..b51ef7046 100644 --- a/source/règles/base.yaml +++ b/source/règles/base.yaml @@ -739,7 +739,6 @@ - temps de travail . temps partiel - temps de travail . heures supplémentaires - statut JEI - - régime des impatriés - 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 @@ -1322,14 +1321,15 @@ C'est la base utilisée pour calculer l'impôt sur le revenu. période: flexible formule: - allègement: - assiette: base - abattement: - somme: - - indemnité kilométrique vélo - - prime d'impatriation - - exonération d'impôt des stagiaires et apprentis - - heures supplémentaires défiscalisées + somme: + - rémunération . net de cotisations + - avantages sociaux + - CSG [non déductible] + - CRDS + - (- indemnité kilométrique vélo) + - (- prime d'impatriation) + - (- exonération d'impôt des stagiaires et apprentis) + - (- heures supplémentaires défiscalisées) références: DSN: https://dsn-info.custhelp.com/app/answers/detail/a_id/2110 @@ -1352,16 +1352,6 @@ références: DSN: https://dsn-info.custhelp.com/app/answers/detail/a_id/2110 -- espace: contrat salarié . rémunération . net imposable - nom: base - période: flexible - formule: - somme: - - rémunération . net de cotisations - - avantages sociaux - - CSG [non déductible] - - CRDS - - espace: contrat salarié nom: prime d'impatriation description: La prime d'impatriation est une partie de la rémunération exonérée d'impôt sur le revenu. @@ -1370,7 +1360,7 @@ unité: € formule: multiplication: - assiette: rémunération . net imposable . base + assiette: rémunération . net taux: 30% références: Article 155B du Code général des impôts: https://www.legifrance.gouv.fr/affichCodeArticle.do?cidTexte=LEGITEXT000006069577&idArticle=LEGIARTI000006307476&dateTexte=&categorieLien=cid diff --git a/source/selectors/ficheDePaieSelectors.js b/source/selectors/ficheDePaieSelectors.js index 803657e49..5dfc2165b 100644 --- a/source/selectors/ficheDePaieSelectors.js +++ b/source/selectors/ficheDePaieSelectors.js @@ -17,17 +17,6 @@ import { import { createSelector } from 'reselect' import { analysisWithDefaultsSelector } from 'Selectors/analyseSelectors' -import type { Analysis } from 'Types/Analysis' -import type { - VariableWithCotisation, - Cotisation, - Cotisations, - Branche, - FicheDePaie -} from 'Types/ResultViewTypes' - -import type { Règle } from 'Types/RegleTypes' - // These functions help build the payslip. They take the cotisations from the cache, braving all the particularities of the current engine's implementation, handles the part patronale and part salariale, and gives a map by branch. export const COTISATION_BRANCHE_ORDER: Array = [ @@ -85,31 +74,17 @@ export const mergeCotisations: ( ) const variableToCotisation = (variable: VariableWithCotisation): Cotisation => { - let displayedVariable = variable - if ( - // Following : weird logic to automatically handle negative negated value in sum - // $FlowFixMe - variable.operationType === 'calculation' && - // $FlowFixMe - variable.operator === '−' && - variable.explanation[0].nodeValue === 0 - ) { - displayedVariable = variable.explanation[1] - console.log(displayedVariable, brancheSelector(displayedVariable)) - } return mergeCotisations(BLANK_COTISATION, { - ...displayedVariable.explanation, - branche: brancheSelector(displayedVariable), + ...variable.explanation, + branche: brancheSelector(variable), montant: { - [duParSelector(displayedVariable) === 'salarié' + [duParSelector(variable) === 'salarié' ? 'partSalariale' : 'partPatronale']: variable.nodeValue } }) } -const groupByBranche = flatRules => ( - cotisations: Array -): Cotisations => { +const groupByBranche = (cotisations: Array): Cotisations => { const cotisationsMap = cotisations.reduce( (acc, cotisation) => ({ ...acc, @@ -133,6 +108,15 @@ export let analysisToCotisations = analysis => { .reduce(concat, []) const cotisations = pipe( + map(rule => + // Following : weird logic to automatically handle negative negated value in sum + + rule.operationType === 'calculation' && + rule.operator === '−' && + rule.explanation[0].nodeValue === 0 + ? { ...rule.explanation[1], nodeValue: rule.nodeValue } + : rule + ), groupBy(prop('dottedName')), values, map( @@ -146,7 +130,7 @@ export let analysisToCotisations = analysis => { cotisation.montant.partPatronale !== 0 || cotisation.montant.partSalariale !== 0 ), - groupByBranche(analysis), + groupByBranche, filter(([, brancheCotisation]) => !!brancheCotisation) )(variables) return cotisations