🐛 corrige l'affichage de la fiche de paie

pull/686/head
Johan Girod 2019-09-19 14:18:07 +02:00
parent d1f9ef383b
commit d95a5b7a34
No known key found for this signature in database
GPG Key ID: 9E27B57DA2E8AE12
6 changed files with 28 additions and 53 deletions

View File

@ -14,7 +14,7 @@ objectifs:
- entreprise . chiffre d'affaires minimum
objectifs secondaires:
- contrat salarié . temps de travail
- contrat salarié . cotisations
questions:
à l'affiche:

View File

@ -8,6 +8,7 @@ objectifs:
objectifs secondaires:
- contrat salarié . temps de travail
- contrat salarié . cotisations
questions:
à l'affiche:

View File

@ -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);
}

View File

@ -34,7 +34,7 @@ function Row({ v, i, unit }) {
return [
<div
className="mecanism-somme__row"
key={v.name}
key={v.name || i}
// className={isSomme ? '' : 'noNest'}
onClick={() => setFolded(!folded)}>
<div className="element">

View File

@ -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

View File

@ -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<Branche> = [
@ -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<Cotisation>
): Cotisations => {
const groupByBranche = (cotisations: Array<Cotisation>): 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