Titres restaurants: mise à jour feuille de paie + règle

pull/868/head
Loïc Guillois 2020-02-07 15:59:22 +01:00 committed by Maxime Quandalle
parent a3cfc56c41
commit e7475d626e
No known key found for this signature in database
GPG Key ID: 428641C03D29CA10
3 changed files with 162 additions and 127 deletions

View File

@ -66,13 +66,15 @@ contrat salarié . frais professionnels . titres-restaurant . part non exonéré
formule:
multiplication:
facteur:
encadrement:
valeur: taux participation employeur * valeur - participation employeur . plafond
plancher: 0
allègement:
assiette: taux participation employeur * montant unitaire
abattement: participation employeur . plafond
assiette: titres-restaurant par mois
contrat salarié . frais professionnels . titres-restaurant . participation employeur . plafond:
formule: 5.36
formule: 5.55
références:
urssaf.fr: https://www.urssaf.fr/portail/home/taux-et-baremes/frais-professionnels/les-titres-restaurant.html
contrat salarié . frais professionnels . titres-restaurant . participation employeur:
formule:
@ -80,19 +82,20 @@ contrat salarié . frais professionnels . titres-restaurant . participation empl
facteur: titres-restaurant par mois
assiette:
encadrement:
valeur: taux participation employeur * valeur
valeur: taux participation employeur * montant unitaire
plafond: plafond
contrat salarié . frais professionnels . titres-restaurant . participation salarié:
formule: valeur * titres-restaurant par mois - participation employeur
titre: Titres-restaurant
formule: montant unitaire * titres-restaurant par mois - participation employeur
contrat salarié . frais professionnels . titres-restaurant . titres-restaurant par mois:
question: Combien de titres-restaurant recevez-vous par mois ?
par défaut: 19
unité: titres-restaurant/mois
contrat salarié . frais professionnels . titres-restaurant . valeur:
question: Quelle est la valeur du titre-restaurant ?
contrat salarié . frais professionnels . titres-restaurant . montant unitaire:
question: Quelle est le montant du titre-restaurant ?
par défaut: 8
unité: €/titre-restaurant
@ -1281,7 +1284,6 @@ contrat salarié . rémunération . net imposable:
somme:
- frais professionnels . indemnité kilométrique vélo
- (- frais professionnels . titres-restaurant . participation employeur)
- frais professionnels . titres-restaurant . participation salarié
- prime d'impatriation
- exonération d'impôt des stagiaires et apprentis
- heures supplémentaires et complémentaires défiscalisées
@ -1335,7 +1337,7 @@ contrat salarié . rémunération . net:
Aussi appelé salaire net à payer (c'était du moins le cas avant l'impôt à la source).
Cette somme peut varier en fonction de décisions politiques (augmentation ou diminution des cotisations) alors que le salaire brut est contractuel (pour le changer, il faut signer un avenant au contrat).
formule: rémunération . net de cotisations - avantages en nature . montant
formule: rémunération . net de cotisations - avantages en nature . montant - frais professionnels . titres-restaurant . participation salarié
contrat salarié . rémunération . net après impôt:
titre: Salaire net après impôt

View File

