🐛 corrige le montant de la CSG dans l'aide aux indépendants
note : il faudra songer sérieusement à modifier ce mécanisme de composante, source de nombreux bug (cf #874) Ajoute des tests de non regressions pour la page d'aidepull/1051/head
parent
872f966f2b
commit
f3c9d7c60d
|
@ -1,5 +1,65 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: ACRE 1`] = `"[50000,3366,9163,8,12630,37370]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: ACRE 2`] = `"[15000,1139,900,8,2141,12859]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: ACRE 3`] = `"[5000,386,295,8,782,4218]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: ACRE 4`] = `"[10000,630,2202,8,2934,7066]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: IJSS (indemnité sécurité sociale) 1`] = `"[50000,3024,11424,8,14549,35451]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: RSA 1`] = `"[500,25,82,8,209,291]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: RSA 2`] = `"[5000,312,1021,8,1435,3565]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: conjoint collaborateur 1`] = `"[50000,3175,14066,11,17378,32622]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: conjoint collaborateur 2`] = `"[50000,3175,13590,11,16903,33097]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: conjoint collaborateur 3`] = `"[50000,3175,11476,11,14788,35212]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: conjoint collaborateur 4`] = `"[50000,3176,14071,10,17364,32636]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: conjoint collaborateur 5`] = `"[50000,3175,11476,11,14788,35212]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: débit de tabac 1`] = `"[50000,3177,5672,8,8950,41050]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: international 1`] = `"[50000,0,14610,8,14711,35289]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: international 2`] = `"[50000,1267,11893,8,13261,36739]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: nature de l'activité 1`] = `"[50000,3176,11380,10,14673,35327]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: nature de l'activité 2`] = `"[5000,311,1353,10,1781,3219]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: nature de l'activité 3`] = `"[50000,3177,11384,8,14662,35338]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: nature de l'activité 4`] = `"[5000,312,1354,8,1767,3233]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: nature de l'activité 5`] = `"[50000,3177,11201,8,14480,35520]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: nature de l'activité 6`] = `"[5000,312,1189,8,1603,3397]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: nature de l'activité 7`] = `"[50000,3177,9270,8,12548,37452]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: échelle de revenus 1`] = `"[500,25,1026,8,1152,0]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: échelle de revenus 2`] = `"[1000,57,1026,8,1184,0]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: échelle de revenus 3`] = `"[1500,89,1052,8,1242,258]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: échelle de revenus 4`] = `"[2000,121,1095,8,1317,683]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: échelle de revenus 5`] = `"[5000,312,1354,8,1767,3233]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: échelle de revenus 6`] = `"[10000,630,2202,8,2934,7066]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: échelle de revenus 7`] = `"[100000,6361,20834,8,27296,72704]"`;
|
||||
|
||||
exports[`calculate aide-déclaration-indépendant: échelle de revenus 8`] = `"[1000000,63664,106148,8,169913,830087]"`;
|
||||
|
||||
exports[`calculate simulations-artiste-auteur: bnc 1`] = `"[1230]"`;
|
||||
|
||||
exports[`calculate simulations-artiste-auteur: bnc 2`] = `"[1863]"`;
|
||||
|
|
|
@ -0,0 +1,80 @@
|
|||
échelle de revenus:
|
||||
- dirigeant . rémunération totale: 500 €/an
|
||||
- dirigeant . rémunération totale: 1000 €/an
|
||||
- dirigeant . rémunération totale: 1500 €/an
|
||||
- dirigeant . rémunération totale: 2000 €/an
|
||||
- dirigeant . rémunération totale: 5000 €/an
|
||||
- dirigeant . rémunération totale: 10000 €/an
|
||||
- dirigeant . rémunération totale: 100000 €/an
|
||||
- dirigeant . rémunération totale: 1000000 €/an
|
||||
|
||||
nature de l'activité:
|
||||
- aide déclaration revenu indépendant 2019 . nature de l'activité: "'artisanale'"
|
||||
dirigeant . rémunération totale: 50000 €/an
|
||||
- aide déclaration revenu indépendant 2019 . nature de l'activité: "'artisanale'"
|
||||
dirigeant . rémunération totale: 5000 €/an
|
||||
- aide déclaration revenu indépendant 2019 . nature de l'activité: "'commerciale ou industrielle'"
|
||||
dirigeant . rémunération totale: 50000 €/an
|
||||
- aide déclaration revenu indépendant 2019 . nature de l'activité: "'commerciale ou industrielle'"
|
||||
dirigeant . rémunération totale: 5000 €/an
|
||||
- aide déclaration revenu indépendant 2019 . nature de l'activité: "'libérale'"
|
||||
dirigeant . rémunération totale: 50000 €/an
|
||||
- aide déclaration revenu indépendant 2019 . nature de l'activité: "'libérale'"
|
||||
dirigeant . rémunération totale: 5000 €/an
|
||||
- aide déclaration revenu indépendant 2019 . nature de l'activité: "'libérale'"
|
||||
entreprise . date de création: 06/04/2019
|
||||
dirigeant . rémunération totale: 50000 €/an
|
||||
dirigeant . indépendant . cotisations et contributions . cotisations . retraite complémentaire . taux spécifique PLNR: oui
|
||||
|
||||
débit de tabac:
|
||||
- aide déclaration revenu indépendant 2019 . nature de l'activité: "'commerciale ou industrielle'"
|
||||
dirigeant . rémunération totale: 50000 €/an
|
||||
entreprise . catégorie d'activité . débit de tabac: oui
|
||||
dirigeant . indépendant . cotisations et contributions . cotisations . déduction tabac: 30000 €/an
|
||||
|
||||
RSA:
|
||||
- situation personnelle . RSA: oui
|
||||
dirigeant . rémunération totale: 500 €/an
|
||||
- situation personnelle . RSA: oui
|
||||
dirigeant . rémunération totale: 5000 €/an
|
||||
|
||||
conjoint collaborateur:
|
||||
- dirigeant . indépendant . conjoint collaborateur: oui
|
||||
dirigeant . rémunération totale: 50000 €/an
|
||||
- dirigeant . indépendant . conjoint collaborateur: oui
|
||||
dirigeant . indépendant . conjoint collaborateur . assiette: "'revenu sans partage'"
|
||||
dirigeant . rémunération totale: 50000 €/an
|
||||
- dirigeant . indépendant . conjoint collaborateur: oui
|
||||
dirigeant . indépendant . conjoint collaborateur . assiette: "'revenu avec partage'"
|
||||
dirigeant . rémunération totale: 50000 €/an
|
||||
- dirigeant . indépendant . conjoint collaborateur: oui
|
||||
aide déclaration revenu indépendant 2019 . nature de l'activité: "'artisanale'"
|
||||
dirigeant . rémunération totale: 50000 €/an
|
||||
- dirigeant . indépendant . conjoint collaborateur: oui
|
||||
dirigeant . indépendant . conjoint collaborateur . assiette: "'revenu avec partage'"
|
||||
dirigeant . rémunération totale: 50000 €/an
|
||||
dirigeant . indépendant . conjoint collaborateur . assiette . pourcentage: "'moitié'"
|
||||
|
||||
IJSS (indemnité sécurité sociale):
|
||||
- dirigeant . indépendant . IJSS: oui
|
||||
dirigeant . indépendant . IJSS . total: 10000 €/an
|
||||
dirigeant . indépendant . IJSS . imposable: 8000 €/an
|
||||
dirigeant . rémunération totale: 50000 €/an
|
||||
|
||||
ACRE:
|
||||
- entreprise . ACRE: oui
|
||||
dirigeant . rémunération totale: 50000 €/an
|
||||
- entreprise . ACRE: oui
|
||||
dirigeant . rémunération totale: 15000 €/an
|
||||
- entreprise . ACRE: oui
|
||||
dirigeant . rémunération totale: 5000 €/an
|
||||
- entreprise . ACRE: oui
|
||||
entreprise . date de création: 01/07/2018
|
||||
dirigeant . rémunération totale: 10000 €/an
|
||||
|
||||
international:
|
||||
- situation personnelle . domiciliation fiscale à l'étranger: oui
|
||||
dirigeant . rémunération totale: 50000 €/an
|
||||
- dirigeant . indépendant . revenus étrangers: oui
|
||||
dirigeant . indépendant . revenus étrangers . montant: 30000€/an
|
||||
dirigeant . rémunération totale: 50000 €/an
|
|
@ -13,11 +13,13 @@ import autoentrepreneurConfig from '../../source/components/simulationConfigs/au
|
|||
import independantConfig from '../../source/components/simulationConfigs/indépendant.yaml'
|
||||
import remunerationDirigeantConfig from '../../source/components/simulationConfigs/rémunération-dirigeant.yaml'
|
||||
import employeeConfig from '../../source/components/simulationConfigs/salarié.yaml'
|
||||
import aideDéclarationConfig from '../../source/sites/mon-entreprise.fr/pages/Gérer/AideDéclarationIndépendant/config.yaml'
|
||||
import artisteAuteurSituations from './simulations-artiste-auteur.yaml'
|
||||
import autoEntrepreneurSituations from './simulations-auto-entrepreneur.yaml'
|
||||
import independentSituations from './simulations-indépendant.yaml'
|
||||
import remunerationDirigeantSituations from './simulations-rémunération-dirigeant.yaml'
|
||||
import employeeSituations from './simulations-salarié.yaml'
|
||||
import aideDéclarationIndépendantsSituations from './aide-déclaration-indépendants.yaml'
|
||||
|
||||
const roundResult = arr => arr.map(x => Math.round(x))
|
||||
const engine = new Engine(rules)
|
||||
|
@ -100,3 +102,11 @@ it('calculate simulations-artiste-auteur', () => {
|
|||
artisteAuteurConfig.situation
|
||||
)
|
||||
})
|
||||
|
||||
it('calculate aide-déclaration-indépendant', () => {
|
||||
runSimulations(
|
||||
aideDéclarationIndépendantsSituations,
|
||||
aideDéclarationConfig.objectifs,
|
||||
aideDéclarationConfig.situation
|
||||
)
|
||||
})
|
||||
|
|
|
@ -6,7 +6,8 @@ import {
|
|||
keys,
|
||||
map,
|
||||
mergeWith,
|
||||
reduce
|
||||
reduce,
|
||||
dissoc
|
||||
} from 'ramda'
|
||||
import React from 'react'
|
||||
import { typeWarning } from './error'
|
||||
|
@ -114,10 +115,15 @@ export const evaluateArrayWithFilter = (evaluationFilter, reducer, start) => (
|
|||
parsedRules,
|
||||
node
|
||||
) => {
|
||||
return evaluateArray(reducer, start)(cache, situation, parsedRules, {
|
||||
...node,
|
||||
explanation: filter(evaluationFilter(situation), node.explanation)
|
||||
})
|
||||
return evaluateArray(reducer, start)(
|
||||
cache,
|
||||
dissoc('_meta.filter', situation),
|
||||
parsedRules,
|
||||
{
|
||||
...node,
|
||||
explanation: filter(evaluationFilter(situation), node.explanation)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
export const defaultNode = (nodeValue: EvaluatedNode['nodeValue']) => ({
|
||||
|
|
|
@ -16,14 +16,14 @@ export let decompose = (recurse, k, v) => {
|
|||
}))
|
||||
|
||||
let filter = situation => c =>
|
||||
!situation['sys.filter'] ||
|
||||
!situation['_meta.filter'] ||
|
||||
!c.composante ||
|
||||
((!c.composante['dû par'] ||
|
||||
!['employeur', 'salarié'].includes(situation['sys.filter']) ||
|
||||
c.composante['dû par'] == situation['sys.filter']) &&
|
||||
!['employeur', 'salarié'].includes(situation['_meta.filter']) ||
|
||||
c.composante['dû par'] == situation['_meta.filter']) &&
|
||||
(!c.composante['impôt sur le revenu'] ||
|
||||
!['déductible', 'non déductible'].includes(situation['sys.filter']) ||
|
||||
c.composante['impôt sur le revenu'] == situation['sys.filter']))
|
||||
!['déductible', 'non déductible'].includes(situation['_meta.filter']) ||
|
||||
c.composante['impôt sur le revenu'] == situation['_meta.filter']))
|
||||
|
||||
return {
|
||||
explanation,
|
||||
|
|
|
@ -123,10 +123,10 @@ let evaluateReference = (filter, contextRuleName) => (
|
|||
if (applicableReplacements.length) {
|
||||
if (applicableReplacements.length > 1) {
|
||||
console.warn(`
|
||||
Règle ${rule.dottedName}: plusieurs remplacements valides ont été trouvés :
|
||||
\n\t${applicableReplacements.map(node => node.rawNode).join('\n\t')}
|
||||
Règle ${rule.dottedName}: plusieurs remplacements valides ont été trouvés :
|
||||
\n\t${applicableReplacements.map(node => node.rawNode).join('\n\t')}
|
||||
|
||||
Par défaut, seul le premier s'applique. Si vous voulez un autre comportement, vous pouvez :
|
||||
Par défaut, seul le premier s'applique. Si vous voulez un autre comportement, vous pouvez :
|
||||
- Restreindre son applicabilité via "applicable si" sur la règle de définition
|
||||
- Restreindre sa portée en ajoutant une liste blanche (via le mot clé "dans") ou une liste noire (via le mot clé "sauf dans")
|
||||
`)
|
||||
|
@ -252,14 +252,14 @@ export let parseReference = (
|
|||
// See the unité-temporelle.yaml test suite for details
|
||||
// - filters on the variable to select one part of the variable's 'composantes'
|
||||
|
||||
const evaluateTransforms = (originalEval, rule, parseResult) => (
|
||||
const evaluateTransforms = (originalEval, _, parseResult) => (
|
||||
cache,
|
||||
situation,
|
||||
parsedRules,
|
||||
node
|
||||
) => {
|
||||
// Filter transformation
|
||||
let filteringSituation = { ...situation, 'sys.filter': parseResult.filter }
|
||||
let filteringSituation = { ...situation, '_meta.filter': parseResult.filter }
|
||||
let filteredNode = originalEval(
|
||||
cache,
|
||||
parseResult.filter ? filteringSituation : situation,
|
||||
|
|
Loading…
Reference in New Issue