Merge branch 'master' into bundlesize
commit
94847f2932
|
@ -54,6 +54,7 @@
|
|||
"react-router-dom": "^5.1.1",
|
||||
"react-spring": "=8.0.27",
|
||||
"react-syntax-highlighter": "^10.1.1",
|
||||
"react-to-print": "^2.5.1",
|
||||
"react-transition-group": "^2.2.1",
|
||||
"react-virtualized": "^9.20.0",
|
||||
"react-virtualized-select": "^3.1.3",
|
||||
|
|
|
@ -6,6 +6,7 @@ import artisteAuteur from './rules/artiste-auteur.yaml'
|
|||
import base from './rules/base.yaml'
|
||||
import conventionsCollectives from './rules/conventions-collectives.yaml'
|
||||
import dirigeant from './rules/dirigeant.yaml'
|
||||
import déclarationIndépendant from './rules/déclaration-revenu-indépendant.yaml'
|
||||
import entrepriseEtablissement from './rules/entreprise-établissement.yaml'
|
||||
import impot from './rules/impôt.yaml'
|
||||
import protectionSociale from './rules/protection-sociale.yaml'
|
||||
|
@ -17,6 +18,7 @@ const rules = {
|
|||
// TODO: rule order shouldn't matter but there is a bug if "impot" is after
|
||||
// "dirigeant".
|
||||
...impot,
|
||||
...déclarationIndépendant,
|
||||
...artisteAuteur,
|
||||
...dirigeant,
|
||||
...entrepriseEtablissement,
|
||||
|
|
|
@ -366,7 +366,6 @@ dirigeant . rémunération totale:
|
|||
somme:
|
||||
- indépendant . revenu net de cotisations
|
||||
- indépendant . cotisations et contributions
|
||||
- (- situation personnelle . IJSS . total)
|
||||
- si: auto-entrepreneur
|
||||
alors:
|
||||
inversion numérique:
|
||||
|
@ -418,11 +417,7 @@ dirigeant . indépendant . cotisations et contributions . exonérations . ACRE .
|
|||
plafond: 100%
|
||||
|
||||
dirigeant . indépendant . revenu net de cotisations:
|
||||
formule:
|
||||
somme:
|
||||
- revenu professionnel
|
||||
- situation personnelle . IJSS . défiscalisées
|
||||
- (- cotisations et contributions . CSG et CRDS .non déductible)
|
||||
formule: revenu professionnel - cotisations et contributions . CSG et CRDS .non déductible
|
||||
résumé: Avant déduction de l'impôt sur le revenu
|
||||
question: Quel revenu avant impôt voulez-vous toucher ?
|
||||
description: Il s'agit du revenu net de cotisations et de charges, avant le paiement de l'impôt sur le revenu.
|
||||
|
@ -438,6 +433,7 @@ dirigeant . indépendant . revenu professionnel:
|
|||
- revenu net après impôt
|
||||
- entreprise . chiffre d'affaires
|
||||
- entreprise . chiffre d'affaires minimum
|
||||
valeurs négatives possibles: oui
|
||||
|
||||
dirigeant . indépendant . assiette des cotisations:
|
||||
unité par défaut: €/an
|
||||
|
@ -889,7 +885,7 @@ dirigeant . indépendant . cotisations et contributions . cotisations . retraite
|
|||
- entreprise . catégorie d'activité = 'libérale'
|
||||
- rattachement CIPAV = non
|
||||
titre: taux spécifique profession libérale non reglementée
|
||||
question: Avez-vous opté pour des taux spécifique de cotisation retraite complémentaire ?
|
||||
question: Avez-vous opté pour des taux spécifiques de cotisation retraite complémentaire ?
|
||||
description: |
|
||||
Les professions libérales non règlementées qui ont débuté leur activité à compter du 1er janvier 2019 ou ceux qui ont débuté leur activité avant la date du 1er janvier 2019 et ont opté pour le régime général des travailleurs indépendants ont la possibilité d’opter pour des taux spécifique de la cotisation retraite complémentaire.
|
||||
références:
|
||||
|
@ -958,12 +954,12 @@ dirigeant . indépendant . cotisations et contributions . CSG et CRDS:
|
|||
- attributs:
|
||||
nom: revenus de remplacement
|
||||
impôt sur le revenu: non déductible
|
||||
assiette: situation personnelle . IJSS . total
|
||||
assiette: dirigeant . indépendant . IJSS . total
|
||||
taux: 2.9%
|
||||
- attributs:
|
||||
nom: revenus de remplacement
|
||||
impôt sur le revenu: déductible
|
||||
assiette: situation personnelle . IJSS . total
|
||||
assiette: dirigeant . indépendant . IJSS . total
|
||||
taux: 3.8%
|
||||
|
||||
références:
|
||||
|
@ -987,13 +983,20 @@ dirigeant . indépendant . revenus étrangers . montant:
|
|||
par défaut: 0
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . CSG et CRDS . assiette:
|
||||
note: >-
|
||||
Seule la partie imposable des IJSS est retranchée de l'assiette de la CSG,
|
||||
puisque la partie non imposable a déjà été retranchée du revenu net fiscal fourni
|
||||
formule:
|
||||
somme:
|
||||
- revenu professionnel
|
||||
- cotisations
|
||||
- conjoint collaborateur . cotisations
|
||||
- (- revenus étrangers . montant)
|
||||
- (- situation personnelle . IJSS . fiscalisées)
|
||||
allègement:
|
||||
assiette:
|
||||
somme:
|
||||
- revenu professionnel
|
||||
- cotisations
|
||||
- conjoint collaborateur . cotisations
|
||||
abattement:
|
||||
somme:
|
||||
- revenus étrangers . montant
|
||||
- dirigeant . indépendant . IJSS . imposable
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . formation professionnelle:
|
||||
formule:
|
||||
|
@ -1044,7 +1047,7 @@ dirigeant . indépendant . cotisations et contributions . exonérations . ZFU:
|
|||
plafond:
|
||||
recalcul:
|
||||
avec:
|
||||
indépendant . revenu net de cotisations: 3042 heures/an * SMIC horaire
|
||||
dirigeant . indépendant . revenu professionnel: 3042 heures/an * SMIC horaire
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . exonérations . âge:
|
||||
question: Bénéficiez-vous du dispositif d'exonération "âge"
|
||||
|
@ -1054,7 +1057,7 @@ dirigeant . indépendant . cotisations et contributions . exonérations . âge:
|
|||
rend non applicable: cotisations . invalidité et décès
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . exonérations . invalidité:
|
||||
question: Êtes-vous titulaire d’une pension d’invalidité du régime des travailleurs indépendants ?
|
||||
question: Êtes-vous titulaire d’une pension d’invalidité à titre de travailleur indépendant ?
|
||||
description: Les personnes titulaires d’une pension d’invalidité versée par un régime des travailleurs non-salariés non agricoles bénéficient d’une exonération totale des cotisations maladie et retraite complémentaire.
|
||||
par défaut: non
|
||||
rend non applicable:
|
||||
|
@ -1111,3 +1114,64 @@ dirigeant . indépendant . cotisations et contributions . cotisations . maladie
|
|||
multiplication:
|
||||
assiette: maladie . assiette
|
||||
taux: 14.5%
|
||||
|
||||
dirigeant . indépendant . IJSS:
|
||||
titre: indemnités journalières de sécurité sociale
|
||||
description: >-
|
||||
En cas de maladie, maternité, ou accident, le régime général de Sécurité
|
||||
sociale ainsi que les régimes spéciaux assurent le versement de prestations
|
||||
« en espèces ».
|
||||
|
||||
Ce sont les indemnités journalières de Sécurité sociale (IJSS).
|
||||
|
||||
Les indemnités complémentaires aux indemnités journalières de la Sécurité
|
||||
sociale versées dans le cadre d’un contrat de prévoyance ne constituent pas
|
||||
des revenus de remplacement.
|
||||
|
||||
Note: Les prestations d’invalidité versées par les régimes
|
||||
d’invalidité-décès ne sont pas concernées
|
||||
|
||||
question: Avez-vous perçu des indemnités journalières de maladie, maternité ou paternité au titre de votre activité indépendante ?
|
||||
par défaut: non
|
||||
|
||||
dirigeant . indépendant . IJSS . total:
|
||||
titre: indemnités journalières
|
||||
question: >-
|
||||
Quel est le montant total brut de toutes vos indemnités journalières ?
|
||||
description: >-
|
||||
Indiquez uniquement le montant brut de vos revenus de remplacement,
|
||||
imposables et non imposables qui figure sur le relevé de prestations fourni
|
||||
pas votre caisse d'assurance maladie.
|
||||
|
||||
> Les revenus de remplacement sont : l'allocation forfaitaire de repos
|
||||
maternel, l'indemnité journalière forfaitaire d'interruption d'activité,
|
||||
l'indemnité de remplacement pour maternité, paternité ou adoption et
|
||||
l'indemnité journalière maladie.
|
||||
par défaut: 0
|
||||
unité: €/an
|
||||
|
||||
dirigeant . indépendant . IJSS . imposable:
|
||||
titre: indemnités journalières imposable
|
||||
résumé: Uniquement si vous ne relevez pas du régime micro-fiscal
|
||||
question: Quel est le montant brut des indemnités journalières imposables perçues?
|
||||
description: >-
|
||||
Indiquez uniquement les revenus de remplacement imposables perçus, donc tous
|
||||
les revenus de remplacement perçus **sauf les indemnités journalières en
|
||||
lien avec une Affection de Longue Durée (ALD)**.
|
||||
|
||||
|
||||
Ces revenus seront déduits de votre assiette des contributions, afin de ne
|
||||
pas être soumis deux fois à la CSG-CRDS :
|
||||
|
||||
- Les revenus de remplacement qui ont été précomptés de la CSG-CRDS doivent
|
||||
être indiqués pour leur montant net de la part de CSG déductible.
|
||||
|
||||
- Les revenus de remplacement qui n’ont pas été précomptés de la CSG-CRDS
|
||||
doivent être indiqués pour leur montant brut tel que perçu.
|
||||
|
||||
> Les revenus de remplacement sont : l'allocation forfaitaire de repos
|
||||
maternel, l'indemnité journalière forfaitaire d'interruption d'activité,
|
||||
l’indemnité de remplacement pour maternité, paternité ou adoption et
|
||||
l'indemnité journalière maladie.
|
||||
par défaut: 0
|
||||
unité: €/an
|
||||
|
|
|
@ -0,0 +1,117 @@
|
|||
# AIDE A LA DECLARATION DES INDEPENDANTS
|
||||
|
||||
aide déclaration revenu indépendant 2019:
|
||||
description: >-
|
||||
Ces règles calculent les montants demandés dans les déclarations sociale et
|
||||
fiscale des indépendants de 2020 sur les revenus 2019
|
||||
formule: non
|
||||
|
||||
aide déclaration revenu indépendant 2019 . nature de l'activité:
|
||||
remplace: entreprise . catégorie d'activité
|
||||
question: Quelle est la nature de votre activité ?
|
||||
par défaut: commerciale ou industrielle
|
||||
formule:
|
||||
une possibilité:
|
||||
choix obligatoire: oui
|
||||
possibilités:
|
||||
- artisanale
|
||||
- commerciale ou industrielle
|
||||
- libérale
|
||||
références:
|
||||
Vérifier la nature de son activité: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/verifier-nature-son-activite
|
||||
Comment déterminer la nature de l'activité d'une entreprise ?: https://www.service-public.fr/professionnels-entreprises/vosdroits/F32887
|
||||
|
||||
aide déclaration revenu indépendant 2019 . nature de l'activité . libérale:
|
||||
remplace:
|
||||
- règle: dirigeant . rattachement CIPAV
|
||||
par: non
|
||||
- entreprise . catégorie d'activité . libérale
|
||||
titre: Libérale rattachée au régime général
|
||||
description: |
|
||||
Ce sont les professions "intellectuelles", qui ne sont rattachée à aucune
|
||||
caisse spécifique de retraite.
|
||||
|
||||
C'est le cas de toutes les professions libérale non reglementée depuis le
|
||||
1er janvier 2019.
|
||||
|
||||
références:
|
||||
fiche Wikipedia: https://fr.m.wikipedia.org/wiki/Profession_libérale
|
||||
|
||||
aide déclaration revenu indépendant 2019 . nature de l'activité . commerciale ou industrielle:
|
||||
remplace: entreprise . catégorie d'activité . commerciale ou industrielle
|
||||
description: |
|
||||
### Activité commerciale
|
||||
- Achats de biens pour leur revente en l'état (commerce en gros ou de détail)
|
||||
- Vente de prestations de services commerciales (location de matériel, transport, agence immobilière, hôtellerie-restauration, entreprise de spectacles, activité de sécurité privée, location, etc.)
|
||||
|
||||
### Activité industrielle
|
||||
|
||||
Activité de production ou de transformation grâce à l'utilisation d'outils industriels, extraction, industries minières, manutention, magasinage et stockage
|
||||
|
||||
aide déclaration revenu indépendant 2019 . nature de l'activité . artisanale:
|
||||
remplace: entreprise . catégorie d'activité . artisanale
|
||||
description: |
|
||||
C'est une activité de service, de production, de transformation, ou de réparation exercée par un professionnel qualifié, et qui nécessite des compétences et un savoir-faire spécifiques.
|
||||
|
||||
> Par exemple : les travaux, les activités liées au bâtiment, la réparation de produits fournis par le client, les coiffeurs...
|
||||
|
||||
- L'entreprise ne doit pas employer plus de 10 salariés (l'activité devient commerciale au-delà)
|
||||
- Les activités artisanales sont répertoriées par un décret
|
||||
références:
|
||||
liste des activités artisanales: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/activites-artisanales-0<Paste>
|
||||
|
||||
aide déclaration revenu indépendant 2019 . plafond sécurité sociale 2019:
|
||||
remplace: plafond sécurité sociale temps plein
|
||||
formule: 3377 €/mois
|
||||
|
||||
aide déclaration revenu indépendant 2019 . SMIC 2019:
|
||||
remplace: SMIC horaire
|
||||
formule: 10.03 €/heure
|
||||
|
||||
aide déclaration revenu indépendant 2019 . revenu net fiscal:
|
||||
titre: revenu net fiscal
|
||||
résumé: avant déduction des charges sociales et exonérations fiscales [A]
|
||||
unité par défaut: €/an
|
||||
formule: dirigeant . rémunération totale
|
||||
|
||||
aide déclaration revenu indépendant 2019 . CSG déductible:
|
||||
titre: CSG déductible
|
||||
résumé: '[B]'
|
||||
formule: dirigeant . indépendant . cotisations et contributions . CSG et CRDS .déductible
|
||||
|
||||
aide déclaration revenu indépendant 2019 . cotisations sociales déductible:
|
||||
titre: cotisations sociales obligatoires déductibles
|
||||
résumé: '[C]'
|
||||
description: >-
|
||||
Montant à reporter dans la case XI de votre déclaration sociale et rubrique
|
||||
326 du formulaire 2033-D-SD (pour le réel simplifié) ou rubrique A5 du
|
||||
formulaire 2053-SD (pour le réel normal) de votre déclaration fiscale.
|
||||
formule:
|
||||
somme:
|
||||
- dirigeant . indépendant . cotisations et contributions . cotisations
|
||||
- dirigeant . indépendant . conjoint collaborateur . cotisations
|
||||
- (- dirigeant . indépendant . cotisations et contributions . exonérations)
|
||||
aide déclaration revenu indépendant 2019 . CFP:
|
||||
résumé: contribution à la formation professionnelle [D]
|
||||
formule: dirigeant . indépendant . cotisations et contributions . formation professionnelle
|
||||
|
||||
aide déclaration revenu indépendant 2019 . total charges sociales déductible:
|
||||
titre: total charges sociales obligatoires déductibles fiscalement
|
||||
résumé: '[B + C + D]'
|
||||
formule:
|
||||
somme:
|
||||
- CSG déductible
|
||||
- CFP
|
||||
- cotisations sociales déductible
|
||||
description: >-
|
||||
Montant à reporter dans la rubrique 252 du formulaire 2033-B-SD (pour le
|
||||
réel simplifié) ou en rubrique FZ du formulaire 2052-SD (pour le réel
|
||||
normal) de votre déclaration fiscale.
|
||||
|
||||
aide déclaration revenu indépendant 2019 . assiette sociale:
|
||||
titre: assiette sociale
|
||||
résumé: 'pour information [A - (B + C + D)]'
|
||||
formule:
|
||||
allègement:
|
||||
assiette: revenu net fiscal
|
||||
abattement: total charges sociales déductible
|
|
@ -3,7 +3,7 @@ entreprise:
|
|||
Le contrat lie une entreprise, identifiée par un code SIREN, et un employé.
|
||||
|
||||
entreprise . date de création:
|
||||
question: Quelle est la date de début d'activité ?
|
||||
question: Quelle est votre date de début d'activité ?
|
||||
par défaut: 01/01/2020
|
||||
description: |
|
||||
La date de début d'activité (ou date de création) est fixée lors de la
|
||||
|
@ -282,16 +282,17 @@ entreprise . taxe sur les salaires:
|
|||
abattement: abattement associations
|
||||
|
||||
entreprise . catégorie d'activité:
|
||||
question: Quelle est votre catégorie d'activité ?
|
||||
titre: nature de l'activité
|
||||
question: Quelle est la nature de votre activité ?
|
||||
description: Votre catégorie d'activité va déterminer une grande partie des calculs de cotisation, contribution et impôt.
|
||||
par défaut: commerciale ou industrielle
|
||||
formule:
|
||||
une possibilité:
|
||||
choix obligatoire: oui
|
||||
possibilités:
|
||||
- libérale
|
||||
- commerciale ou industrielle
|
||||
- artisanale
|
||||
- commerciale ou industrielle
|
||||
- libérale
|
||||
références:
|
||||
Vérifier la nature de son activité: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/verifier-nature-son-activite
|
||||
Comment déterminer la nature de l'activité d'une entreprise ?: https://www.service-public.fr/professionnels-entreprises/vosdroits/F32887
|
||||
|
@ -433,7 +434,7 @@ entreprise . catégorie d'activité . libérale règlementée . type d'activité
|
|||
|
||||
entreprise . catégorie d'activité . débit de tabac:
|
||||
applicable si: catégorie d'activité = 'commerciale ou industrielle'
|
||||
question: Votre entreprise est-elle un débit de tabac ?
|
||||
question: Exercez-vous une activité de vente de tabac ?
|
||||
par défaut: non
|
||||
|
||||
entreprise . rattachée à la CIPAV:
|
||||
|
|
|
@ -1,75 +1,21 @@
|
|||
situation personnelle:
|
||||
|
||||
situation personnelle . RSA:
|
||||
titre: allocataire RSA
|
||||
question: Êtes-vous allocataire du RSA ?
|
||||
titre: bénéficiaire RSA ou prime d'activité
|
||||
question: >-
|
||||
Etes-vous bénéficiaire du RSA ou de la prime d’activité ?
|
||||
par défaut: non
|
||||
|
||||
situation personnelle . IJSS:
|
||||
titre: indemnités journalières de sécurité sociale
|
||||
description: |
|
||||
En cas de maladie, maternité, ou accident, le régime général de Sécurité sociale ainsi que les régimes spéciaux assurent le versement de prestations « en espèces ». Ce sont les indemnités journalières de Sécurité sociale (IJSS),
|
||||
Les indemnités complémentaires aux indemnités journalières de la Sécurité sociale versées dans le cadre d’un contrat de prévoyance ne constituent pas des revenus de remplacement.
|
||||
|
||||
Note: Les prestations d’invalidité versées par les régimes d’invalidité-décès ne sont pas concernées
|
||||
question: Avez-vous touché des indemnités journalières de sécurité sociale (maladie, maternité, paternité, etc.) ?
|
||||
par défaut: non
|
||||
|
||||
situation personnelle . IJSS . montant:
|
||||
non applicable si: ALD
|
||||
titre: indemnités journalières fiscalisées
|
||||
par défaut: 0
|
||||
question: Quel était leur montant total brut ?
|
||||
unité par défaut: €/an
|
||||
|
||||
situation personnelle . IJSS . ALD:
|
||||
question: Avez-vous touché des indemnités dans le cas d'une affection longue durée (ALD) dite "exonérante" ?
|
||||
description:
|
||||
L'affection longue durée (ALD) est mise en place par la loi du 13 août 2004 relative à l'assurance maladie. Ce statut offre aux personnes malades chroniques qui remplissent certaines conditions une prise en charge spécifique de leurs soins médicaux.
|
||||
L'affection longue durée est une maladie de longue durée, présentant un caractère grave ou chronique et nécessitant un traitement long dont le coût est élevé.
|
||||
La liste des ALD dites "exonérante" est disponible sur le site [ameli.fr](https://www.ameli.fr/assure/droits-demarches/maladie-accident-hospitalisation/affection-longue-duree-ald/affection-longue-duree-ald)
|
||||
Les indemnité versée dans le cadre d'une ALD dites "éxonérante" ne sont pas imposable.
|
||||
par défaut: non
|
||||
|
||||
situation personnelle . IJSS . ALD . autres indemnités:
|
||||
question: Avez-vous également touché des indemnités non liées à votre ALD (maternité, paternité, autre maladie) ?
|
||||
par défaut: non
|
||||
|
||||
situation personnelle . IJSS . ALD . autres indemnités . montant:
|
||||
question: Quel était le montant de vos autres indemnités ?
|
||||
par défaut: 0
|
||||
unité: €/an
|
||||
|
||||
situation personnelle . IJSS . défiscalisées:
|
||||
applicable si: ALD
|
||||
titre: indemnités journalières défiscalisées
|
||||
question: Quel était le montant de vos indemnités ALD ?
|
||||
par défaut: 0
|
||||
unité: €/an
|
||||
|
||||
situation personnelle . IJSS . fiscalisées:
|
||||
titre: indemnités journalières fiscalisées
|
||||
formule:
|
||||
somme:
|
||||
- IJSS . montant
|
||||
- ALD . autres indemnités . montant
|
||||
|
||||
situation personnelle . IJSS . total:
|
||||
titre: total indemnités journalières
|
||||
formule:
|
||||
somme:
|
||||
- fiscalisées
|
||||
- défiscalisées
|
||||
|
||||
situation personnelle . domiciliation fiscale à l'étranger:
|
||||
description: |
|
||||
Ces assurés ne sont pas redevables de la CSG/CRDS mais, en contrepartie ils sont redevables de la cotisation maladie sur la base d’un taux plus elevé.
|
||||
question: La résidence fiscale de l'assuré est-elle domiciliée à l'étranger ?
|
||||
par défaut: non
|
||||
rend non applicable:
|
||||
description: >-
|
||||
Ces assurés ne sont pas redevables de la CSG/CRDS mais, en contrepartie ils
|
||||
sont redevables de la cotisation maladie sur la base d’un taux plus elevé.
|
||||
question: La résidence fiscale est-elle située à l'étranger ?
|
||||
rend non applicable:
|
||||
- dirigeant . indépendant . cotisations et contributions . CSG et CRDS
|
||||
- contrat salarié . CSG
|
||||
- contrat salarié . CRDS
|
||||
- impôt
|
||||
références:
|
||||
par défaut: non
|
||||
références:
|
||||
urssaf.fr: https://www.urssaf.fr/portail/home/employeur/calculer-les-cotisations/les-taux-de-cotisations/la-csg-crds/qui-en-est-redevable.html
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import { usePersistingState } from 'Components/utils/persistState'
|
||||
import Warning from 'Components/ui/WarningBlock'
|
||||
import React from 'react'
|
||||
import emoji from 'react-easy-emoji'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { SitePaths } from './utils/withSitePaths'
|
||||
|
||||
|
@ -11,102 +10,66 @@ type SimulateurWarningProps = {
|
|||
export default function SimulateurWarning({
|
||||
simulateur
|
||||
}: SimulateurWarningProps) {
|
||||
let [folded, fold] = usePersistingState(
|
||||
'app::simulateurs:warning-folded:v1:' + simulateur,
|
||||
false
|
||||
)
|
||||
return (
|
||||
<div
|
||||
id="SimulateurWarning"
|
||||
css={`
|
||||
margin-bottom: 1rem;
|
||||
`}
|
||||
<Warning
|
||||
localStorageKey={'app::simulateurs:warning-folded:v1:' + simulateur}
|
||||
>
|
||||
<p>
|
||||
{emoji('🚩 ')}
|
||||
<strong>
|
||||
<Trans i18nKey="simulateurs.warning.titre">Avant de commencer...</Trans>
|
||||
</strong>{' '}
|
||||
{folded && (
|
||||
<button
|
||||
className="ui__ button simple small"
|
||||
onClick={() => fold(false)}
|
||||
>
|
||||
<Trans i18nKey="simulateurs.warning.plus">Lire les précisions</Trans>
|
||||
</button>
|
||||
<ul>
|
||||
{simulateur == 'auto-entrepreneur' && (
|
||||
<>
|
||||
<li>
|
||||
<Trans i18nKey="simulateurs.warning.auto-entrepreneur">
|
||||
{' '}
|
||||
Les auto-entrepreneurs ne peuvent pas déduire leurs charges de
|
||||
leur chiffre d'affaires. Il faut donc{' '}
|
||||
<strong>
|
||||
retrancher au net tous les coûts liés à l'entreprise pour
|
||||
obtenir le revenu réellement perçu.
|
||||
</strong>
|
||||
</Trans>
|
||||
</li>
|
||||
<li>
|
||||
<Trans i18nKey="simulateurs.warning.cfe">
|
||||
Le simulateur n'intègre pas la cotisation foncière des
|
||||
entreprise (CFE) qui est dûe dès la deuxième année d'exercice.
|
||||
Son montant varie fortement en fonction du chiffre d'affaire et
|
||||
de la domiciliation de l'entreprise.{' '}
|
||||
<a href="https://www.service-public.fr/professionnels-entreprises/vosdroits/F23547">
|
||||
Plus d'infos.
|
||||
</a>
|
||||
</Trans>
|
||||
</li>
|
||||
</>
|
||||
)}
|
||||
{simulateur !== 'artiste-auteur' && (
|
||||
<li>
|
||||
<Trans i18nKey="simulateurs.warning.urssaf">
|
||||
Les calculs sont indicatifs et ne se substituent pas aux décomptes
|
||||
réels des Urssaf, impots.gouv.fr, ou autres.
|
||||
</Trans>
|
||||
</li>
|
||||
)}
|
||||
</p>
|
||||
{!folded && (
|
||||
<div
|
||||
className="ui__ card light-bg"
|
||||
css="padding-top: 1rem; padding-bottom: 0.4rem"
|
||||
>
|
||||
<ul>
|
||||
{simulateur == 'auto-entrepreneur' && (
|
||||
<>
|
||||
<li>
|
||||
<Trans i18nKey="simulateurs.warning.auto-entrepreneur">
|
||||
{' '}
|
||||
Les auto-entrepreneurs ne peuvent pas déduire leurs charges
|
||||
de leur chiffre d'affaires. Il faut donc{' '}
|
||||
<strong>
|
||||
retrancher au net tous les coûts liés à l'entreprise pour
|
||||
obtenir le revenu réellement perçu.
|
||||
</strong>
|
||||
</Trans>
|
||||
</li>
|
||||
<li>
|
||||
<Trans i18nKey="simulateurs.warning.cfe">
|
||||
Le simulateur n'intègre pas la cotisation foncière des
|
||||
entreprise (CFE) qui est dûe dès la deuxième année
|
||||
d'exercice. Son montant varie fortement en fonction du
|
||||
chiffre d'affaire et de la domiciliation de l'entreprise.{' '}
|
||||
<a href="https://www.service-public.fr/professionnels-entreprises/vosdroits/F23547">
|
||||
Plus d'infos.
|
||||
</a>
|
||||
</Trans>
|
||||
</li>
|
||||
</>
|
||||
)}
|
||||
{simulateur !== 'artiste-auteur' && (
|
||||
<li>
|
||||
<Trans i18nKey="simulateurs.warning.urssaf">
|
||||
Les calculs sont indicatifs et ne se substituent pas aux
|
||||
décomptes réels des Urssaf, impots.gouv.fr, ou autres.
|
||||
</Trans>
|
||||
</li>
|
||||
)}
|
||||
|
||||
{simulateur === 'artiste-auteur' && (
|
||||
<>
|
||||
<li>
|
||||
<Trans i18nKey="simulateurs.warning.artiste-auteur">
|
||||
Cette estimation est proposée à titre indicatif. Elle est
|
||||
faite à partir des éléments réglementaires applicables et
|
||||
des éléments que vous avez saisis, mais elle ne tient pas
|
||||
compte de l'ensemble de votre situation. Le montant réel de
|
||||
vos cotisations peut donc être différent.
|
||||
</Trans>
|
||||
</li>
|
||||
<li>
|
||||
<Trans i18nKey="simlateurs.warning.artiste-auteur">
|
||||
Ce simulateur permet d'estimer le montant de vos cotisations
|
||||
pour l'année 2020 à partir de votre revenu projeté
|
||||
</Trans>
|
||||
</li>
|
||||
</>
|
||||
)}
|
||||
</ul>
|
||||
<div className="ui__ answer-group">
|
||||
<button
|
||||
className="ui__ button simple small"
|
||||
onClick={() => fold(true)}
|
||||
>
|
||||
<Trans>J'ai compris</Trans>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
{simulateur === 'artiste-auteur' && (
|
||||
<>
|
||||
<li>
|
||||
<Trans i18nKey="simulateurs.warning.artiste-auteur">
|
||||
Cette estimation est proposée à titre indicatif. Elle est faite
|
||||
à partir des éléments réglementaires applicables et des éléments
|
||||
que vous avez saisis, mais elle ne tient pas compte de
|
||||
l'ensemble de votre situation. Le montant réel de vos
|
||||
cotisations peut donc être différent.
|
||||
</Trans>
|
||||
</li>
|
||||
<li>
|
||||
<Trans i18nKey="simlateurs.warning.artiste-auteur">
|
||||
Ce simulateur permet d'estimer le montant de vos cotisations
|
||||
pour l'année 2020 à partir de votre revenu projeté
|
||||
</Trans>
|
||||
</li>
|
||||
</>
|
||||
)}
|
||||
</ul>
|
||||
</Warning>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
import { explainVariable } from 'Actions/actions'
|
||||
import Animate from 'Components/ui/animate'
|
||||
import Overlay from 'Components/Overlay'
|
||||
import { Markdown } from 'Components/utils/markdown'
|
||||
import { findRuleByDottedName } from 'Engine/rules'
|
||||
import React from 'react'
|
||||
import emoji from 'react-easy-emoji'
|
||||
import { useDispatch, useSelector } from 'react-redux'
|
||||
import { RootState } from 'Reducers/rootReducer'
|
||||
import { flatRulesSelector } from 'Selectors/analyseSelectors'
|
||||
|
@ -17,45 +16,29 @@ export default function Aide() {
|
|||
|
||||
const stopExplaining = () => dispatch(explainVariable())
|
||||
|
||||
if (!explained) return <section id="helpWrapper" />
|
||||
if (!explained) return null
|
||||
|
||||
let rule = findRuleByDottedName(flatRules, explained),
|
||||
text = rule.description,
|
||||
refs = rule.références
|
||||
|
||||
return (
|
||||
<Animate.fromTop>
|
||||
<Overlay onClose={stopExplaining}>
|
||||
<div
|
||||
css={`
|
||||
display: flex;
|
||||
align-items: center;
|
||||
img {
|
||||
margin: 0 1em 0 !important;
|
||||
width: 1.6em !important;
|
||||
height: 1.6em !important;
|
||||
}
|
||||
padding: 0.6rem;
|
||||
`}
|
||||
>
|
||||
{emoji('ℹ️')}
|
||||
|
||||
<div
|
||||
className="controlText ui__ card"
|
||||
css="padding: 0.6rem 0; flex: 1;"
|
||||
>
|
||||
<h4>{rule.title}</h4>
|
||||
<p>
|
||||
<Markdown source={text} />
|
||||
</p>
|
||||
{refs && (
|
||||
<div>
|
||||
<References refs={refs} />
|
||||
</div>
|
||||
)}
|
||||
<button className="hide" aria-label="close" onClick={stopExplaining}>
|
||||
×
|
||||
</button>
|
||||
</div>
|
||||
<h2>{rule.title}</h2>
|
||||
<p>
|
||||
<Markdown source={text} />
|
||||
</p>
|
||||
{refs && (
|
||||
<div>
|
||||
<References refs={refs} />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</Animate.fromTop>
|
||||
</Overlay>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { goToQuestion, validateStepWithValue } from 'Actions/actions'
|
||||
import QuickLinks from 'Components/QuickLinks'
|
||||
import InputComponent from 'Engine/RuleInput'
|
||||
import RuleInput from 'Engine/RuleInput'
|
||||
import { findRuleByDottedName } from 'Engine/rules'
|
||||
import React from 'react'
|
||||
import emoji from 'react-easy-emoji'
|
||||
|
@ -44,7 +44,7 @@ export default function Conversation({ customEndMessages }: ConversationProps) {
|
|||
setDefault()
|
||||
}
|
||||
}
|
||||
const DecoratedInputComponent = FormDecorator(InputComponent)
|
||||
const DecoratedInputComponent = FormDecorator(RuleInput)
|
||||
|
||||
return flatRules && nextSteps.length ? (
|
||||
<>
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
@media print {
|
||||
.explicable {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.explicable .icon {
|
||||
display: inline-block;
|
||||
padding: 0.15rem 0.6rem;
|
||||
|
@ -12,7 +17,6 @@
|
|||
filter: brightness(90%);
|
||||
}
|
||||
|
||||
|
||||
.variantLeaf .explicable .icon img {
|
||||
width: 1.5em !important;
|
||||
height: 1.5em !important;
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import { explainVariable } from 'Actions/actions'
|
||||
import classNames from 'classnames'
|
||||
import { findRuleByDottedName } from 'Engine/rules'
|
||||
import React, { useContext } from 'react'
|
||||
import emoji from 'react-easy-emoji'
|
||||
|
@ -25,23 +24,22 @@ export default function Explicable({ dottedName }: { dottedName: DottedName }) {
|
|||
|
||||
//TODO montrer les variables de type 'une possibilité'
|
||||
|
||||
return dottedName === explained ? null : (
|
||||
<span
|
||||
className={classNames('explicable', {
|
||||
explained: dottedName === explained
|
||||
})}
|
||||
return (
|
||||
<button
|
||||
className="ui__ link-button"
|
||||
onClick={e => {
|
||||
tracker.push(['trackEvent', 'help', dottedName])
|
||||
dispatch(explainVariable(dottedName))
|
||||
e.preventDefault()
|
||||
e.stopPropagation()
|
||||
}}
|
||||
css={`
|
||||
margin-left: 0.3rem !important;
|
||||
vertical-align: middle;
|
||||
font-size: 110% !important;
|
||||
`}
|
||||
>
|
||||
<span
|
||||
className="icon"
|
||||
onClick={e => {
|
||||
tracker.push(['trackEvent', 'help', dottedName])
|
||||
dispatch(explainVariable(dottedName))
|
||||
e.preventDefault()
|
||||
e.stopPropagation()
|
||||
}}
|
||||
>
|
||||
{emoji('ℹ️')}
|
||||
</span>
|
||||
</span>
|
||||
{emoji('ℹ️')}
|
||||
</button>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -125,6 +125,15 @@
|
|||
border: 1px solid var(--color);
|
||||
color: var(--textColor) !important;
|
||||
}
|
||||
@media print {
|
||||
.step label.userAnswerButton.selected {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.step label.userAnswerButton:not(.selected) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@media (hover) {
|
||||
.step label.userAnswerButton:hover:not(.selected) {
|
||||
background: var(--color);
|
||||
|
|
|
@ -23,14 +23,6 @@ questions:
|
|||
liste noire:
|
||||
- entreprise . charges
|
||||
# TODO : quand les questions indeps sont validés, enlever le block ci-dessous de la liste noire
|
||||
- entreprise . catégorie d'activité . débit de tabac
|
||||
- établissement . ZFU
|
||||
- dirigeant . indépendant . cotisations et contributions . exonérations . âge
|
||||
- dirigeant . indépendant . cotisations et contributions . cotisations . retraite complémentaire . taux spécifique PLNR
|
||||
- dirigeant . indépendant . cotisations et contributions . exonérations . invalidité
|
||||
- dirigeant . indépendant . revenus étrangers
|
||||
- situation personnelle . IJSS
|
||||
- situation personnelle . domiciliation fiscale à l'étranger
|
||||
non prioritaires:
|
||||
- entreprise . catégorie d'activité . débit de tabac
|
||||
- entreprise . ZFU
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
import { usePersistingState } from 'Components/utils/persistState'
|
||||
import React, { ReactNode } from 'react'
|
||||
import emoji from 'react-easy-emoji'
|
||||
import { Trans } from 'react-i18next'
|
||||
|
||||
type WarningProps = {
|
||||
localStorageKey: string
|
||||
children: ReactNode
|
||||
}
|
||||
|
||||
export default function Warning({ localStorageKey, children }: WarningProps) {
|
||||
let [folded, fold] = usePersistingState(localStorageKey, false)
|
||||
return (
|
||||
<div
|
||||
css={`
|
||||
margin-bottom: 1rem;
|
||||
`}
|
||||
>
|
||||
<p>
|
||||
{emoji('🚩 ')}
|
||||
<strong>
|
||||
<Trans i18nKey="simulateurs.warning.titre">
|
||||
Avant de commencer...
|
||||
</Trans>
|
||||
</strong>{' '}
|
||||
{folded && (
|
||||
<button
|
||||
className="ui__ button simple small"
|
||||
onClick={() => fold(false)}
|
||||
>
|
||||
<Trans i18nKey="simulateurs.warning.plus">
|
||||
Lire les précisions
|
||||
</Trans>
|
||||
</button>
|
||||
)}
|
||||
</p>
|
||||
{!folded && (
|
||||
<div
|
||||
className="ui__ card light-bg"
|
||||
css="padding-top: 1rem; padding-bottom: 0.4rem"
|
||||
>
|
||||
{children}
|
||||
<div className="ui__ answer-group">
|
||||
<button
|
||||
className="ui__ button simple small"
|
||||
onClick={() => fold(true)}
|
||||
>
|
||||
<Trans>J'ai compris</Trans>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
|
@ -3,8 +3,12 @@ import { useEffect, useRef, useState } from 'react'
|
|||
export default function({
|
||||
root = null,
|
||||
rootMargin,
|
||||
threshold = 0
|
||||
}: IntersectionObserverInit): [React.RefObject<HTMLDivElement>, boolean] {
|
||||
threshold = 0,
|
||||
unobserve = true
|
||||
}: IntersectionObserverInit & { unobserve?: boolean }): [
|
||||
React.RefObject<HTMLDivElement>,
|
||||
boolean
|
||||
] {
|
||||
const ref = useRef<HTMLDivElement>(null)
|
||||
const [wasOnScreen, setWasOnScreen] = useState(false)
|
||||
|
||||
|
@ -13,7 +17,10 @@ export default function({
|
|||
([entry]) => {
|
||||
if (entry.isIntersecting) {
|
||||
setWasOnScreen(entry.isIntersecting)
|
||||
ref.current && observer.unobserve(ref.current)
|
||||
ref.current && unobserve && observer.unobserve(ref.current)
|
||||
}
|
||||
if (!entry.isIntersecting && !unobserve) {
|
||||
setWasOnScreen(entry.isIntersecting)
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -27,9 +34,9 @@ export default function({
|
|||
observer.observe(node)
|
||||
}
|
||||
return () => {
|
||||
node && observer.unobserve(node)
|
||||
node && unobserve && observer.unobserve(node)
|
||||
}
|
||||
}, [root, rootMargin, threshold])
|
||||
}, [root, rootMargin, threshold, ref.current])
|
||||
|
||||
return [ref, wasOnScreen]
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ type Props = {
|
|||
onChange: (value: Value) => void
|
||||
useSwitch?: boolean
|
||||
isTarget?: boolean
|
||||
autoFocus?: boolean
|
||||
value?: Value
|
||||
className?: string
|
||||
onSubmit?: (value: Value) => void
|
||||
|
@ -33,13 +34,14 @@ type Props = {
|
|||
// be displayed to get a user input through successive if statements
|
||||
// That's not great, but we won't invest more time until we have more diverse
|
||||
// input components and a better type system.
|
||||
export default function InputComponent({
|
||||
export default function RuleInput({
|
||||
rules,
|
||||
dottedName,
|
||||
onChange,
|
||||
value,
|
||||
useSwitch = false,
|
||||
isTarget = false,
|
||||
autoFocus = false,
|
||||
className,
|
||||
onSubmit
|
||||
}: Props) {
|
||||
|
@ -53,6 +55,7 @@ export default function InputComponent({
|
|||
value,
|
||||
onChange,
|
||||
onSubmit,
|
||||
autoFocus,
|
||||
className,
|
||||
title: rule.title,
|
||||
question: rule.question,
|
||||
|
|
|
@ -127,11 +127,11 @@ export let defaultNode = nodeValue => ({
|
|||
|
||||
export let parseObject = (recurse, objectShape, value) => {
|
||||
let recurseOne = key => defaultValue => {
|
||||
if (!value[key] && !defaultValue)
|
||||
if (value[key] == null && !defaultValue)
|
||||
throw new Error(
|
||||
`Il manque une clé '${key}' dans ${JSON.stringify(value)} `
|
||||
)
|
||||
return value[key] ? recurse(value[key]) : defaultValue
|
||||
return value[key] != null ? recurse(value[key]) : defaultValue
|
||||
}
|
||||
let transforms = fromPairs(map(k => [k, recurseOne(k)], keys(objectShape)))
|
||||
return evolve(transforms, objectShape)
|
||||
|
|
|
@ -202,10 +202,10 @@ let doInversion = (oldCache, situationGate, parsedRules, v, dottedName) => {
|
|||
return v
|
||||
}
|
||||
|
||||
// si fx renvoie null pour une valeur numérique standard, disons 1000, on peut
|
||||
// si fx renvoie null pour une valeur numérique standard, disons 2000, on peut
|
||||
// considérer que l'inversion est impossible du fait de variables manquantes
|
||||
// TODO fx peut être null pour certains x, et valide pour d'autres : on peut implémenter ici le court-circuit
|
||||
let attempt = fx(1000)
|
||||
let attempt = fx(2000)
|
||||
if (attempt.nodeValue == null) {
|
||||
return attempt
|
||||
}
|
||||
|
@ -217,19 +217,12 @@ let doInversion = (oldCache, situationGate, parsedRules, v, dottedName) => {
|
|||
let y = fx(x)
|
||||
return y.nodeValue - fixedObjectiveValue
|
||||
},
|
||||
0.1,
|
||||
1000000000,
|
||||
v['valeurs négatives possibles'] === 'oui' ? -1000000 : 0,
|
||||
10000000,
|
||||
tolerance,
|
||||
10
|
||||
)
|
||||
|
||||
// Si aucune des valeurs ne fonctionne, on test la valeur 0.
|
||||
if (nodeValue == null) {
|
||||
attempt = fx(0)
|
||||
if (Math.abs(attempt.nodeValue - fixedObjectiveValue) < 0.1) {
|
||||
nodeValue = 0
|
||||
}
|
||||
}
|
||||
return {
|
||||
nodeValue,
|
||||
missingVariables: {},
|
||||
|
@ -489,7 +482,7 @@ export let mecanismProduct = (recurse, k, v) => {
|
|||
}
|
||||
}
|
||||
let mult = (base, rate, facteur, plafond) =>
|
||||
Math.min(base, plafond) * rate * facteur
|
||||
Math.min(base, plafond === false ? Infinity : plafond) * rate * facteur
|
||||
const unit = inferUnit(
|
||||
'*',
|
||||
[assiette, taux, facteur].map(el => el.unit)
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<0>Oui</0>: <0>Yes</0>
|
||||
A quoi servent mes cotisations ?: What's included in my contributions?
|
||||
Accueil: Home
|
||||
Aide à la déclaration de revenus au titre de l'année 2019: Help with your 2019 income tax return
|
||||
Alors: Then
|
||||
Année d'activité: Years of activity
|
||||
Assimilé salarié: '"Assimilé-salarié"'
|
||||
|
@ -43,6 +44,7 @@ Entrée: Enter
|
|||
Envoyer: Send
|
||||
Exemples: Examples
|
||||
Exemples de simulation de salaire: Examples of salary simulations
|
||||
Exonérations: Exemptions
|
||||
Explorez notre documentation: Explore our documentation
|
||||
Faire une simulation: Launch a simulation
|
||||
Fiche de paie: Payslip
|
||||
|
@ -52,6 +54,7 @@ Gérant minoritaire: Managing director
|
|||
Imprimer: Print
|
||||
Impôts: Taxes
|
||||
Indépendant: Independent
|
||||
International: International
|
||||
Intégrer l'interface de simulation: Integrate the simulation interface
|
||||
Intégrer la bibliothèque de calcul: Integrate the calculation library
|
||||
Intégrer nos simulateurs: Integrate our simulators
|
||||
|
@ -100,10 +103,12 @@ Responsabilité limitée: Limited liability
|
|||
Ressources utiles: Helpful resources
|
||||
Retour: Back
|
||||
Retour à la création: Back to creation
|
||||
Retour à ma déclaration: Back to my statement
|
||||
Retour à mon activité: Back to my business
|
||||
Revenir à la documentation: Go back to documentation
|
||||
Revenu (incluant les dépenses liées à l'activité): Revenue (including expenses related to the activity)
|
||||
Revenu disponible: Disposable income
|
||||
Récapitulatif: Summary
|
||||
Rémunération du dirigeant: Director's remuneration
|
||||
Répartition du chiffre d'affaires: Breakdown of turnover
|
||||
Résultat: Result
|
||||
|
@ -117,6 +122,7 @@ Si: If
|
|||
Simulateur de salaire: Employee salary simulation
|
||||
Simulations personnalisées: Customized simulations
|
||||
Sinon: Else
|
||||
Situation personnelle: Personal situation
|
||||
Suivant: Next
|
||||
Taux: Rate
|
||||
Taux calculé: Calculated rate
|
||||
|
@ -134,6 +140,26 @@ Votre adresse e-mail: Your email address
|
|||
Votre entreprise: Your company
|
||||
Votre forme juridique: Your legal status
|
||||
aide: aid or subsidy
|
||||
aide-déclaration-indépendant:
|
||||
description: >-
|
||||
<0>Help with your 2019 income tax return </0><1>This tool is a tax (income)
|
||||
and social security (ISD) declaration aid for self-employed workers. It
|
||||
allows you to find out the amount of social security charges deductible from
|
||||
your net fiscal result.</1><2><0>This tool is for you if you are in any of
|
||||
the following cases :</0><1><0>you contribute to the general scheme for
|
||||
self-employed persons</0><1>your business is in the actual tax system and in
|
||||
accrual accounting</1></1><2>It does not concern you if you are in one of
|
||||
the following cases:</2><3><0>you are a regulated liberal
|
||||
profession</0><1>you are a liberal profession contributing to the
|
||||
CIPAV</1><2>your company is domiciled in the DOMs</2></3></2><3>What is your
|
||||
professional income in 2019?</3><4>Indicate your net fiscal result before
|
||||
deduction of social security charges and tax exemptions.</4>
|
||||
entreprise:
|
||||
description: You can fill in your company to pre-fill in the form
|
||||
titre: <0>Company and activity</0>
|
||||
results:
|
||||
ongoing: Calculation in progress...
|
||||
title: "Reporting help \U0001F4C4"
|
||||
an: year
|
||||
année: year
|
||||
applicable si: applicable if
|
||||
|
@ -677,6 +703,9 @@ gérant minoritaire:
|
|||
titre: Chairman or managing director
|
||||
gérer:
|
||||
choix:
|
||||
déclaration: >-
|
||||
<0>Completing my tax return</0><1>Easily calculate the amounts to carry
|
||||
forward on your 2019 tax return</1>
|
||||
embauche: >
|
||||
<0>Estimate the amount spent for hiring</0>
|
||||
|
||||
|
@ -721,6 +750,7 @@ gérer:
|
|||
titre: Manage my business
|
||||
heure: hour
|
||||
heures: hours
|
||||
imprimer: Print
|
||||
impôt: tax
|
||||
impôt sur le revenu: income tax
|
||||
indemnité: benefit
|
||||
|
@ -845,6 +875,9 @@ path:
|
|||
exemples: /examples
|
||||
index: /documentation
|
||||
gérer:
|
||||
déclaration-indépendant:
|
||||
index: /declaration-aid-independent
|
||||
récapitulatif: /summary
|
||||
embaucher: /hiring
|
||||
index: /manage
|
||||
sécuritéSociale: /social-security
|
||||
|
@ -858,7 +891,6 @@ path:
|
|||
assimilé-salarié: /assimile-salarie
|
||||
auto-entrepreneur: /auto-entrepreneur
|
||||
comparaison: /social-scheme-comparaison
|
||||
dnrti: /dnrti
|
||||
index: /simulators
|
||||
indépendant: /independant
|
||||
salarié: /salaried
|
||||
|
|
|
@ -1,6 +1,160 @@
|
|||
SMIC horaire:
|
||||
titre.en: hourly minimum wage (SMIC)
|
||||
titre.fr: SMIC horaire
|
||||
aide déclaration revenu indépendant 2019:
|
||||
description.en: >-
|
||||
[automatic] These rules calculate the amounts claimed in the 2020 social and
|
||||
tax returns of self-employed persons on the 2019 income 2019
|
||||
description.fr: >-
|
||||
Ces règles calculent les montants demandés dans les déclarations sociale et
|
||||
fiscale des indépendants de 2020 sur les revenus 2019
|
||||
titre.en: '[automatic] self-employment income assistance 2019'
|
||||
titre.fr: aide déclaration revenu indépendant 2019
|
||||
aide déclaration revenu indépendant 2019 . CFP:
|
||||
résumé.en: '[automatic] contribution to vocational training [D]'
|
||||
résumé.fr: 'contribution à la formation professionnelle [D]'
|
||||
titre.en: '[automatic] PSC'
|
||||
titre.fr: CFP
|
||||
aide déclaration revenu indépendant 2019 . CSG déductible:
|
||||
résumé.en: '[automatic] [B]'
|
||||
résumé.fr: '[B]'
|
||||
titre.en: '[automatic] deductible MSA'
|
||||
titre.fr: CSG déductible
|
||||
aide déclaration revenu indépendant 2019 . SMIC 2019:
|
||||
titre.en: '[automatic] MINIMUM WAGE 2019'
|
||||
titre.fr: SMIC 2019
|
||||
aide déclaration revenu indépendant 2019 . assiette sociale:
|
||||
résumé.en: '[automatic] for information [A - (B + C + D)].'
|
||||
résumé.fr: 'pour information [A - (B + C + D)]'
|
||||
titre.en: '[automatic] social base'
|
||||
titre.fr: assiette sociale
|
||||
aide déclaration revenu indépendant 2019 . cotisations sociales déductible:
|
||||
description.en: >-
|
||||
[automatic] Amount to be reported in Box XI of your social security return
|
||||
and Item 326 of Form 2033-D-SD (for the simplified actual) or Item A5 of
|
||||
Form 2053-SD (for the normal actual) of your tax return.
|
||||
description.fr: >-
|
||||
Montant à reporter dans la case XI de votre déclaration sociale et rubrique
|
||||
326 du formulaire 2033-D-SD (pour le réel simplifié) ou rubrique A5 du
|
||||
formulaire 2053-SD (pour le réel normal) de votre déclaration fiscale.
|
||||
résumé.en: '[automatic] [C]'
|
||||
résumé.fr: '[C]'
|
||||
titre.en: '[automatic] deductible compulsory social security contributions'
|
||||
titre.fr: cotisations sociales obligatoires déductibles
|
||||
aide déclaration revenu indépendant 2019 . nature de l'activité:
|
||||
question.en: '[automatic] What is the nature of your business?'
|
||||
question.fr: Quelle est la nature de votre activité ?
|
||||
titre.en: '[automatic] nature of business'
|
||||
titre.fr: nature de l'activité
|
||||
aide déclaration revenu indépendant 2019 . nature de l'activité . artisanale:
|
||||
description.en: >
|
||||
[automatic] It is a service, production, transformation, or repair activity
|
||||
carried out by a qualified professional, and which requires specific skills
|
||||
and know-how.
|
||||
|
||||
|
||||
> For example: works, activities related to the building, repair of
|
||||
products supplied by the client, hairdressers, etc.
|
||||
|
||||
|
||||
- The company must not employ more than 10 employees (the activity becomes
|
||||
commercial beyond that).
|
||||
|
||||
- Craft activities are listed by a decree.
|
||||
description.fr: >
|
||||
C'est une activité de service, de production, de transformation, ou de
|
||||
réparation exercée par un professionnel qualifié, et qui nécessite des
|
||||
compétences et un savoir-faire spécifiques.
|
||||
|
||||
|
||||
> Par exemple : les travaux, les activités liées au bâtiment, la réparation
|
||||
de produits fournis par le client, les coiffeurs...
|
||||
|
||||
|
||||
- L'entreprise ne doit pas employer plus de 10 salariés (l'activité devient
|
||||
commerciale au-delà)
|
||||
|
||||
- Les activités artisanales sont répertoriées par un décret
|
||||
titre.en: '[automatic] artisanal'
|
||||
titre.fr: artisanale
|
||||
aide déclaration revenu indépendant 2019 . nature de l'activité . commerciale ou industrielle:
|
||||
description.en: >
|
||||
[automatic] ### Commercial activity
|
||||
|
||||
- Purchases of goods for resale in the same condition (wholesale or retail
|
||||
trade)
|
||||
|
||||
- Sale of commercial services (equipment rental, transport, real estate
|
||||
agency, hotel and catering, entertainment business, private security
|
||||
activity, rental, etc.).
|
||||
|
||||
|
||||
### Industrial activity
|
||||
|
||||
|
||||
Production or processing activity through the use of industrial tools,
|
||||
extraction, mining, handling, storage and warehousing
|
||||
description.fr: >
|
||||
### Activité commerciale
|
||||
|
||||
- Achats de biens pour leur revente en l'état (commerce en gros ou de
|
||||
détail)
|
||||
|
||||
- Vente de prestations de services commerciales (location de matériel,
|
||||
transport, agence immobilière, hôtellerie-restauration, entreprise de
|
||||
spectacles, activité de sécurité privée, location, etc.)
|
||||
|
||||
|
||||
### Activité industrielle
|
||||
|
||||
|
||||
Activité de production ou de transformation grâce à l'utilisation d'outils
|
||||
industriels, extraction, industries minières, manutention, magasinage et
|
||||
stockage
|
||||
titre.en: '[automatic] commercial or industrial'
|
||||
titre.fr: commerciale ou industrielle
|
||||
aide déclaration revenu indépendant 2019 . nature de l'activité . libérale:
|
||||
description.en: >
|
||||
[automatic] These are the "intellectual" professions, which are not attached
|
||||
to any
|
||||
|
||||
specific pension fund.
|
||||
|
||||
|
||||
This has been the case for all unregulated professions since the
|
||||
|
||||
January 1, 2019.
|
||||
description.fr: |
|
||||
Ce sont les professions "intellectuelles", qui ne sont rattachée à aucune
|
||||
caisse spécifique de retraite.
|
||||
|
||||
C'est le cas de toutes les professions libérale non reglementée depuis le
|
||||
1er janvier 2019.
|
||||
titre.en: '[automatic] Liberal attached to the general regime'
|
||||
titre.fr: Libérale rattachée au régime général
|
||||
aide déclaration revenu indépendant 2019 . plafond sécurité sociale 2019:
|
||||
titre.en: '[automatic] social security ceiling 2019'
|
||||
titre.fr: plafond sécurité sociale 2019
|
||||
aide déclaration revenu indépendant 2019 . revenu net fiscal:
|
||||
résumé.en: >-
|
||||
[automatic] before deduction of social security charges and tax exemptions
|
||||
[A].
|
||||
résumé.fr: 'avant déduction des charges sociales et exonérations fiscales [A]'
|
||||
titre.en: '[automatic] net taxable income'
|
||||
titre.fr: revenu net fiscal
|
||||
aide déclaration revenu indépendant 2019 . total charges sociales déductible:
|
||||
description.en: >-
|
||||
[automatic] Amount to be reported in Item 252 of Form 2033-B-SD (for
|
||||
Simplified Actual) or Item FZ of Form 2052-SD (for Regular Actual) on your
|
||||
tax return.
|
||||
description.fr: >-
|
||||
Montant à reporter dans la rubrique 252 du formulaire 2033-B-SD (pour le
|
||||
réel simplifié) ou en rubrique FZ du formulaire 2052-SD (pour le réel
|
||||
normal) de votre déclaration fiscale.
|
||||
résumé.en: '[automatic] [B + C + D]'
|
||||
résumé.fr: '[B + C + D]'
|
||||
titre.en: '[automatic] total tax-deductible compulsory social security charges'
|
||||
titre.fr: total charges sociales obligatoires déductibles fiscalement
|
||||
artiste-auteur:
|
||||
description.en: The artist-author regime
|
||||
description.fr: Le régime des artistes-auteurs
|
||||
|
@ -3394,6 +3548,86 @@ dirigeant . auto-entrepreneur . plafond:
|
|||
dirigeant . indépendant:
|
||||
titre.en: indépendant
|
||||
titre.fr: indépendant
|
||||
dirigeant . indépendant . IJSS:
|
||||
description.en: >-
|
||||
[automatic] In the event of illness, maternity or accident, the general
|
||||
social security system and special schemes provide "cash" benefits.
|
||||
|
||||
These are per diems from Social Security (IJSS).
|
||||
|
||||
Compensation in addition to the Social Security daily allowances paid under
|
||||
a provident fund contract does not constitute replacement income.
|
||||
|
||||
Note: Disability benefits paid by disability/death plans are not affected.
|
||||
description.fr: >-
|
||||
En cas de maladie, maternité, ou accident, le régime général de Sécurité
|
||||
sociale ainsi que les régimes spéciaux assurent le versement de prestations
|
||||
« en espèces ».
|
||||
|
||||
Ce sont les indemnités journalières de Sécurité sociale (IJSS).
|
||||
|
||||
Les indemnités complémentaires aux indemnités journalières de la Sécurité
|
||||
sociale versées dans le cadre d’un contrat de prévoyance ne constituent pas
|
||||
des revenus de remplacement.
|
||||
|
||||
Note: Les prestations d’invalidité versées par les régimes
|
||||
d’invalidité-décès ne sont pas concernées
|
||||
question.en: >-
|
||||
[automatic] Have you received daily allowances for sickness, maternity or
|
||||
paternity as a result of your self-employed activity?
|
||||
question.fr: "Avez-vous perçu des indemnités journalières de maladie, maternité ou paternité au titre de votre activité indépendante\_?"
|
||||
titre.en: '[automatic] social security daily allowances'
|
||||
titre.fr: indemnités journalières de sécurité sociale
|
||||
dirigeant . indépendant . IJSS . imposable:
|
||||
description.en: >-
|
||||
[automatic] Indicate only the taxable replacement income received, i.e. all
|
||||
replacement income received **except for daily allowances in connection with
|
||||
a Long-Term Affection (LTA)**.
|
||||
|
||||
|
||||
This income will be deducted from your contribution base, so as not to be
|
||||
submitted twice to the CSG-CRDS :
|
||||
|
||||
- Replacement income that has been deducted from the CSG-CRDS must be shown
|
||||
for the net amount of the deductible CSG share.
|
||||
|
||||
- Replacement income that has not been deducted from the CSG-CRDS must be
|
||||
shown for the gross amount as received.
|
||||
|
||||
> Replacement income is: the flat-rate maternal rest allowance, the
|
||||
flat-rate daily allowance for interruption of activity, the replacement
|
||||
allowance for maternity, paternity or adoption and the daily sickness
|
||||
allowance.
|
||||
description.fr: "Indiquez uniquement les revenus de remplacement imposables perçus, donc tous les revenus de remplacement perçus **sauf les indemnités journalières en lien avec une Affection de Longue Durée (ALD)**. \n\nCes revenus seront déduits de votre assiette des contributions, afin de ne pas être soumis deux fois à la CSG-CRDS\_:\n- Les revenus de remplacement qui ont été précomptés de la CSG-CRDS doivent être indiqués pour leur montant net de la part de CSG déductible. \n- Les revenus de remplacement qui n’ont pas été précomptés de la CSG-CRDS doivent être indiqués pour leur montant brut tel que perçu. \n> Les revenus de remplacement sont : l'allocation forfaitaire de repos maternel, l'indemnité journalière forfaitaire d'interruption d'activité, l’indemnité de remplacement pour maternité, paternité ou adoption et l'indemnité journalière maladie."
|
||||
question.en: '[automatic] What is the gross amount of taxable daily allowances received?'
|
||||
question.fr: Quel est le montant brut des indemnités journalières imposables perçues?
|
||||
résumé.en: '[automatic] Only if you do not fall under the micro-fiscal regime.'
|
||||
résumé.fr: Uniquement si vous ne relevez pas du régime micro-fiscal
|
||||
titre.en: '[automatic] taxable per diems'
|
||||
titre.fr: indemnités journalières imposable
|
||||
dirigeant . indépendant . IJSS . total:
|
||||
description.en: >-
|
||||
[automatic] Indicate only the gross amount of your replacement income,
|
||||
taxable and non-taxable, as shown on the statement of benefits provided by
|
||||
your health insurance fund.
|
||||
|
||||
> Replacement income is: the flat-rate maternal rest allowance, the
|
||||
flat-rate daily allowance for interruption of activity, the replacement
|
||||
allowance for maternity, paternity or adoption and the daily sickness
|
||||
allowance.
|
||||
description.fr: >-
|
||||
Indiquez uniquement le montant brut de vos revenus de remplacement,
|
||||
imposables et non imposables qui figure sur le relevé de prestations fourni
|
||||
pas votre caisse d'assurance maladie.
|
||||
|
||||
> Les revenus de remplacement sont : l'allocation forfaitaire de repos
|
||||
maternel, l'indemnité journalière forfaitaire d'interruption d'activité,
|
||||
l'indemnité de remplacement pour maternité, paternité ou adoption et
|
||||
l'indemnité journalière maladie.
|
||||
question.en: '[automatic] What is the total gross amount of all your per diems?'
|
||||
question.fr: "Quel est le montant total brut de toutes vos indemnités journalières\_?"
|
||||
titre.en: '[automatic] sick pay'
|
||||
titre.fr: indemnités journalières
|
||||
dirigeant . indépendant . PLNR régime général:
|
||||
description.en: rattaché au régime général plutôt que la CIPAV
|
||||
description.fr: >-
|
||||
|
@ -3534,6 +3768,14 @@ dirigeant . indépendant . cotisations et contributions . CSG et CRDS:
|
|||
titre.en: CSG and CRDS
|
||||
titre.fr: CSG et CRDS
|
||||
dirigeant . indépendant . cotisations et contributions . CSG et CRDS . assiette:
|
||||
note.en: >-
|
||||
[automatic] Only the taxable portion of the IJSS is deducted from the MSA
|
||||
base, since the non-taxable portion has already been deducted from the net
|
||||
tax income provided.
|
||||
note.fr: >-
|
||||
Seule la partie imposable des IJSS est retranchée de l'assiette de la CSG,
|
||||
puisque la partie non imposable a déjà été retranchée du revenu net fiscal
|
||||
fourni
|
||||
titre.en: basis
|
||||
titre.fr: assiette
|
||||
dirigeant . indépendant . cotisations et contributions . cotisations:
|
||||
|
@ -3708,9 +3950,11 @@ dirigeant . indépendant . cotisations et contributions . cotisations . retraite
|
|||
and opted for the general scheme for self-employed persons have the
|
||||
possibility to opt for specific rates of supplementary pension contribution.
|
||||
description.fr: "Les professions libérales non règlementées qui ont débuté leur activité à compter du 1er janvier 2019 ou ceux qui ont débuté leur activité avant la date du 1er janvier 2019\_ et ont opté pour le régime général des travailleurs indépendants\_ ont la possibilité d’opter pour des taux spécifique de la cotisation retraite complémentaire.\n"
|
||||
question.en: complémentaire ?
|
||||
question.en: >-
|
||||
[automatic] Have you opted for specific supplementary pension contribution
|
||||
rates?
|
||||
question.fr: >-
|
||||
Avez-vous opté pour des taux spécifique de cotisation retraite
|
||||
Avez-vous opté pour des taux spécifiques de cotisation retraite
|
||||
complémentaire ?
|
||||
titre.en: unregulated specific rate for unregulated professions
|
||||
titre.fr: taux spécifique profession libérale non reglementée
|
||||
|
@ -3782,10 +4026,8 @@ dirigeant . indépendant . cotisations et contributions . exonérations . invali
|
|||
self-employed workers' scheme enjoy full exemption from sickness and
|
||||
supplementary pension contributions.
|
||||
description.fr: "Les personnes titulaires d’une pension d’invalidité versée par un régime des travailleurs non-salariés non agricoles bénéficient d’une exonération totale des cotisations\_maladie et retraite complémentaire."
|
||||
question.en: indépendants ?
|
||||
question.fr: >-
|
||||
Êtes-vous titulaire d’une pension d’invalidité du régime des travailleurs
|
||||
indépendants ?
|
||||
question.en: '[automatic] Do you receive a disability pension as a self-employed person?'
|
||||
question.fr: "Êtes-vous titulaire d’une pension d’invalidité à titre de travailleur indépendant\_?"
|
||||
titre.en: disability
|
||||
titre.fr: invalidité
|
||||
dirigeant . indépendant . cotisations et contributions . exonérations . âge:
|
||||
|
@ -3847,7 +4089,9 @@ dirigeant . indépendant . revenus étrangers:
|
|||
Pour savoir si ces revenus sont soumis à l'impôt sur le revenu, référez-vous
|
||||
à la notice explicative sur le site
|
||||
[impots.gouv.fr](https://www.impots.gouv.fr/portail/international-particulier/imposition-des-revenus-de-source-etrangere)
|
||||
question.en: '?'
|
||||
question.en: >-
|
||||
[automatic] Have you received any income abroad in connection with your
|
||||
business?
|
||||
question.fr: Avez-vous perçu des revenus à l'étranger dans le cadre de votre activité ?
|
||||
titre.en: foreign income
|
||||
titre.fr: revenus étrangers
|
||||
|
@ -4049,10 +4293,10 @@ entreprise . catégorie d'activité:
|
|||
description.fr: >-
|
||||
Votre catégorie d'activité va déterminer une grande partie des calculs de
|
||||
cotisation, contribution et impôt.
|
||||
question.en: What is your category of activity?
|
||||
question.fr: Quelle est votre catégorie d'activité ?
|
||||
titre.en: activity category
|
||||
titre.fr: catégorie d'activité
|
||||
question.en: '[automatic] What is the nature of your business?'
|
||||
question.fr: Quelle est la nature de votre activité ?
|
||||
titre.en: '[automatic] nature of business'
|
||||
titre.fr: nature de l'activité
|
||||
entreprise . catégorie d'activité . artisanale:
|
||||
description.en: >
|
||||
It is an activity of service, production, processing, or by a qualified
|
||||
|
@ -4120,8 +4364,8 @@ entreprise . catégorie d'activité . commerciale ou industrielle:
|
|||
titre.en: commercial or industrial
|
||||
titre.fr: commerciale ou industrielle
|
||||
entreprise . catégorie d'activité . débit de tabac:
|
||||
question.en: Is your business a tobacco store?
|
||||
question.fr: Votre entreprise est-elle un débit de tabac ?
|
||||
question.en: '[automatic] Do you engage in tobacco sales?'
|
||||
question.fr: "Exercez-vous une activité de vente de tabac\_?"
|
||||
titre.en: tobacco shop
|
||||
titre.fr: débit de tabac
|
||||
entreprise . catégorie d'activité . libérale:
|
||||
|
@ -4387,8 +4631,8 @@ entreprise . date de création:
|
|||
|
||||
Si vous n'avez pas le jour exact, le mois suffit en général pour une bonne
|
||||
approximation.
|
||||
question.en: When did you create your company?
|
||||
question.fr: Quelle est la date de début d'activité ?
|
||||
question.en: '[automatic] What is your start date?'
|
||||
question.fr: Quelle est votre date de début d'activité ?
|
||||
suggestions.Début 2019.en: '[automatic] Early 2019'
|
||||
suggestions.Début 2019.fr: Début 2019
|
||||
suggestions.Début 2020.en: '[automatic] Early 2020'
|
||||
|
@ -5233,104 +5477,20 @@ revenus net de cotisations:
|
|||
situation personnelle:
|
||||
titre.en: personal situation
|
||||
titre.fr: situation personnelle
|
||||
situation personnelle . IJSS:
|
||||
description.en: >
|
||||
[automatic] In the event of illness, maternity or accident, the general
|
||||
social security system and special schemes provide "cash" benefits. These
|
||||
are per diems from Social Security (IJSS),
|
||||
|
||||
Compensation in addition to the Social Security daily allowances paid under
|
||||
a provident fund contract does not constitute replacement income.
|
||||
|
||||
|
||||
Note: Disability benefits paid by disability/death plans are not affected.
|
||||
description.fr: >
|
||||
En cas de maladie, maternité, ou accident, le régime général de Sécurité
|
||||
sociale ainsi que les régimes spéciaux assurent le versement de prestations
|
||||
« en espèces ». Ce sont les indemnités journalières de Sécurité sociale
|
||||
(IJSS),
|
||||
|
||||
Les indemnités complémentaires aux indemnités journalières de la Sécurité
|
||||
sociale versées dans le cadre d’un contrat de prévoyance ne constituent pas
|
||||
des revenus de remplacement.
|
||||
|
||||
|
||||
Note: Les prestations d’invalidité versées par les régimes
|
||||
d’invalidité-décès ne sont pas concernées
|
||||
question.en: 'maternité, paternité, etc.) ?'
|
||||
question.fr: >-
|
||||
Avez-vous touché des indemnités journalières de sécurité sociale (maladie,
|
||||
maternité, paternité, etc.) ?
|
||||
titre.en: social security daily allowances
|
||||
titre.fr: indemnités journalières de sécurité sociale
|
||||
situation personnelle . IJSS . ALD:
|
||||
description.en: >-
|
||||
[automatic] Long-term affection (ALD) is introduced by the Law of 13 August
|
||||
2004 on health insurance. This status offers chronically ill people who meet
|
||||
certain conditions specific medical care. Long-term condition is a
|
||||
long-term, severe or chronic illness requiring long-term treatment at high
|
||||
cost. The list of "exempt" DTAs is available on the website
|
||||
[ameli.fr](https://www.ameli.fr/assure/droits-demarches/maladie-accident-hospitalisation/affection-longue-duree-ald/affection-longue-duree-ald)
|
||||
Compensation paid under an "exempt" DTA is not taxable.
|
||||
description.fr: >-
|
||||
L'affection longue durée (ALD) est mise en place par la loi du 13 août 2004
|
||||
relative à l'assurance maladie. Ce statut offre aux personnes malades
|
||||
chroniques qui remplissent certaines conditions une prise en charge
|
||||
spécifique de leurs soins médicaux. L'affection longue durée est une maladie
|
||||
de longue durée, présentant un caractère grave ou chronique et nécessitant
|
||||
un traitement long dont le coût est élevé. La liste des ALD dites
|
||||
"exonérante" est disponible sur le site
|
||||
[ameli.fr](https://www.ameli.fr/assure/droits-demarches/maladie-accident-hospitalisation/affection-longue-duree-ald/affection-longue-duree-ald)
|
||||
Les indemnité versée dans le cadre d'une ALD dites "éxonérante" ne sont pas
|
||||
imposable.
|
||||
question.en: (ALD) dite "exonérante" ?
|
||||
question.fr: >-
|
||||
Avez-vous touché des indemnités dans le cas d'une affection longue durée
|
||||
(ALD) dite "exonérante" ?
|
||||
titre.en: ALD
|
||||
titre.fr: ALD
|
||||
situation personnelle . IJSS . ALD . autres indemnités:
|
||||
question.en: '(maternité, paternité, autre maladie) ?'
|
||||
question.fr: >-
|
||||
Avez-vous également touché des indemnités non liées à votre ALD (maternité,
|
||||
paternité, autre maladie) ?
|
||||
titre.en: other compensation
|
||||
titre.fr: autres indemnités
|
||||
situation personnelle . IJSS . ALD . autres indemnités . montant:
|
||||
question.en: How much was your other compensation?
|
||||
question.fr: Quel était le montant de vos autres indemnités ?
|
||||
titre.en: amount
|
||||
titre.fr: montant
|
||||
situation personnelle . IJSS . défiscalisées:
|
||||
question.en: What was the amount of your ALD benefits?
|
||||
question.fr: Quel était le montant de vos indemnités ALD ?
|
||||
titre.en: tax-free per diems
|
||||
titre.fr: indemnités journalières défiscalisées
|
||||
situation personnelle . IJSS . fiscalisées:
|
||||
titre.en: taxable daily allowances
|
||||
titre.fr: indemnités journalières fiscalisées
|
||||
situation personnelle . IJSS . montant:
|
||||
question.en: What was their total gross amount?
|
||||
question.fr: Quel était leur montant total brut ?
|
||||
titre.en: taxable daily allowances
|
||||
titre.fr: indemnités journalières fiscalisées
|
||||
situation personnelle . IJSS . total:
|
||||
titre.en: total daily allowances
|
||||
titre.fr: total indemnités journalières
|
||||
situation personnelle . RSA:
|
||||
question.en: Are you a beneficiary of the RSA (active solidarity income)?
|
||||
question.fr: Êtes-vous allocataire du RSA ?
|
||||
titre.en: RSA recipient
|
||||
titre.fr: allocataire RSA
|
||||
question.en: '[automatic] Are you a beneficiary of the RSA or the activity bonus?'
|
||||
question.fr: "Etes-vous bénéficiaire du RSA ou de la prime d’activité\_?"
|
||||
titre.en: '[automatic] beneficiary RSA or activity bonus'
|
||||
titre.fr: bénéficiaire RSA ou prime d'activité
|
||||
situation personnelle . domiciliation fiscale à l'étranger:
|
||||
description.en: >
|
||||
description.en: >-
|
||||
[automatic] These insured persons are not liable for the CSG/CRDS but, in
|
||||
return, they are liable for the health contribution at a higher rate.
|
||||
description.fr: >
|
||||
description.fr: >-
|
||||
Ces assurés ne sont pas redevables de la CSG/CRDS mais, en contrepartie ils
|
||||
sont redevables de la cotisation maladie sur la base d’un taux plus elevé.
|
||||
question.en: Is the insured's tax residence abroad?
|
||||
question.fr: La résidence fiscale de l'assuré est-elle domiciliée à l'étranger ?
|
||||
question.en: '[automatic] Is the tax residence located abroad?'
|
||||
question.fr: La résidence fiscale est-elle située à l'étranger ?
|
||||
titre.en: tax domicile abroad
|
||||
titre.fr: domiciliation fiscale à l'étranger
|
||||
établissement:
|
||||
|
@ -5343,7 +5503,9 @@ situation personnelle . domiciliation fiscale à l'étranger:
|
|||
titre.en: establishment
|
||||
titre.fr: établissement
|
||||
établissement . ZFU:
|
||||
question.en: (ZFU) ?
|
||||
question.en: >-
|
||||
[automatic] Does your establishment benefit from the Urban Free Zone (ZFU)
|
||||
scheme?
|
||||
question.fr: >-
|
||||
Votre établissement bénéficie-t-il du dispositif zone franche urbaine (ZFU)
|
||||
?
|
||||
|
|
|
@ -0,0 +1,87 @@
|
|||
import RuleLink from 'Components/RuleLink'
|
||||
import { SitePathsContext } from 'Components/utils/withSitePaths'
|
||||
import { formatValue } from 'Engine/format'
|
||||
import React, { useContext } from 'react'
|
||||
import emoji from 'react-easy-emoji'
|
||||
import { Trans } from 'react-i18next'
|
||||
import Skeleton from 'react-loading-skeleton'
|
||||
import ReactToPrint from 'react-to-print'
|
||||
import Animate from 'Ui/animate'
|
||||
import { useRule } from '../../Simulateurs/ArtisteAuteur'
|
||||
import simulationConfig from './config.yaml'
|
||||
|
||||
type ResultsProp = {
|
||||
componentRef?: any
|
||||
}
|
||||
export function Results({ componentRef }: ResultsProp) {
|
||||
const results = simulationConfig.objectifs.map(dottedName =>
|
||||
useRule(dottedName)
|
||||
)
|
||||
const onGoingComputation = !results.filter(node => node.nodeValue != null)
|
||||
.length
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
return (
|
||||
<div
|
||||
className="ui__ card lighter-bg"
|
||||
css="margin-top: 3rem; padding: 1rem 0"
|
||||
>
|
||||
<h1 css="text-align: center; margin-bottom: 2rem">
|
||||
<Trans i18nKey="aide-déclaration-indépendant.results.title">
|
||||
Aide à la déclaration
|
||||
</Trans>
|
||||
{emoji('📄')}
|
||||
</h1>
|
||||
{onGoingComputation && (
|
||||
<h2>
|
||||
<small>
|
||||
<Trans i18nKey="aide-déclaration-indépendant.results.ongoing">
|
||||
Calcul en cours...
|
||||
</Trans>
|
||||
</small>
|
||||
</h2>
|
||||
)}
|
||||
<>
|
||||
<Animate.fromTop>
|
||||
{results.map(r => (
|
||||
<React.Fragment key={r.title}>
|
||||
<h4>
|
||||
{r.title} <small>{r.summary}</small>
|
||||
</h4>
|
||||
{r.description && <p className="ui__ notice">{r.description}</p>}
|
||||
<p className="ui__ lead" css="margin-bottom: 1rem;">
|
||||
<RuleLink dottedName={r.dottedName}>
|
||||
{r.nodeValue != null ? (
|
||||
formatValue({
|
||||
value: r.nodeValue || 0,
|
||||
language: 'fr',
|
||||
unit: '€',
|
||||
maximumFractionDigits: 0
|
||||
})
|
||||
) : (
|
||||
<Skeleton width={80} />
|
||||
)}
|
||||
</RuleLink>
|
||||
</p>
|
||||
</React.Fragment>
|
||||
))}
|
||||
<p className="ui__ notice">
|
||||
Résultats calculés le {new Date().toLocaleDateString()}
|
||||
</p>
|
||||
{!onGoingComputation && (
|
||||
<div css="text-align: center">
|
||||
<style>{`@media print {.button.print{display: none;} body {margin: 40px;}}`}</style>
|
||||
<ReactToPrint
|
||||
trigger={() => (
|
||||
<button className="ui__ simple button print">
|
||||
{emoji('🖨')} Imprimer
|
||||
</button>
|
||||
)}
|
||||
content={() => componentRef.current}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</Animate.fromTop>
|
||||
</>
|
||||
</div>
|
||||
)
|
||||
}
|
|
@ -0,0 +1,124 @@
|
|||
import CompanyDetails from 'Components/CompanyDetails'
|
||||
import { formatValue } from 'Engine/format'
|
||||
import React, { useRef } from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { useSelector } from 'react-redux'
|
||||
import { RootState } from 'Reducers/rootReducer'
|
||||
import { situationSelector } from 'Selectors/analyseSelectors'
|
||||
import { Results } from './Result'
|
||||
|
||||
export function AideDéclarationIndépendantsRécapitulatif() {
|
||||
const situation = useSelector(situationSelector)
|
||||
const siren = useSelector(
|
||||
(state: RootState) => state.inFranceApp.existingCompany?.siren
|
||||
)
|
||||
console.log(useSelector((state: RootState) => state.rules))
|
||||
const componentRef = useRef<HTMLDivElement>(null)
|
||||
|
||||
return (
|
||||
<div ref={componentRef}>
|
||||
<h1>
|
||||
<Trans>Aide à la déclaration de revenus au titre de l'année 2019</Trans>
|
||||
</h1>
|
||||
|
||||
<p>
|
||||
Ce document atteste de votre bonne foi concernant votre déclaration
|
||||
selon les éléments transmis.
|
||||
</p>
|
||||
|
||||
<h2>
|
||||
<Trans>Récapitulatif</Trans>
|
||||
</h2>
|
||||
|
||||
<SimpleField dottedName={'dirigeant . rémunération totale'} unit="€" />
|
||||
|
||||
{siren && <CompanyDetails siren={siren} />}
|
||||
|
||||
<SimpleField
|
||||
dottedName={
|
||||
"aide déclaration revenu indépendant 2019 . nature de l'activité"
|
||||
}
|
||||
/>
|
||||
|
||||
<SimpleField dottedName={'situation personnelle . RSA'} />
|
||||
|
||||
{!situation[
|
||||
"situation personnelle . domiciliation fiscale à l'étranger"
|
||||
] && (
|
||||
<>
|
||||
<SimpleField dottedName={'dirigeant . indépendant . IJSS'} />
|
||||
|
||||
<SimpleField
|
||||
dottedName={'dirigeant . indépendant . IJSS . total'}
|
||||
unit="€"
|
||||
/>
|
||||
|
||||
<SimpleField
|
||||
dottedName={'dirigeant . indépendant . IJSS . imposable'}
|
||||
unit="€"
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
|
||||
<SimpleField
|
||||
dottedName={'dirigeant . indépendant . conjoint collaborateur'}
|
||||
/>
|
||||
|
||||
<SimpleField
|
||||
label="Il cotise sur la base"
|
||||
dottedName={
|
||||
'dirigeant . indépendant . conjoint collaborateur . assiette'
|
||||
}
|
||||
/>
|
||||
|
||||
<SimpleField
|
||||
dottedName={
|
||||
'dirigeant . indépendant . cotisations et contributions . exonérations . invalidité'
|
||||
}
|
||||
/>
|
||||
|
||||
<SimpleField
|
||||
dottedName={
|
||||
"situation personnelle . domiciliation fiscale à l'étranger"
|
||||
}
|
||||
/>
|
||||
|
||||
<SimpleField dottedName={'dirigeant . indépendant . revenus étrangers'} />
|
||||
|
||||
<Results componentRef={componentRef} />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
type SimpleFieldProps = {
|
||||
label?: string
|
||||
dottedName: string
|
||||
unit?: string
|
||||
}
|
||||
function SimpleField({ label, dottedName, unit }: SimpleFieldProps) {
|
||||
const situation = useSelector(situationSelector)
|
||||
const rules = useSelector((state: RootState) => state.rules)
|
||||
const value = situation[dottedName]
|
||||
return value && (value === 'oui' || unit === '€') ? (
|
||||
<p>
|
||||
<span>
|
||||
{rules.find(rule => rule.dottedName === dottedName)?.question}
|
||||
</span>
|
||||
<span>
|
||||
|
||||
<strong>
|
||||
{value !== null && unit === '€' ? (
|
||||
formatValue({
|
||||
value: value || 0,
|
||||
language: 'fr',
|
||||
unit: unit,
|
||||
maximumFractionDigits: 0
|
||||
})
|
||||
) : (
|
||||
<>{value}</>
|
||||
)}
|
||||
</strong>
|
||||
</span>
|
||||
</p>
|
||||
) : null
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
objectifs:
|
||||
- aide déclaration revenu indépendant 2019 . revenu net fiscal
|
||||
- aide déclaration revenu indépendant 2019 . CSG déductible
|
||||
- aide déclaration revenu indépendant 2019 . cotisations sociales déductible
|
||||
- aide déclaration revenu indépendant 2019 . CFP
|
||||
- aide déclaration revenu indépendant 2019 . total charges sociales déductible
|
||||
- aide déclaration revenu indépendant 2019 . assiette sociale
|
||||
situation:
|
||||
dirigeant: 'indépendant'
|
||||
aide déclaration revenu indépendant 2019: true
|
||||
unités par défaut: ['€/an']
|
|
@ -0,0 +1,337 @@
|
|||
import { setSimulationConfig, updateSituation } from 'Actions/actions'
|
||||
import Aide from 'Components/conversation/Aide'
|
||||
import Explicable from 'Components/conversation/Explicable'
|
||||
import 'Components/TargetSelection.css'
|
||||
import Warning from 'Components/ui/WarningBlock'
|
||||
import { ScrollToTop } from 'Components/utils/Scroll'
|
||||
import useDisplayOnIntersecting from 'Components/utils/useDisplayOnIntersecting'
|
||||
import RuleInput from 'Engine/RuleInput'
|
||||
import React, { useCallback, useEffect, useRef, useState } from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { useDispatch, useSelector } from 'react-redux'
|
||||
import { RootState } from 'Reducers/rootReducer'
|
||||
import {
|
||||
flatRulesSelector,
|
||||
nextStepsSelector,
|
||||
ruleAnalysisSelector,
|
||||
situationSelector
|
||||
} from 'Selectors/analyseSelectors'
|
||||
import styled from 'styled-components'
|
||||
import { DottedName, Rule } from 'Types/rule'
|
||||
import Animate from 'Ui/animate'
|
||||
import { useRule } from '../../Simulateurs/ArtisteAuteur'
|
||||
import { CompanySection } from '../Home'
|
||||
import simulationConfig from './config.yaml'
|
||||
import { Results } from './Result'
|
||||
|
||||
const lauchComputationWhenResultsInViewport = () => {
|
||||
const dottedName = 'dirigeant . rémunération totale'
|
||||
const [resultsRef, resultsInViewPort] = useDisplayOnIntersecting({
|
||||
threshold: 0.5,
|
||||
unobserve: false
|
||||
})
|
||||
const value = useSelector(situationSelector)[dottedName]
|
||||
const [currentIncome, setCurrentIncome] = useState(value)
|
||||
const [displayForm, setDisplayForm] = useState(currentIncome != null)
|
||||
const updateIncome = useCallback(
|
||||
income => {
|
||||
setDisplayForm(income != null)
|
||||
setCurrentIncome(income)
|
||||
},
|
||||
[setDisplayForm, setCurrentIncome]
|
||||
)
|
||||
const dispatch = useDispatch()
|
||||
useEffect(() => {
|
||||
if (resultsInViewPort && displayForm) {
|
||||
dispatch(updateSituation(dottedName, currentIncome))
|
||||
} else {
|
||||
dispatch(updateSituation(dottedName, null))
|
||||
}
|
||||
}, [resultsInViewPort, displayForm, currentIncome])
|
||||
|
||||
return { updateIncome, resultsRef, displayForm, currentIncome }
|
||||
}
|
||||
|
||||
export default function AideDéclarationIndépendant() {
|
||||
const dispatch = useDispatch()
|
||||
const rules = useSelector(flatRulesSelector)
|
||||
const company = useSelector(
|
||||
(state: RootState) => state.inFranceApp.existingCompany
|
||||
)
|
||||
dispatch(setSimulationConfig(simulationConfig, true))
|
||||
const {
|
||||
resultsRef,
|
||||
displayForm,
|
||||
updateIncome,
|
||||
currentIncome
|
||||
} = lauchComputationWhenResultsInViewport()
|
||||
const printComponentRef = useRef<HTMLDivElement>(null)
|
||||
return (
|
||||
<div ref={printComponentRef}>
|
||||
<ScrollToTop />
|
||||
<Trans i18nKey="aide-déclaration-indépendant.description">
|
||||
<h1>Aide à la déclaration de revenus au titre de l'année 2019</h1>
|
||||
<p>
|
||||
Cet outil est une aide aux déclarations fiscale (revenu) et sociale
|
||||
(DSI) à destination des travailleurs indépendants. Il vous permet de
|
||||
connaître le montant des charges sociales déductibles à partir de
|
||||
votre résultat net fiscal.
|
||||
</p>
|
||||
<div
|
||||
css={`
|
||||
@media print {
|
||||
display: none;
|
||||
}
|
||||
`}
|
||||
>
|
||||
<Warning localStorageKey="aide-déclaration-indépendant.warning">
|
||||
<h3>
|
||||
Cet outil vous concerne si vous êtes dans tous les cas suivants :
|
||||
</h3>
|
||||
<ul>
|
||||
<li>
|
||||
vous cotisez au régime général des travailleurs indépendants
|
||||
</li>
|
||||
<li>
|
||||
votre entreprise est au régime réel d'imposition et en
|
||||
comptabilité d'engagement
|
||||
</li>
|
||||
</ul>
|
||||
<h3>
|
||||
Il ne vous concerne pas si vous êtes dans un des cas suivants :
|
||||
</h3>
|
||||
<ul>
|
||||
<li>
|
||||
vous exercez une activité libérale relevant d’un régime de
|
||||
retraite des professions libérales
|
||||
</li>
|
||||
<li>
|
||||
vous êtes gérants de société relevant de l’impôt sur les
|
||||
sociétés
|
||||
</li>
|
||||
<li>vous avez opté pour le régime micro-fiscal</li>
|
||||
<li>votre entreprise est domiciliée dans les DOM</li>
|
||||
</ul>
|
||||
</Warning>
|
||||
</div>
|
||||
<h2>
|
||||
Quel est votre résultat fiscal en 2019 ?<br />
|
||||
<small>Charges sociales et exonérations fiscales non incluses</small>
|
||||
</h2>
|
||||
<p className="ui__ notice">
|
||||
Le résultat fiscal correspond aux produits moins les charges. Il peut
|
||||
être positif (bénéfice) ou négatif (pertes).
|
||||
</p>
|
||||
</Trans>
|
||||
<BigInput>
|
||||
<RuleInput
|
||||
rules={rules}
|
||||
dottedName="dirigeant . rémunération totale"
|
||||
onChange={updateIncome}
|
||||
value={currentIncome}
|
||||
autoFocus
|
||||
/>
|
||||
</BigInput>
|
||||
{displayForm && (
|
||||
<>
|
||||
<Animate.fromTop>
|
||||
<FormBlock>
|
||||
<Trans i18nKey="aide-déclaration-indépendant.entreprise.titre">
|
||||
<h2>Entreprise et activité</h2>
|
||||
</Trans>
|
||||
<div
|
||||
css={`
|
||||
@media print {
|
||||
display: none;
|
||||
}
|
||||
`}
|
||||
>
|
||||
{!company && (
|
||||
<p className="ui__ notice">
|
||||
<Trans i18nKey="aide-déclaration-indépendant.entreprise.description">
|
||||
<strong>Facultatif : </strong>Vous pouvez renseigner votre
|
||||
entreprise pour pré-remplir le formulaire
|
||||
</Trans>
|
||||
</p>
|
||||
)}
|
||||
<CompanySection company={company} />
|
||||
</div>
|
||||
<SimpleField dottedName="entreprise . date de création" />
|
||||
<SubSection dottedName="aide déclaration revenu indépendant 2019 . nature de l'activité" />
|
||||
{/* PLNR */}
|
||||
<SimpleField dottedName="dirigeant . indépendant . cotisations et contributions . cotisations . retraite complémentaire . taux spécifique PLNR" />
|
||||
<SimpleField dottedName="dirigeant . indépendant . cotisations et contributions . cotisations . déduction tabac" />
|
||||
|
||||
<h2>
|
||||
<Trans>Situation personnelle</Trans>
|
||||
</h2>
|
||||
<SimpleField dottedName="situation personnelle . RSA" />
|
||||
<SubSection dottedName="dirigeant . indépendant . IJSS" />
|
||||
<SubSection dottedName="dirigeant . indépendant . conjoint collaborateur" />
|
||||
|
||||
<h2>
|
||||
<Trans>Exonérations</Trans>
|
||||
</h2>
|
||||
<SimpleField dottedName="entreprise . ACRE" />
|
||||
<SimpleField dottedName="établissement . ZFU" />
|
||||
<SubSection
|
||||
hideTitle
|
||||
dottedName="entreprise . effectif . seuil"
|
||||
/>
|
||||
|
||||
<SubSection
|
||||
dottedName="dirigeant . indépendant . cotisations et contributions . exonérations"
|
||||
hideTitle
|
||||
/>
|
||||
|
||||
<h2>
|
||||
<Trans>International</Trans>
|
||||
</h2>
|
||||
<SimpleField dottedName="situation personnelle . domiciliation fiscale à l'étranger" />
|
||||
<SubSection
|
||||
dottedName="dirigeant . indépendant . revenus étrangers"
|
||||
hideTitle
|
||||
/>
|
||||
</FormBlock>
|
||||
</Animate.fromTop>
|
||||
|
||||
<div ref={resultsRef}>
|
||||
<Results componentRef={printComponentRef} />
|
||||
</div>
|
||||
<Aide />
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
type SubSectionProp = {
|
||||
dottedName: DottedName
|
||||
hideTitle?: boolean
|
||||
}
|
||||
function SubSection({
|
||||
dottedName: sectionDottedName,
|
||||
hideTitle = false
|
||||
}: SubSectionProp) {
|
||||
const flatRules = useSelector(flatRulesSelector)
|
||||
const ruleTitle = useRule(sectionDottedName)?.title
|
||||
const nextSteps = useSelector(nextStepsSelector)
|
||||
const situation = useSelector(situationSelector)
|
||||
const title = hideTitle ? null : ruleTitle
|
||||
const subQuestions = flatRules.filter(
|
||||
({ dottedName, question }) =>
|
||||
Boolean(question) &&
|
||||
dottedName.startsWith(sectionDottedName) &&
|
||||
(Object.keys(situation).includes(dottedName) ||
|
||||
nextSteps.includes(dottedName))
|
||||
)
|
||||
return (
|
||||
<>
|
||||
{!!subQuestions.length && title && <h3>{title}</h3>}
|
||||
{subQuestions.map(({ dottedName }) => (
|
||||
<SimpleField key={dottedName} dottedName={dottedName} />
|
||||
))}
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
type SimpleFieldProps = {
|
||||
dottedName: DottedName
|
||||
summary?: Rule['summary']
|
||||
question?: Rule['question']
|
||||
}
|
||||
function SimpleField({ dottedName, question, summary }: SimpleFieldProps) {
|
||||
const dispatch = useDispatch()
|
||||
const evaluatedRule = useSelector((state: RootState) => {
|
||||
return ruleAnalysisSelector(state, { dottedName })
|
||||
})
|
||||
const rules = useSelector(flatRulesSelector)
|
||||
const value = useSelector(situationSelector)[dottedName]
|
||||
const [currentValue, setCurrentValue] = useState(value)
|
||||
const dispatchValue = useCallback(
|
||||
value => {
|
||||
dispatch(updateSituation(dottedName, value))
|
||||
dispatch({
|
||||
type: 'STEP_ACTION',
|
||||
name: 'fold',
|
||||
step: dottedName
|
||||
})
|
||||
},
|
||||
[dispatch, dottedName]
|
||||
)
|
||||
const update = (value: unknown) => {
|
||||
dispatchValue(value)
|
||||
setCurrentValue(value)
|
||||
}
|
||||
useEffect(() => {
|
||||
setCurrentValue(value)
|
||||
}, [value])
|
||||
|
||||
if (!evaluatedRule.isApplicable) {
|
||||
return null
|
||||
}
|
||||
return (
|
||||
<div
|
||||
css={`
|
||||
break-inside: avoid;
|
||||
`}
|
||||
>
|
||||
<Animate.fromTop>
|
||||
<Question>
|
||||
<div
|
||||
css={`
|
||||
border-left: 3px solid var(--lightColor);
|
||||
padding-left: 0.6rem;
|
||||
@media print {
|
||||
padding-left: 0 !important;
|
||||
}
|
||||
`}
|
||||
>
|
||||
<p>
|
||||
{question ?? evaluatedRule.question}
|
||||
<Explicable dottedName={dottedName} />
|
||||
</p>
|
||||
<p className="ui__ notice">{summary ?? evaluatedRule.summary}</p>
|
||||
</div>
|
||||
<RuleInput
|
||||
rules={rules}
|
||||
dottedName={dottedName}
|
||||
onChange={update}
|
||||
value={currentValue}
|
||||
/>
|
||||
</Question>
|
||||
</Animate.fromTop>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
const FormBlock = styled.section`
|
||||
max-width: 500px;
|
||||
padding: 0;
|
||||
|
||||
h3 {
|
||||
margin-top: 2rem;
|
||||
}
|
||||
h2 {
|
||||
border-top: 1px solid var(--lighterColor);
|
||||
padding-top: 2rem;
|
||||
break-after: avoid;
|
||||
}
|
||||
|
||||
select,
|
||||
input[type='text'] {
|
||||
font-size: 1.05em;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
ul {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
`
|
||||
|
||||
const Question = styled.div`
|
||||
margin-top: 1em;
|
||||
`
|
||||
const BigInput = styled.div`
|
||||
font-size: 130%;
|
||||
`
|
|
@ -9,6 +9,7 @@ import Overlay from 'Components/Overlay'
|
|||
import { ScrollToTop } from 'Components/utils/Scroll'
|
||||
import { SitePathsContext } from 'Components/utils/withSitePaths'
|
||||
import React, { useContext, useEffect, useRef, useState } from 'react'
|
||||
import emoji from 'react-easy-emoji'
|
||||
import { Helmet } from 'react-helmet'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import { useDispatch, useSelector } from 'react-redux'
|
||||
|
@ -79,58 +80,84 @@ export default function SocialSecurity() {
|
|||
<img
|
||||
className="ui__ hide-mobile"
|
||||
src={businessPlan}
|
||||
css="margin-left: 3rem; max-width: 15rem; transform: translateX(2rem) scale(1.4);"
|
||||
css="margin-left: 3rem; max-width: 15rem; transform: translateX(2rem) translateY(-2.3rem) scale(1.4);"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<>
|
||||
<h2>
|
||||
<Trans i18nKey="gérer.choix.titre">
|
||||
Que souhaitez-vous faire ?
|
||||
</Trans>
|
||||
</h2>
|
||||
{!!régime && (
|
||||
<Link
|
||||
className="ui__ interactive card button-choice lighter-bg"
|
||||
css="width: 100%"
|
||||
to={{
|
||||
pathname: sitePaths.simulateurs[régime],
|
||||
state: {
|
||||
fromGérer: true
|
||||
}
|
||||
}}
|
||||
>
|
||||
<Trans i18nKey="gérer.choix.revenus">
|
||||
<p>Calculer mon revenu net</p>
|
||||
<small>
|
||||
Estimez précisément le montant de vos cotisations grâce au
|
||||
simulateur {{ régime }} de l'Urssaf
|
||||
</small>
|
||||
<section className="ui__ full-width light-bg">
|
||||
<h2 className="ui__ center-flex">
|
||||
<Trans i18nKey="gérer.choix.titre">
|
||||
Que souhaitez-vous faire ?
|
||||
</Trans>
|
||||
</Link>
|
||||
)}
|
||||
{régime !== 'auto-entrepreneur' && (
|
||||
<Link
|
||||
className="ui__ interactive card button-choice lighter-bg "
|
||||
css="width: 100%"
|
||||
to={{
|
||||
pathname: sitePaths.simulateurs.salarié,
|
||||
state: {
|
||||
fromGérer: true
|
||||
}
|
||||
}}
|
||||
>
|
||||
<Trans i18nKey="gérer.choix.embauche">
|
||||
<p>Estimer le montant d’une embauche</p>
|
||||
<small>
|
||||
Calculez le montant total que votre entreprise devra dépenser
|
||||
pour rémunérer votre prochain employé
|
||||
</small>
|
||||
</Trans>
|
||||
</Link>
|
||||
)}
|
||||
</h2>
|
||||
<div className="ui__ center-flex">
|
||||
{company?.statutJuridique === 'EI' &&
|
||||
!company.isAutoEntrepreneur &&
|
||||
process.env.MASTER === false && (
|
||||
<Link
|
||||
className="ui__ interactive card box"
|
||||
to={{
|
||||
pathname: sitePaths.gérer.déclarationIndépendant.index
|
||||
}}
|
||||
>
|
||||
<div className="ui__ big box-icon">{emoji('✍')}</div>
|
||||
<Trans i18nKey="gérer.choix.déclaration">
|
||||
<h3>Remplir ma déclaration de revenus</h3>
|
||||
<p className="ui__ notice">
|
||||
Calculez facilement les montants des charges sociales à
|
||||
reporter dans votre déclaration de revenu au titre de
|
||||
2019
|
||||
</p>
|
||||
</Trans>
|
||||
</Link>
|
||||
)}
|
||||
|
||||
{!!régime && (
|
||||
<Link
|
||||
className="ui__ interactive card box"
|
||||
to={{
|
||||
pathname: sitePaths.simulateurs[régime],
|
||||
state: {
|
||||
fromGérer: true
|
||||
}
|
||||
}}
|
||||
>
|
||||
<div className="ui__ big box-icon">{emoji('💶')}</div>
|
||||
<Trans i18nKey="gérer.choix.revenus">
|
||||
<h3>Calculer mon revenu net de cotisations</h3>
|
||||
<p className="ui__ notice">
|
||||
Estimez précisément le montant de vos cotisations grâce au
|
||||
simulateur {{ régime }} de l'Urssaf
|
||||
</p>
|
||||
</Trans>
|
||||
</Link>
|
||||
)}
|
||||
{régime !== 'auto-entrepreneur' && (
|
||||
<Link
|
||||
className="ui__ interactive card box"
|
||||
css="width: 100%"
|
||||
to={{
|
||||
pathname: sitePaths.simulateurs.salarié,
|
||||
state: {
|
||||
fromGérer: true
|
||||
}
|
||||
}}
|
||||
>
|
||||
<div className="ui__ big box-icon">{emoji('🤝')}</div>
|
||||
<Trans i18nKey="gérer.choix.embauche">
|
||||
<h3>Estimer le montant d’une embauche</h3>
|
||||
<p className="ui__ notice">
|
||||
Calculez le montant total que votre entreprise devra
|
||||
dépenser pour rémunérer votre prochain employé
|
||||
</p>
|
||||
</Trans>
|
||||
</Link>
|
||||
)}
|
||||
</div>
|
||||
</section>
|
||||
<AideOrganismeLocal />
|
||||
<h2>
|
||||
{emoji('🧰 ')}
|
||||
<Trans>Ressources utiles</Trans>
|
||||
</h2>
|
||||
<div
|
||||
|
@ -150,10 +177,10 @@ export default function SocialSecurity() {
|
|||
>
|
||||
<Trans i18nKey="gérer.ressources.embaucher">
|
||||
<p>Découvrir les démarches d’embauche </p>
|
||||
<small>
|
||||
<p className="ui__ notice">
|
||||
La liste des choses à faire pour être sûr de ne rien oublier
|
||||
lors de l’embauche d’un nouveau salarié
|
||||
</small>
|
||||
</p>
|
||||
</Trans>
|
||||
</Link>
|
||||
)}
|
||||
|
@ -164,12 +191,12 @@ export default function SocialSecurity() {
|
|||
>
|
||||
<Trans i18nKey="gérer.ressources.autoEntrepreneur">
|
||||
<p>Accéder au site officiel auto-entrepreneur</p>
|
||||
<small>
|
||||
<p className="ui__ notice">
|
||||
Vous pourrez effectuer votre déclaration de chiffre
|
||||
d'affaire, payer vos cotisations, et plus largement trouver
|
||||
toutes les informations relatives au statut
|
||||
d'auto-entrepreneur
|
||||
</small>
|
||||
</p>
|
||||
</Trans>
|
||||
</a>
|
||||
)}
|
||||
|
@ -179,11 +206,11 @@ export default function SocialSecurity() {
|
|||
>
|
||||
<Trans i18nKey="gérer.ressources.sécuritéSociale">
|
||||
<p>Comprendre la sécurité sociale </p>
|
||||
<small>
|
||||
<p className="ui__ notice">
|
||||
A quoi servent les cotisations sociales ? Le point sur le
|
||||
système de protection sociale dont bénéficient tous les
|
||||
travailleurs en France
|
||||
</small>
|
||||
</p>
|
||||
</Trans>
|
||||
</Link>
|
||||
</div>
|
||||
|
|
|
@ -4,6 +4,8 @@ import React, { useContext } from 'react'
|
|||
import { Trans } from 'react-i18next'
|
||||
import { Route, Switch } from 'react-router'
|
||||
import { NavLink, useLocation } from 'react-router-dom'
|
||||
import AideDéclarationIndépendant from './AideDéclarationIndépendant/index'
|
||||
import { AideDéclarationIndépendantsRécapitulatif } from './AideDéclarationIndépendant/Récapitulatif'
|
||||
import Embaucher from './Embaucher'
|
||||
import Home from './Home'
|
||||
import SécuritéSociale from './SécuritéSociale'
|
||||
|
@ -15,14 +17,26 @@ export default function Gérer() {
|
|||
<>
|
||||
<ScrollToTop key={location.pathname} />
|
||||
<div css="transform: translateY(2rem)">
|
||||
<NavLink
|
||||
to={sitePaths.gérer.index}
|
||||
exact
|
||||
activeClassName="ui__ hide"
|
||||
className="ui__ simple push-left small button"
|
||||
>
|
||||
← <Trans>Retour à mon activité</Trans>
|
||||
</NavLink>
|
||||
{location.pathname ===
|
||||
'/gérer/aide-declaration-independants/récapitulatif' ? (
|
||||
<NavLink
|
||||
to={sitePaths.gérer.déclarationIndépendant.index}
|
||||
exact
|
||||
activeClassName="ui__ hide"
|
||||
className="ui__ simple push-left small button"
|
||||
>
|
||||
← <Trans>Retour à ma déclaration</Trans>
|
||||
</NavLink>
|
||||
) : (
|
||||
<NavLink
|
||||
to={sitePaths.gérer.index}
|
||||
exact
|
||||
activeClassName="ui__ hide"
|
||||
className="ui__ simple push-left small button"
|
||||
>
|
||||
← <Trans>Retour à mon activité</Trans>
|
||||
</NavLink>
|
||||
)}
|
||||
</div>
|
||||
<Switch>
|
||||
<Route exact path={sitePaths.gérer.index} component={Home} />
|
||||
|
@ -31,6 +45,15 @@ export default function Gérer() {
|
|||
component={SécuritéSociale}
|
||||
/>
|
||||
<Route path={sitePaths.gérer.embaucher} component={Embaucher} />
|
||||
<Route
|
||||
exact
|
||||
path={sitePaths.gérer.déclarationIndépendant.index}
|
||||
component={AideDéclarationIndépendant}
|
||||
/>
|
||||
<Route
|
||||
path={sitePaths.gérer.déclarationIndépendant.récapitulatif}
|
||||
component={AideDéclarationIndépendantsRécapitulatif}
|
||||
/>
|
||||
</Switch>
|
||||
</>
|
||||
)
|
||||
|
|
|
@ -6,7 +6,7 @@ import config from 'Components/simulationConfigs/artiste-auteur.yaml'
|
|||
import 'Components/TargetSelection.css'
|
||||
import { IsEmbeddedContext } from 'Components/utils/embeddedContext'
|
||||
import { formatValue } from 'Engine/format'
|
||||
import InputComponent from 'Engine/RuleInput'
|
||||
import RuleInput from 'Engine/RuleInput'
|
||||
import { getRuleFromAnalysis } from 'Engine/rules'
|
||||
import React, { createContext, useContext, useEffect, useState } from 'react'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
|
@ -104,7 +104,7 @@ function SimpleField({ dottedName }: SimpleFieldProps) {
|
|||
</label>
|
||||
</div>
|
||||
<div className="targetInputOrValue">
|
||||
<InputComponent
|
||||
<RuleInput
|
||||
className="targetInput"
|
||||
isTarget
|
||||
dottedName={dottedName}
|
||||
|
|
|
@ -1,295 +0,0 @@
|
|||
import { setSimulationConfig, updateSituation } from 'Actions/actions'
|
||||
import RuleLink from 'Components/RuleLink'
|
||||
import 'Components/TargetSelection.css'
|
||||
import { formatValue } from 'Engine/format'
|
||||
import InputComponent from 'Engine/RuleInput'
|
||||
import React, { useEffect, useState } from 'react'
|
||||
import { useDispatch, useSelector } from 'react-redux'
|
||||
import { RootState } from 'Reducers/rootReducer'
|
||||
import {
|
||||
analysisWithDefaultsSelector,
|
||||
flatRulesSelector,
|
||||
nextStepsSelector,
|
||||
ruleAnalysisSelector,
|
||||
situationSelector
|
||||
} from 'Selectors/analyseSelectors'
|
||||
import styled from 'styled-components'
|
||||
import { DottedName, Rule } from 'Types/rule'
|
||||
import Animate from 'Ui/animate'
|
||||
import { CompanySection } from '../Gérer/Home'
|
||||
import { useRule } from './ArtisteAuteur'
|
||||
|
||||
const simulationConfig = {
|
||||
objectifs: [
|
||||
'dirigeant . indépendant . cotisations et contributions',
|
||||
'dirigeant . rémunération totale'
|
||||
],
|
||||
situation: {
|
||||
dirigeant: 'indépendant'
|
||||
},
|
||||
'unités par défaut': ['€/an']
|
||||
}
|
||||
|
||||
export default function DNRTI() {
|
||||
const dispatch = useDispatch()
|
||||
const analysis = useSelector(analysisWithDefaultsSelector)
|
||||
const company = useSelector(
|
||||
(state: RootState) => state.inFranceApp.existingCompany
|
||||
)
|
||||
dispatch(setSimulationConfig(simulationConfig, true))
|
||||
|
||||
return (
|
||||
<>
|
||||
<h1>
|
||||
Aide à la déclaration de revenus au titre de l'année 2019{' '}
|
||||
<img src="https://img.shields.io/badge/-beta-blue" />
|
||||
<br />
|
||||
<small>Travailleurs indépendants</small>
|
||||
</h1>
|
||||
<p>
|
||||
Nous mettons à disposition un outil d'aide aux déclarations fiscale
|
||||
(revenu) et sociale (DSI). Il vous permet de connaître le montant des
|
||||
charges sociales déductibles à partir de votre résultat net fiscal.
|
||||
</p>
|
||||
<p>
|
||||
Cet outil vous concerne <strong>uniquement</strong> si vous êtes dans
|
||||
les cas suivants :
|
||||
</p>
|
||||
<ul>
|
||||
<li>vous cotisez au régime général des travailleurs indépendants</li>
|
||||
<li>
|
||||
votre entreprise est au régime réel d'imposition et en comptabilité
|
||||
d'engagement
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<FormBlock>
|
||||
<CompanySection company={company} />
|
||||
<h2>Revenus d'activité</h2>
|
||||
<SimpleField
|
||||
dottedName="dirigeant . rémunération totale"
|
||||
question="Quel est votre revenu professionnel en 2019 ?"
|
||||
// summary="Indiquez votre résultat net fiscal avant déduction des charges sociales et exonérations fiscales."
|
||||
/>
|
||||
<SimpleField dottedName="entreprise . date de création" />
|
||||
|
||||
<SubSection dottedName="entreprise . catégorie d'activité" />
|
||||
{/* PLNR */}
|
||||
<SimpleField dottedName="dirigeant . indépendant . PLNR régime général" />
|
||||
<SimpleField dottedName="dirigeant . indépendant . cotisations et contributions . cotisations . retraite complémentaire . taux spécifique PLNR" />
|
||||
<SimpleField dottedName="dirigeant . indépendant . cotisations et contributions . cotisations . déduction tabac" />
|
||||
|
||||
<h3>Situation personnelle</h3>
|
||||
<SimpleField dottedName="situation personnelle . RSA" />
|
||||
<SubSection dottedName="situation personnelle . IJSS" />
|
||||
<SubSection dottedName="dirigeant . indépendant . conjoint collaborateur" />
|
||||
|
||||
<h3>Exonérations</h3>
|
||||
<SimpleField dottedName="entreprise . ACRE" />
|
||||
<SimpleField dottedName="établissement . ZFU" />
|
||||
<SubSection
|
||||
dottedName="dirigeant . indépendant . cotisations et contributions . exonérations"
|
||||
hideTitle
|
||||
/>
|
||||
|
||||
<h3>International</h3>
|
||||
<SimpleField dottedName="situation personnelle . domiciliation fiscale à l'étranger" />
|
||||
<SubSection
|
||||
dottedName="dirigeant . indépendant . revenus étrangers"
|
||||
hideTitle
|
||||
/>
|
||||
{/* <h3>DOM - Départements d'Outre-Mer</h3>
|
||||
<p>
|
||||
<em>Pas encore implémenté</em>
|
||||
</p> */}
|
||||
</FormBlock>
|
||||
<Results />
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
type SubSectionProp = {
|
||||
dottedName: DottedName
|
||||
hideTitle?: boolean
|
||||
}
|
||||
function SubSection({
|
||||
dottedName: sectionDottedName,
|
||||
hideTitle = false
|
||||
}: SubSectionProp) {
|
||||
const flatRules = useSelector(flatRulesSelector)
|
||||
const ruleTitle = useRule(sectionDottedName)?.title
|
||||
const nextSteps = useSelector(nextStepsSelector)
|
||||
const situation = useSelector(situationSelector)
|
||||
const title = hideTitle ? null : ruleTitle
|
||||
|
||||
const subQuestions = flatRules
|
||||
.filter(
|
||||
({ dottedName, question }) =>
|
||||
Boolean(question) &&
|
||||
dottedName.startsWith(sectionDottedName) &&
|
||||
(Object.keys(situation).includes(dottedName) ||
|
||||
nextSteps.includes(dottedName))
|
||||
)
|
||||
.sort(
|
||||
(rule1, rule2) =>
|
||||
nextSteps.indexOf(rule1.dottedName) -
|
||||
nextSteps.indexOf(rule2.dottedName)
|
||||
)
|
||||
return (
|
||||
<>
|
||||
{!!subQuestions.length && title && <h3>{title}</h3>}
|
||||
{subQuestions.map(({ dottedName }) => (
|
||||
<SimpleField key={dottedName} dottedName={dottedName} />
|
||||
))}
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
type SimpleFieldProps = {
|
||||
dottedName: DottedName
|
||||
question?: Rule['question']
|
||||
}
|
||||
function SimpleField({ dottedName, question }: SimpleFieldProps) {
|
||||
const dispatch = useDispatch()
|
||||
const analysis = useSelector((state: RootState) => {
|
||||
return ruleAnalysisSelector(state, { dottedName })
|
||||
})
|
||||
const rules = useSelector((state: RootState) => state.rules)
|
||||
const value = useSelector(situationSelector)[dottedName]
|
||||
const [currentValue, setCurrentValue] = useState(value)
|
||||
const update = (value: unknown) => {
|
||||
dispatch(updateSituation(dottedName, value))
|
||||
dispatch({
|
||||
type: 'STEP_ACTION',
|
||||
name: 'fold',
|
||||
step: dottedName
|
||||
})
|
||||
setCurrentValue(value)
|
||||
}
|
||||
useEffect(() => {
|
||||
setCurrentValue(value)
|
||||
}, [value])
|
||||
|
||||
if (!analysis.isApplicable) {
|
||||
return null
|
||||
}
|
||||
return (
|
||||
<Animate.fromTop>
|
||||
<Question>
|
||||
<p
|
||||
css={`
|
||||
border-left: 4px solid var(--lightColor);
|
||||
border-radius: 3px;
|
||||
padding-left: 12px;
|
||||
margin-left: -12px;
|
||||
`}
|
||||
>
|
||||
{question ?? analysis.question}
|
||||
</p>
|
||||
<InputComponent
|
||||
rules={rules}
|
||||
dottedName={dottedName}
|
||||
onChange={update}
|
||||
value={currentValue}
|
||||
/>
|
||||
{/* <Field dottedName={dottedName} onChange={onChange} /> */}
|
||||
</Question>
|
||||
</Animate.fromTop>
|
||||
)
|
||||
}
|
||||
|
||||
function Results() {
|
||||
const cotisationsRule = useRule(
|
||||
'dirigeant . indépendant . cotisations et contributions'
|
||||
)
|
||||
const revenusNet = useRule(
|
||||
'dirigeant . indépendant . revenu net de cotisations'
|
||||
)
|
||||
const nonDeductible = useRule(
|
||||
'dirigeant . indépendant . cotisations et contributions . CSG et CRDS'
|
||||
)
|
||||
|
||||
function Link({ cotisation }) {
|
||||
return (
|
||||
<p className="ui__ lead">
|
||||
<RuleLink dottedName={cotisation.dottedName}>
|
||||
{cotisation.nodeValue
|
||||
? formatValue({
|
||||
value: cotisation.nodeValue,
|
||||
language: 'fr',
|
||||
unit: '€',
|
||||
maximumFractionDigits: 0
|
||||
})
|
||||
: '-'}
|
||||
</RuleLink>
|
||||
</p>
|
||||
)
|
||||
}
|
||||
if (!cotisationsRule.nodeValue) {
|
||||
return null
|
||||
}
|
||||
return (
|
||||
<ResultBlock>
|
||||
<Animate.fromTop>
|
||||
<ResultSubTitle>Vos cotisations</ResultSubTitle>
|
||||
<Link cotisation={cotisationsRule} />
|
||||
<ResultSubTitle>Vos revenus net</ResultSubTitle>
|
||||
<Link cotisation={revenusNet} />
|
||||
<ResultSubTitle>Cotisations non déductibles</ResultSubTitle>
|
||||
<p className="ui__ notice">
|
||||
Ce montant doit être réintégré au revenu net dans votre déclaration
|
||||
fiscale.
|
||||
</p>
|
||||
<Link cotisation={nonDeductible} />
|
||||
</Animate.fromTop>
|
||||
</ResultBlock>
|
||||
)
|
||||
}
|
||||
|
||||
const FormWrapper = styled.div`
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
|
||||
ul {
|
||||
padding: 0;
|
||||
}
|
||||
`
|
||||
|
||||
const FormBlock = styled.section`
|
||||
width: 63%;
|
||||
padding: 0;
|
||||
|
||||
h3 {
|
||||
margin-top: 50px;
|
||||
}
|
||||
|
||||
select,
|
||||
input[type='text'] {
|
||||
font-size: 1.05em;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
`
|
||||
|
||||
const Question = styled.div`
|
||||
margin-top: 1em;
|
||||
`
|
||||
|
||||
const ResultBlock = styled.section`
|
||||
position: sticky;
|
||||
top: 3%;
|
||||
padding: 3%;
|
||||
width: 34%;
|
||||
background: var(--lightestColor);
|
||||
`
|
||||
|
||||
const ResultSubTitle = styled.h4`
|
||||
&:not(:first-child) {
|
||||
margin-top: 2em;
|
||||
}
|
||||
`
|
||||
|
||||
const ResultNumber = styled.strong`
|
||||
display: block;
|
||||
text-align: right;
|
||||
`
|
|
@ -8,7 +8,6 @@ import { Link, useLocation } from 'react-router-dom'
|
|||
import ArtisteAuteur from './ArtisteAuteur'
|
||||
import AssimiléSalarié from './AssimiléSalarié'
|
||||
import AutoEntrepreneur from './AutoEntrepreneur'
|
||||
import DNRTI from './dnrti'
|
||||
import Home from './Home'
|
||||
import Indépendant from './Indépendant'
|
||||
import Salarié from './Salarié'
|
||||
|
@ -28,7 +27,7 @@ export default function Simulateurs() {
|
|||
return (
|
||||
<>
|
||||
<ScrollToTop key={pathname} />
|
||||
{pathname !== sitePaths.simulateurs.index && !pathname.match('dnrti') && (
|
||||
{pathname !== sitePaths.simulateurs.index && (
|
||||
<div css="transform: translateY(2rem);">
|
||||
{lastState?.fromGérer && (
|
||||
<Link
|
||||
|
@ -79,7 +78,6 @@ export default function Simulateurs() {
|
|||
path={sitePaths.simulateurs['artiste-auteur']}
|
||||
component={ArtisteAuteur}
|
||||
/>
|
||||
<Route path={sitePaths.simulateurs.dnrti} component={DNRTI} />
|
||||
</Switch>
|
||||
</>
|
||||
)
|
||||
|
|
|
@ -88,7 +88,17 @@ export const constructLocalizedSitePath = (language: string) => {
|
|||
gérer: {
|
||||
index: t('path.gérer.index', '/gérer'),
|
||||
embaucher: t('path.gérer.embaucher', '/embaucher'),
|
||||
sécuritéSociale: t('path.gérer.sécuritéSociale', '/sécurité-sociale')
|
||||
sécuritéSociale: t('path.gérer.sécuritéSociale', '/sécurité-sociale'),
|
||||
déclarationIndépendant: {
|
||||
index: t(
|
||||
'path.gérer.déclaration-indépendant.index',
|
||||
'/aide-declaration-independants'
|
||||
),
|
||||
récapitulatif: t(
|
||||
'path.gérer.déclaration-indépendant.récapitulatif',
|
||||
'/récapitulatif'
|
||||
)
|
||||
}
|
||||
},
|
||||
simulateurs: {
|
||||
index: t('path.simulateurs.index', '/simulateurs'),
|
||||
|
@ -106,8 +116,7 @@ export const constructLocalizedSitePath = (language: string) => {
|
|||
'/comparaison-régimes-sociaux'
|
||||
),
|
||||
salarié: t('path.simulateurs.salarié', '/salarié'),
|
||||
'artiste-auteur': t('path.simulateurs.artiste-auteur', '/artiste-auteur'),
|
||||
dnrti: t('path.simulateurs.dnrti', '/dnrti')
|
||||
'artiste-auteur': t('path.simulateurs.artiste-auteur', '/artiste-auteur')
|
||||
},
|
||||
économieCollaborative: {
|
||||
index: t('path.économieCollaborative.index', '/économie-collaborative'),
|
||||
|
|
|
@ -7,6 +7,7 @@ export type Rule = {
|
|||
unité: string
|
||||
unit: string
|
||||
name?: string
|
||||
summary?: string
|
||||
title?: string
|
||||
defaultValue: any
|
||||
icons: string
|
||||
|
|
|
@ -11,7 +11,7 @@ plafonnement inactif:
|
|||
formule:
|
||||
encadrement:
|
||||
valeur: 1000 €
|
||||
plafond: false
|
||||
plafond: non
|
||||
|
||||
exemples:
|
||||
- valeur attendue: 1000
|
||||
|
|
|
@ -106,19 +106,21 @@ exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - a
|
|||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - avec charges 2`] = `"[10982,10982,10742,4,19,23]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - échelle de rémunération 1`] = `"[169,169,139,0,1,1]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - échelle de rémunération 1`] = `"[0,0,2488,0,0,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - échelle de rémunération 2`] = `"[738,738,323,0,2,2]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - échelle de rémunération 2`] = `"[169,169,139,0,1,1]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - échelle de rémunération 3`] = `"[2446,2446,2588,2,5,6]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - échelle de rémunération 3`] = `"[738,738,323,0,2,2]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - échelle de rémunération 4`] = `"[5291,5291,5306,4,10,12]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - échelle de rémunération 4`] = `"[2446,2446,2588,2,5,6]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - échelle de rémunération 5`] = `"[10982,10982,10742,4,19,23]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - échelle de rémunération 5`] = `"[5291,5291,5306,4,10,12]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - échelle de rémunération 6`] = `"[25971,28055,27050,4,46,59]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - échelle de rémunération 6`] = `"[10982,10982,10742,4,19,23]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - échelle de rémunération 7`] = `"[46812,57017,52684,4,46,119]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - échelle de rémunération 7`] = `"[25971,28055,27050,4,46,59]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Assimilé salarié - échelle de rémunération 8`] = `"[46812,57017,52684,4,46,119]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - ACRE 1`] = `"[9349,9349,2046,2,0,0]"`;
|
||||
|
||||
|
@ -140,19 +142,21 @@ exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - av
|
|||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - avec charges 2`] = `"[15480,15480,7163,4,14,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - échelle de rémunération 1`] = `"[871,871,60,0,0,0]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - échelle de rémunération 1`] = `"[87,87,6,0,0,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - échelle de rémunération 2`] = `"[1742,1742,119,0,0,0]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - échelle de rémunération 2`] = `"[871,871,60,0,0,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - échelle de rémunération 3`] = `"[4354,4354,1023,1,0,0]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - échelle de rémunération 3`] = `"[1742,1742,119,0,0,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - échelle de rémunération 4`] = `"[8709,8709,2046,2,0,0]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - échelle de rémunération 4`] = `"[4354,4354,1023,1,0,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - échelle de rémunération 5`] = `"[17417,17417,4093,3,8,0]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - échelle de rémunération 5`] = `"[8709,8709,2046,2,0,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - échelle de rémunération 6`] = `"[43543,43543,10232,4,20,0]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - échelle de rémunération 6`] = `"[17417,17417,4093,3,8,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - échelle de rémunération 7`] = `"[84367,87085,20465,4,40,0]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - échelle de rémunération 7`] = `"[43543,43543,10232,4,20,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Auto-entrepreneur - échelle de rémunération 8`] = `"[84367,87085,20465,4,40,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - ACRE 1`] = `"[8215,8215,6018,4,21,0]"`;
|
||||
|
||||
|
@ -174,19 +178,21 @@ exports[`calculate simulations-rémunération-dirigeant: Indépendant - avec ch
|
|||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - avec charges 2`] = `"[13769,13769,10084,4,21,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - échelle de rémunération 1`] = `"[null,null,0,3,21,0]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - échelle de rémunération 1`] = `"[-1044,-1044,0,3,21,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - échelle de rémunération 2`] = `"[616,616,470,3,21,0]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - échelle de rémunération 2`] = `"[-225,-225,0,3,21,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - échelle de rémunération 3`] = `"[3084,3084,2267,3,21,0]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - échelle de rémunération 3`] = `"[616,616,470,3,21,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - échelle de rémunération 4`] = `"[6795,6795,4977,4,21,0]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - échelle de rémunération 4`] = `"[3084,3084,2267,3,21,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - échelle de rémunération 5`] = `"[13769,13769,10084,4,21,0]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - échelle de rémunération 5`] = `"[6795,6795,4977,4,21,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - échelle de rémunération 6`] = `"[30434,33997,24912,4,48,0]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - échelle de rémunération 6`] = `"[13769,13769,10084,4,21,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - échelle de rémunération 7`] = `"[56273,69895,36431,4,56,0]"`;
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - échelle de rémunération 7`] = `"[30434,33997,24912,4,48,0]"`;
|
||||
|
||||
exports[`calculate simulations-rémunération-dirigeant: Indépendant - échelle de rémunération 8`] = `"[56273,69895,36431,4,56,0]"`;
|
||||
|
||||
exports[`calculate simulations-salarié: JEI 1`] = `"[3440,0,0,3000,2353,2187]"`;
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
échelle de rémunération:
|
||||
- dirigeant . rémunération totale: 100
|
||||
- dirigeant . rémunération totale: 1000
|
||||
- dirigeant . rémunération totale: 2000
|
||||
- dirigeant . rémunération totale: 5000
|
||||
|
|
|
@ -9322,6 +9322,13 @@ react-test-renderer@^16.0.0-0:
|
|||
react-is "^16.8.6"
|
||||
scheduler "^0.18.0"
|
||||
|
||||
react-to-print@^2.5.1:
|
||||
version "2.5.1"
|
||||
resolved "https://registry.yarnpkg.com/react-to-print/-/react-to-print-2.5.1.tgz#eaaff4248910f179788ab15a593ceb3e07527b8c"
|
||||
integrity sha512-HhuujwTmuGYB+yBq52y1pwiv0aooaLTqksMJ6cGKWy+aT+x6zponitZd54swiAeILndxJ7oO+X1F/93XyfT/JA==
|
||||
dependencies:
|
||||
prop-types "^15.7.2"
|
||||
|
||||
react-transition-group@^1.2.0:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-1.2.1.tgz#e11f72b257f921b213229a774df46612346c7ca6"
|
||||
|
|
Loading…
Reference in New Issue