@ -4,26 +4,33 @@ import { findRuleByDottedName, getRuleFromAnalysis } from 'Engine/rules'
import React, { Fragment, useContext } from 'react'
import { Trans } from 'react-i18next'
import { useSelector } from 'react-redux'
import { analysisWithDefaultsSelector, parsedRulesSelector } from 'Selectors/analyseSelectors'
import {
analysisWithDefaultsSelector,
parsedRulesSelector
} from 'Selectors/analyseSelectors'
import { analysisToCotisationsSelector } from 'Selectors/ficheDePaieSelectors'
import './PaySlip.css'
import { Line, SalaireBrutSection, SalaireNetSection } from './PaySlipSections'
import RuleLink from './RuleLink'
export default function PaySlip() {
const { lightestColor } = useContext(ThemeColorsContext)
const cotisations = useSelector(analysisToCotisationsSelector)
const analysis = useSelector(analysisWithDefaultsSelector)
const parsedRules = useSelector(parsedRulesSelector)
let getRule = getRuleFromAnalysis(analysis)
const { lightestColor } = useContext(ThemeColorsContext)
const cotisations = useSelector(analysisToCotisationsSelector)
const analysis = useSelector(analysisWithDefaultsSelector)
const parsedRules = useSelector(parsedRulesSelector)
let getRule = getRuleFromAnalysis(analysis)
const heuresSupplémentaires = getRule(
'contrat salarié . temps de travail . heures supplémentaires'
)
return (
<div
className="payslip__container"
css={`
const heuresSupplémentaires = getRule(
'contrat salarié . temps de travail . heures supplémentaires'
)
const retenueTitresRestaurant = getRule(
'contrat salarié . frais professionnels . titres-restaurant . participation salarié'
)
console.log(retenueTitresRestaurant)
return (
<div
className="payslip__container"
css={`
.value {
display: flex;
align-items: flex-end;
@ -31,91 +38,115 @@ export default function PaySlip() {
padding-right: 0.2em;
}
`}
>
<div className="payslip__salarySection">
<Line
rule={getRule('contrat salarié . temps de travail')}
unit="heures/mois"
maximumFractionDigits={1}
/>
{heuresSupplémentaires?.nodeValue > 0 && (
<Line
rule={heuresSupplémentaires}
unit="heures/mois"
maximumFractionDigits={1}
/>
)}
</div>
>
<div className="payslip__salarySection">
<Line
rule={getRule('contrat salarié . temps de travail')}
unit="heures/mois"
maximumFractionDigits={1}
/>
{heuresSupplémentaires?.nodeValue > 0 && (
<Line
rule={heuresSupplémentaires}
unit="heures/mois"
maximumFractionDigits={1}
/>
)}
</div>
<SalaireBrutSection getRule={getRule} />
{/* Section cotisations */}
<div className="payslip__cotisationsSection">
<h4>
<Trans>Cotisations sociales</Trans>
</h4>
<h4>
<Trans>Part employeur</Trans>
</h4>
<h4>
<Trans>Part salarié</Trans>
</h4>
{cotisations.map(([brancheDottedName, cotisationList]) => {
let branche = findRuleByDottedName(parsedRules, brancheDottedName)
return (
<Fragment key={branche.dottedName}>
<h5 className="payslip__cotisationTitle">
<RuleLink {...branche} />
</h5>
{cotisationList.map(cotisation => (
<Fragment key={cotisation.dottedName}>
<RuleLink
style={{ backgroundColor: lightestColor }}
{...cotisation}
/>
<Value
nilValueSymbol="—"
unit="€"
customCSS="background-color: var(--lightestColor)"
>
{cotisation.montant.partPatronale}
</Value>
<Value
nilValueSymbol="—"
unit="€"
customCSS="background-color: var(--lightestColor)"
>
{cotisation.montant.partSalariale}
</Value>
</Fragment>
))}
</Fragment>
)
})}
<SalaireBrutSection getRule={getRule} />
{/* Section cotisations */}
<div className="payslip__cotisationsSection">
<h4>
<Trans>Cotisations sociales</Trans>
</h4>
<h4>
<Trans>Part employeur</Trans>
</h4>
<h4>
<Trans>Part salarié</Trans>
</h4>
{cotisations.map(([brancheDottedName, cotisationList]) => {
let branche = findRuleByDottedName(parsedRules, brancheDottedName)
return (
<Fragment key={branche.dottedName}>
<h5 className="payslip__cotisationTitle">
<RuleLink {...branche} />
</h5>
{cotisationList.map(cotisation => (
<Fragment key={cotisation.dottedName}>
<RuleLink
style={{ backgroundColor: lightestColor }}
{...cotisation}
/>
<Value
nilValueSymbol="—"
unit="€"
customCSS="background-color: var(--lightestColor)"
>
{cotisation.montant.partPatronale}
</Value>
<Value
nilValueSymbol="—"
unit="€"
customCSS="background-color: var(--lightestColor)"
>
{cotisation.montant.partSalariale}
</Value>
</Fragment>
))}
</Fragment>
)
})}
{/* Total cotisation */}
<div className="payslip__total">
<Trans>Total des retenues</Trans>
</div>
<Value
nilValueSymbol="—"
{...getRule('contrat salarié . cotisations . patronales')}
unit="€"
className="payslip__total"
/>
<Value
nilValueSymbol="—"
{...getRule('contrat salarié . cotisations . salariales')}
unit="€"
className="payslip__total"
/>
{/* Salaire chargé */}
<Line rule={getRule('contrat salarié . rémunération . total')} />
<span />
{/* Titres-restaurant */}
<Line rule={getRule('contrat salarié . frais professionnels . titres-restaurant . participation salarié')} />
</div>
{/* Section salaire net */}
<SalaireNetSection getRule={getRule} />
</div>
)
{/* Titres-restaurant */}
{retenueTitresRestaurant.nodeValue > 0 && (
<Fragment>
<RuleLink
style={{ backgroundColor: lightestColor }}
{...retenueTitresRestaurant}
/>
<Value
nilValueSymbol="—"
unit="€"
customCSS="background-color: var(--lightestColor)"
>
{0}
</Value>
<Value
nilValueSymbol="—"
unit="€"
customCSS="background-color: var(--lightestColor)"
>
{retenueTitresRestaurant.nodeValue}
</Value>
</Fragment>
)}
{/*<Line rule={retenueTitresRestaurant} />*/}
{/* Total cotisation */}
<div className="payslip__total">
<Trans>Total des retenues</Trans>
</div>
<Value
nilValueSymbol="—"
{...getRule('contrat salarié . cotisations . patronales')}
unit="€"
className="payslip__total"
/>
<Value
nilValueSymbol="—"
{...getRule('contrat salarié . cotisations . salariales')}
unit="€"
className="payslip__total"
/>
{/* Salaire chargé */}
<Line rule={getRule('contrat salarié . rémunération . total')} />
<span />
</div>
{/* Section salaire net */}
<SalaireNetSection getRule={getRule} />
</div>
)
}

View File

@ -328,7 +328,7 @@ contrat salarié . CDD . contrat jeune vacances:
description.fr: >-
Aussi appelé CDD vendanges. Contrat conclu avec un jeune pendant ses
vacances scolaires ou universitaires.
note.en: "[automatic] That's not a reason for a fixed-term contract."
note.en: '[automatic] That''s not a reason for a fixed-term contract.'
note.fr: Ce n'est pas un motif de CDD.
question.en: Is it a young holiday contract?
question.fr: Est-ce un contrat jeune vacances ?
@ -706,7 +706,7 @@ contrat salarié . aides employeur:
France. Découvrez-les sur le [portail
officiel](http://www.aides-entreprises.fr).
résumé.en: Deferred aids available to the employer.
résumé.fr: "Pour l'employeur, différées dans le temps"
résumé.fr: 'Pour l''employeur, différées dans le temps'
titre.en: deferred employer aids
titre.fr: aides à l'embauche
contrat salarié . aides employeur . aide à l'embauche d'apprentis:
@ -798,7 +798,7 @@ contrat salarié . apprentissage . diplôme préparé . niveau supérieur au bac
titre.fr: Diplôme d'un niveau supérieur au bac
contrat salarié . assiette CSG et CRDS:
note.en: '[automatic] This plate is complex, this version is only a simplification.'
note.fr: "Cette assiette est complexe, cette version n'est qu'une simplification."
note.fr: 'Cette assiette est complexe, cette version n''est qu''une simplification.'
titre.en: CSG and CRDS base
titre.fr: assiette CSG et CRDS
contrat salarié . assiette CSG et CRDS . assiette abattue:
@ -993,12 +993,12 @@ contrat salarié . convention collective:
Néanmoins, cela permet d'obtenir une première estimation, plus précise
que le régime général.
question.en: 'Which "convention collective" is applicable to the company ? [beta] '
question.fr: "Quelle convention collective est applicable à l'entreprise ? [beta] "
question.fr: 'Quelle convention collective est applicable à l''entreprise ? [beta] '
titre.en: convention collective
titre.fr: convention collective
contrat salarié . convention collective . HCR:
description.en: 'The company is a hotel, café, restaurant or similar.'
description.fr: "L'entreprise est un hôtel, café, restaurant ou assimilé."
description.fr: 'L''entreprise est un hôtel, café, restaurant ou assimilé.'
titre.en: 'hotels, cafés restaurants HCR (beta)'
titre.fr: 'hôtels, cafés restaurants HCR (beta)'
contrat salarié . convention collective . HCR . majoration heures supplémentaires:
@ -1513,6 +1513,11 @@ contrat salarié . frais professionnels . titres-restaurant:
question.fr: Le salarié reçoit-il des titres-restaurant ?
titre.en: '[automatic] restaurant vouchers'
titre.fr: titres-restaurant
contrat salarié . frais professionnels . titres-restaurant . montant unitaire:
question.en: '[automatic] How much is the restaurant voucher?'
question.fr: Quelle est le montant du titre-restaurant ?
titre.en: '[automatic] unitary amount'
titre.fr: montant unitaire
contrat salarié . frais professionnels . titres-restaurant . part non exonérée de cotisation:
titre.en: '[automatic] non-exempt portion'
titre.fr: part non exonérée de cotisation
@ -1523,10 +1528,12 @@ contrat salarié . frais professionnels . titres-restaurant . participation empl
titre.en: '[automatic] ceiling'
titre.fr: plafond
contrat salarié . frais professionnels . titres-restaurant . participation salarié:
titre.en: '[automatic] employee participation'
titre.fr: participation salarié
titre.en: '[automatic] Restaurant vouchers'
titre.fr: Titres-restaurant
contrat salarié . frais professionnels . titres-restaurant . taux participation employeur:
contrôles.0.en: '[automatic] The Employer-paid portion of the meal voucher must be at least 50%.'
contrôles.0.en: >-
[automatic] The Employer-paid portion of the meal voucher must be at least
50%.
contrôles.0.fr: La part employeur du titre-restaurant doit être de 50% au minimum
contrôles.1.en: >-
[automatic] Employer-paid portion of the meal voucher must be a maximum of
@ -1538,7 +1545,7 @@ contrat salarié . frais professionnels . titres-restaurant . taux participation
description.fr: >-
Part du titre-restaurant payée par l'employeur. Doit être de 50% minimum et
de 60% maximum
question.en: "[automatic] What is the employer's paid portion?"
question.en: '[automatic] What is the employer''s paid portion?'
question.fr: Quelle est la participation de l'employeur ?
suggestions.50%.en: '[automatic] 50%'
suggestions.50%.fr: 50%
@ -1551,11 +1558,6 @@ contrat salarié . frais professionnels . titres-restaurant . titres-restaurant
question.fr: Combien de titres-restaurant recevez-vous par mois ?
titre.en: '[automatic] meal vouchers per month'
titre.fr: titres-restaurant par mois
contrat salarié . frais professionnels . titres-restaurant . valeur:
question.en: '[automatic] What is the value of the restaurant voucher?'
question.fr: Quelle est la valeur du titre-restaurant ?
titre.en: '[automatic] value'
titre.fr: valeur
contrat salarié . indemnités salarié:
titre.en: Employee benefits
titre.fr: indemnités salarié
@ -1952,7 +1954,7 @@ contrat salarié . réduction générale . assiette:
titre.fr: Assiette de la réduction générale
contrat salarié . réduction générale . assiette . part de la cotisation ATMP:
note.en: '[automatic] In practice, the ATMP is always higher than 0.78%.'
note.fr: "En pratique, l'ATMP est toujours supérieure à 0.78%"
note.fr: 'En pratique, l''ATMP est toujours supérieure à 0.78%'
titre.en: share of ATMP contribution
titre.fr: part de la cotisation ATMP
contrat salarié . réduction générale . multiplicateur:
@ -3691,7 +3693,7 @@ dirigeant . rattachement CIPAV:
note.en: >-
[automatic] for the time being, we have only retained the CIPAV for the
calculations.
note.fr: "pour l'instant, nous n'avons retenu que la CIPAV pour les calculs"
note.fr: 'pour l''instant, nous n''avons retenu que la CIPAV pour les calculs'
titre.en: CIPAV attachment
titre.fr: rattachement CIPAV
dirigeant . rattachement CIPAV . retraite complémentaire:
@ -4021,7 +4023,7 @@ entreprise . catégorie d'activité . restauration ou hébergement:
titre.fr: restauration ou hébergement
entreprise . catégorie d'activité . service ou vente:
question.en: 'Is it a service activity, or the purchase and sale of goods?'
question.fr: "Est-ce une activité de prestation de service, ou de l'achat-vente de biens ?"
question.fr: 'Est-ce une activité de prestation de service, ou de l''achat-vente de biens ?'
titre.en: service or sale
titre.fr: service ou vente
entreprise . catégorie d'activité . service ou vente . service:
@ -4140,7 +4142,7 @@ entreprise . chiffre d'affaires minimum:
titre.en: Minimum turnover
titre.fr: chiffre d'affaires minimum
entreprise . date de création:
contrôles.0.en: "[automatic] We can't see that far into the future"
contrôles.0.en: '[automatic] We can''t see that far into the future'
contrôles.0.fr: Nous ne pouvons voir aussi loin dans le futur
contrôles.1.en: >-
[automatic] This is a very old company! Are you sure you didn't make a
@ -4357,7 +4359,7 @@ entreprise . établissement bancaire:
L'entreprise est un établissement bancaire, financier ou d'assurance. Elle
est non assujettie à la TVA.
question.en: 'Is it a banking, financial or insurance institution?'
question.fr: "S'agit-il d'un établissement bancaire, financier, d'assurance ?"
question.fr: 'S''agit-il d''un établissement bancaire, financier, d''assurance ?'
titre.en: banking institution
titre.fr: établissement bancaire
impôt: