Nouvel assistant à la déclaration de revenu des indépendants
|
@ -0,0 +1,780 @@
|
|||
DRI:
|
||||
valeur: non
|
||||
remplace:
|
||||
- règle: année
|
||||
par: 2021
|
||||
- règle: entreprise . catégorie juridique . EI . auto-entrepreneur . défaut
|
||||
par: non
|
||||
|
||||
DRI . cas exclus:
|
||||
applicable si:
|
||||
une de ces conditions:
|
||||
- entreprise . catégorie juridique . EI . auto-entrepreneur
|
||||
- entreprise . catégorie juridique . SAS
|
||||
- entreprise . catégorie juridique . autre
|
||||
- toutes ces conditions:
|
||||
- entreprise . catégorie juridique . SARL
|
||||
- entreprise . catégorie juridique . SARL . unipersonnelle = non
|
||||
- entreprise . date de création >= 01/01/2022
|
||||
- entreprise . imposition . IR . type de bénéfices . BA
|
||||
|
||||
variations:
|
||||
- si: entreprise . imposition . IR . type de bénéfices . BA
|
||||
alors:
|
||||
texte: |-
|
||||
### Nous ne proposons pas encore d'aide pour les entreprises agricoles
|
||||
|
||||
{{ désolé }}
|
||||
- si: entreprise . catégorie juridique . autre
|
||||
alors:
|
||||
texte: |-
|
||||
### Nous ne proposons pas encore d'aide pour votre type d'entreprise
|
||||
|
||||
{{ désolé }}
|
||||
- si: entreprise . catégorie juridique . EI . auto-entrepreneur
|
||||
alors:
|
||||
texte: |-
|
||||
### Nous ne proposons pas encore d'aide pour les auto-entrepreneurs
|
||||
|
||||
{{ désolé }}
|
||||
|
||||
{{ autres outils }}
|
||||
|
||||
- si: entreprise . catégorie juridique . SAS
|
||||
alors:
|
||||
texte: |-
|
||||
### Nous ne proposons pas encore d'aide pour les dirigeants de SAS(U)
|
||||
|
||||
{{ désolé }}
|
||||
|
||||
{{ autres outils }}
|
||||
- si:
|
||||
une de ces conditions:
|
||||
- toutes ces conditions:
|
||||
- entreprise . catégorie juridique . SARL
|
||||
- entreprise . catégorie juridique . SARL . unipersonnelle = non
|
||||
- entreprise . catégorie juridique . SELARL
|
||||
- entreprise . catégorie juridique . SELAS
|
||||
alors:
|
||||
texte: |-
|
||||
### Nous ne proposons pas encore d'aide pour les dirigeant de {{ entreprise . catégorie juridique }}
|
||||
|
||||
{{ désolé }}
|
||||
|
||||
{{ autres outils }}
|
||||
- si: entreprise . date de création >= 01/01/2022
|
||||
alors:
|
||||
texte: |-
|
||||
### Vous avez créé votre entreprise en 2022
|
||||
|
||||
Les revenus de cette entreprise seront à déclarer l'année prochaine.
|
||||
|
||||
Vous pouvez estimer le montant de votre revenu net après impôt grâce aux
|
||||
simulateurs disponibles sur ce site.
|
||||
|
||||
DRI . cas exclus . désolé:
|
||||
texte: |-
|
||||
Nous en sommes désolés. Si vous rencontrez des difficultés à remplir votre déclaration,
|
||||
rapprochez-vous de votre comptable. Si vous êtes sans comptable, vous pouvez
|
||||
[contacter le service des impôts](https://www.impots.gouv.fr/contacts).
|
||||
|
||||
DRI . cas exclus . autres outils:
|
||||
texte: |-
|
||||
Ce site propose d'autres outils qui pourraient vous intéresser (par exemple un
|
||||
simulateur de revenu net après impôt).
|
||||
|
||||
DRI . nombre de déclarations:
|
||||
somme:
|
||||
- valeur: entreprise . durée d'activité . en fin d'année
|
||||
unité: an
|
||||
- 0.5
|
||||
plancher: 0
|
||||
arrondi: oui
|
||||
unité: ''
|
||||
DRI . accompagnement imposition par défaut: nombre de déclarations < 5
|
||||
|
||||
DRI . accompagnement imposition:
|
||||
titre: Assistant en mode accompagnement
|
||||
non applicable si: DRI . cas exclus
|
||||
par défaut: accompagnement imposition par défaut
|
||||
|
||||
DRI . accompagnement imposition . type:
|
||||
variations:
|
||||
- si: entreprise . catégorie juridique . EI
|
||||
alors:
|
||||
texte: |-
|
||||
Votre entreprise est une **entreprise individuelle**. {{ situation }}
|
||||
- si: entreprise . catégorie juridique . SARL . unipersonnelle
|
||||
alors:
|
||||
texte: |-
|
||||
Votre entreprise est une **EURL**. {{ situation }}
|
||||
|
||||
DRI . accompagnement imposition . type . situation:
|
||||
variations:
|
||||
- si: entreprise . imposition . IS
|
||||
alors:
|
||||
texte: Vous avez choisi l'option pour être imposé à l'**impôt sur les sociétés** (IS).
|
||||
- si: entreprise . catégorie juridique . EI
|
||||
alors:
|
||||
texte: |-
|
||||
Par défaut, ce type d'entreprise est imposée à l'**impôt sur le revenu** (IR),
|
||||
mais il y a souvent des exceptions.
|
||||
- si: entreprise . catégorie juridique . SARL . unipersonnelle
|
||||
alors:
|
||||
texte: |-
|
||||
Par défaut, ce type d'entreprise est imposée à l'**impôt sur le revenu** (IR),
|
||||
mais il y a souvent des exceptions.
|
||||
|
||||
DRI . accompagnement imposition . type . exceptions:
|
||||
variations:
|
||||
- si: entreprise . catégorie juridique . EI
|
||||
alors:
|
||||
texte: |-
|
||||
Par défaut les entreprises individuelles sont imposées à l'impôt sur le revenu. Cependant,
|
||||
votre entreprise peut être imposée à l'**impôt sur les société** si :
|
||||
- c'est une **entreprise individuelle à responsabilité limitée** (EIRL),
|
||||
- et **une demande a été envoyée aux impôts** pour choisir l'impôt sur les sociétés.
|
||||
|
||||
Ce choix a pu être fait pour vous permettre de vous verser des dividendes par exemple.
|
||||
|
||||
{{comptable}}
|
||||
- si: entreprise . catégorie juridique . SARL . unipersonnelle
|
||||
alors:
|
||||
texte: |-
|
||||
Par défaut les EURL sont imposées à l'impôt sur le revenu.
|
||||
|
||||
Votre entreprise est imposée à l'**impôt sur les sociétés** (IS) si **une demande a été envoyée aux impôts**
|
||||
pour choisir l'impôt sur les sociétés. Cette demande a pu avoir lieu lors de la création ou après.
|
||||
|
||||
> Il est assez fréquent que les EURL choisissent l'option de l'impôt sur les sociétés. Ce choix permet
|
||||
de se verser des dividendes par exemple.
|
||||
|
||||
{{comptable}}
|
||||
|
||||
DRI . comptable:
|
||||
texte: En cas de doutes, **demandez à votre comptable**.
|
||||
|
||||
DRI . accompagnement imposition . bénéfice:
|
||||
texte: |-
|
||||
L'activité principale de votre entreprise est
|
||||
« **{{ entreprise . activité principale }}** ».
|
||||
{{situation}}
|
||||
DRI . accompagnement imposition . bénéfice . situation:
|
||||
variations:
|
||||
- si:
|
||||
toutes ces conditions:
|
||||
- entreprise . imposition . IR . type de bénéfices . BIC et BNC possibles
|
||||
- entreprise . imposition . IR . type de bénéfices . BNC
|
||||
alors:
|
||||
texte: En général les **bénéfices** de cette activité sont de type **non commerciaux** (BNC), mais il peut y avoir des exceptions.
|
||||
- si:
|
||||
toutes ces conditions:
|
||||
- entreprise . imposition . IR . type de bénéfices . BIC et BNC possibles
|
||||
- entreprise . imposition . IR . type de bénéfices . BIC
|
||||
alors:
|
||||
texte: Dans le cas de votre entreprise, les bénéfices sont de type **industriel et commerciaux** (BIC).
|
||||
- si: entreprise . imposition . IR . type de bénéfices . BIC
|
||||
alors:
|
||||
texte: Les **bénéfices** de ce type d'activité sont de type **industriel et commerciaux** (BIC)
|
||||
|
||||
- si: entreprise . imposition . IR . type de bénéfices . BNC
|
||||
alors:
|
||||
texte: Les **bénéfices** de cette activité sont de type **non commerciaux** (BNC)
|
||||
|
||||
DRI . accompagnement imposition . bénéfice . explications:
|
||||
texte: |-
|
||||
La déclaration de revenus contient **trois sections principales** pour déclarer les
|
||||
bénéfices de votre activité :
|
||||
|
||||
- les bénéfices de type **industriels et commerciaux** (BIC)
|
||||
- les bénéfices de type **non commerciaux** (BNC)
|
||||
- les bénéfices de type **agricoles** (BA)
|
||||
|
||||
Dans votre cas, vous **remplirez la section {{ entreprise . imposition . IR . type de bénéfices}}**
|
||||
pour déclarer les bénéfices (ou déficits) de votre entreprise.
|
||||
|
||||
À noter : le type de bénéfice change la façon dont le comptable doit gérer l'entreprise. Par
|
||||
exemple, cela détermine s'il doit utiliser une comptabilité de trésorerie ou d'engagement et quelle
|
||||
liasse fiscale il doit remplir.
|
||||
|
||||
DRI . accompagnement imposition . bénéfice . exceptions:
|
||||
applicable si: entreprise . imposition . IR . type de bénéfices . BIC et BNC possibles
|
||||
texte: |-
|
||||
Les bénéfices de votre activité peuvent être de type **industriels et commerciaux** (BIC) si :
|
||||
- la majeure partie de votre activité consiste en la **vente de bien**,
|
||||
- ou vous créez dans le but de **reproduire et vendre** votre création (par exemple, un photographe d'illustration qui prend des photos pour le compte de clients).
|
||||
|
||||
{{comptable}}
|
||||
|
||||
DRI . accompagnement imposition . régime memento fiscal:
|
||||
question: |-
|
||||
Dans la section « **vos obligations fiscales** »,
|
||||
quel est le « **régime d'imposition** » inscrit sur la première ligne ?
|
||||
une possibilité:
|
||||
choix obligatoire: oui
|
||||
possibilités:
|
||||
- RSI
|
||||
- RN
|
||||
- DECC
|
||||
- SPECIAL
|
||||
- MICROE
|
||||
|
||||
DRI . accompagnement imposition . régime memento fiscal . RSI:
|
||||
non applicable si: entreprise . imposition . IR . type de bénéfices . BNC
|
||||
titre: RSI - Réel simplifié d'imposition
|
||||
valeur: régime memento fiscal = 'RSI'
|
||||
remplace:
|
||||
règle: entreprise . imposition . régime
|
||||
par: "'réel simplifié'"
|
||||
DRI . accompagnement imposition . régime memento fiscal . RN:
|
||||
non applicable si: entreprise . imposition . IR . type de bénéfices . BNC
|
||||
titre: RN - Réel normal
|
||||
valeur: régime memento fiscal = 'RN'
|
||||
remplace:
|
||||
règle: entreprise . imposition . régime
|
||||
par: "'réel normal'"
|
||||
DRI . accompagnement imposition . régime memento fiscal . DECC:
|
||||
applicable si: entreprise . imposition . IR . type de bénéfices . BNC
|
||||
titre: DECC - Régime de la déclaration contrôlée
|
||||
valeur: régime memento fiscal = 'DECC'
|
||||
remplace:
|
||||
règle: entreprise . imposition . régime
|
||||
par: "'déclaration contrôlée'"
|
||||
DRI . accompagnement imposition . régime memento fiscal . SPECIAL:
|
||||
applicable si: entreprise . imposition . IR . type de bénéfices . BNC
|
||||
titre: SPECIAL - Régime spécial des bénéfices non commerciaux
|
||||
description: Le régime spécial correspond au **régime de la micro-entreprise** pour les bénéfices de type non commerciaux (BNC)
|
||||
valeur: régime memento fiscal = 'SPECIAL'
|
||||
remplace:
|
||||
règle: entreprise . imposition . régime
|
||||
par: "'micro-entreprise'"
|
||||
DRI . accompagnement imposition . régime memento fiscal . MICROE:
|
||||
non applicable si: entreprise . imposition . IR . type de bénéfices . BNC
|
||||
titre: MICROE - Régime des micro-entreprises
|
||||
valeur: régime memento fiscal = 'MICROE'
|
||||
remplace:
|
||||
règle: entreprise . imposition . régime
|
||||
par: "'micro-entreprise'"
|
||||
|
||||
DRI . accompagnement imposition . régime:
|
||||
applicable si:
|
||||
une de ces conditions:
|
||||
- entreprise . imposition . régime . réel normal
|
||||
- entreprise . imposition . régime . réel simplifié
|
||||
- entreprise . imposition . régime . déclaration contrôlée
|
||||
- entreprise . imposition . régime . micro-entreprise
|
||||
variations:
|
||||
- si: entreprise . imposition . régime . réel normal
|
||||
alors:
|
||||
texte: Votre entreprise est imposée au **régime réel normal** (RN).
|
||||
- si: entreprise . imposition . régime . réel simplifié
|
||||
alors:
|
||||
texte: Votre entreprise est imposée au **régime réel simplifié** (RSI).
|
||||
- si: entreprise . imposition . régime . déclaration contrôlée
|
||||
alors:
|
||||
texte: Votre entreprise est imposée au **régime de la déclaration contrôlée**.
|
||||
- si: entreprise . imposition . régime . micro-entreprise
|
||||
alors:
|
||||
texte: Votre entreprise est imposée au régime de la **micro-entreprise**.
|
||||
|
||||
DRI . accompagnement imposition . explications:
|
||||
texte: |-
|
||||
Votre régime d'imposition change le niveau de détail demandé lors du remplissage des obligations
|
||||
comptables.
|
||||
|
||||
{{ situation }}
|
||||
|
||||
DRI . accompagnement imposition . explications . situation:
|
||||
variations:
|
||||
- si: entreprise . imposition . régime . micro-entreprise
|
||||
alors:
|
||||
texte:
|
||||
Avec le régime de la micro-entreprise, vous n'avez pas à détailler les dépenses de votre
|
||||
entreprise. Le bénéfice imposable est calculé en prenant un **pourcentage du chiffre d'affaires**.
|
||||
|
||||
C'est ce qu'on appelle l'**abattement forfaitaire**.
|
||||
|
||||
- si: entreprise . imposition . régime . réel normal
|
||||
alors:
|
||||
texte: |-
|
||||
Avec le régime réel normal, vous aurez à fournir un bilan comptable complet, qu'il vous faudra déclarer avec un logiciel comptable spécifique (vous ne pourrez pas déclarer le résultat de l'entreprise directement sur impot.gouv.fr)
|
||||
|
||||
Il est donc très fortement conseillé d'avoir un comptable.
|
||||
- si: entreprise . imposition . régime . réel simplifié
|
||||
alors:
|
||||
texte: Avec le régime réel simplifié, vous devrez déposer un bilan comptable simplifié. Il est donc conseillé d'avoir un comptable.
|
||||
- si: entreprise . imposition . régime . déclaration contrôlée
|
||||
alors:
|
||||
texte: Avec le régime de la déclaration contrôlée, vous devrez tenir une comptabilité complète, et établir les comptes annuels en fin d'année. Il est donc conseillé d'avoir un comptable.
|
||||
|
||||
DRI . liasse:
|
||||
valeur: oui
|
||||
applicable si:
|
||||
une de ces conditions:
|
||||
- réel simplifié
|
||||
- réel normal
|
||||
- déclaration contrôlée
|
||||
|
||||
DRI . liasse . réel simplifié:
|
||||
applicable si: entreprise . imposition . régime . réel simplifié
|
||||
valeur: oui
|
||||
title: Liasse fiscale du régime réel simplifié
|
||||
meta:
|
||||
formulaire: Formulaire 2033-SD
|
||||
|
||||
DRI . liasse . réel simplifié . Déductions:
|
||||
applicable si: entreprise . imposition . IR
|
||||
meta:
|
||||
section: oui
|
||||
|
||||
DRI . liasse . réel simplifié . c342:
|
||||
unité: €
|
||||
meta:
|
||||
facultatif: oui
|
||||
applicable si: entreprise . imposition . IR
|
||||
titre: '342'
|
||||
résumé: Déductions
|
||||
|
||||
DRI . liasse . réel simplifié . résultat:
|
||||
applicable si: entreprise . imposition . IR
|
||||
titre: Résultat fiscal après imputation des déficits
|
||||
meta:
|
||||
section: oui
|
||||
|
||||
DRI . liasse . réel simplifié . c370:
|
||||
unité: €
|
||||
titre: '370'
|
||||
résumé: Bénéfice
|
||||
applicable si: entreprise . imposition . IR
|
||||
|
||||
DRI . liasse . réel simplifié . c372:
|
||||
unité: €
|
||||
titre: '372'
|
||||
résumé: Déficit
|
||||
applicable si: entreprise . imposition . IR
|
||||
|
||||
DRI . liasse . réel simplifié . Divers:
|
||||
meta:
|
||||
section: oui
|
||||
|
||||
DRI . liasse . réel simplifié . c381:
|
||||
unité: €
|
||||
titre: '381'
|
||||
meta:
|
||||
facultatif: oui
|
||||
résumé: Primes et cotisations complémentaires facultatives
|
||||
|
||||
DRI . liasse . réel simplifié . c326:
|
||||
titre: '326'
|
||||
unité: €
|
||||
résumé: dont montant déductible des cotisations sociales obligatoires
|
||||
|
||||
DRI . liasse . réel simplifié . plus-values et moins-values:
|
||||
applicable si: entreprise . imposition . IR
|
||||
meta:
|
||||
section: oui
|
||||
|
||||
DRI . liasse . réel simplifié . c596:
|
||||
applicable si: entreprise . imposition . IR
|
||||
titre: '596'
|
||||
unité: €
|
||||
résumé: Court terme
|
||||
|
||||
DRI . liasse . réel normal:
|
||||
applicable si: entreprise . imposition . régime . réel normal
|
||||
valeur: oui
|
||||
title: Liasse fiscale du régime réel normal
|
||||
meta:
|
||||
formulaire: Formulaire 2052-SD et 2053-SD
|
||||
|
||||
DRI . liasse . déclaration contrôlée:
|
||||
applicable si: entreprise . imposition . régime . déclaration contrôlée
|
||||
valeur: oui
|
||||
title: Déclaration contrôlée
|
||||
meta:
|
||||
formulaire: Formulaire 2035-SD
|
||||
|
||||
DRI . liasse . déclaration contrôlée . impôts et taxe:
|
||||
meta:
|
||||
section: oui
|
||||
|
||||
DRI . liasse . déclaration contrôlée . BV:
|
||||
résumé: contribution sociale généralisée déductible
|
||||
unité: €
|
||||
|
||||
DRI . liasse . déclaration contrôlée . charges sociales personnelles:
|
||||
meta:
|
||||
section: oui
|
||||
|
||||
DRI . liasse . déclaration contrôlée . BT:
|
||||
résumé: dont obligatoires
|
||||
unité: €
|
||||
|
||||
DRI . liasse . déclaration contrôlée . BZ:
|
||||
résumé: dont cotisations facultatives Madelin
|
||||
meta:
|
||||
facultatif: oui
|
||||
unité: €
|
||||
|
||||
DRI . liasse . déclaration contrôlée . BU:
|
||||
résumé: dont facultatives aux nouveaux plans d'épargne retraite
|
||||
meta:
|
||||
facultatif: oui
|
||||
unité: €
|
||||
|
||||
DRI . liasse . déclaration contrôlée . excedents:
|
||||
meta:
|
||||
section: oui
|
||||
|
||||
DRI . liasse . déclaration contrôlée . CB:
|
||||
résumé: Plus-value à court terme
|
||||
unité: €
|
||||
meta:
|
||||
facultatif: oui
|
||||
|
||||
DRI . liasse . déclaration contrôlée . CE:
|
||||
résumé: Total
|
||||
unité: €
|
||||
|
||||
DRI . liasse . déclaration contrôlée . insuffisance:
|
||||
meta:
|
||||
section: oui
|
||||
|
||||
DRI . liasse . déclaration contrôlée . CK:
|
||||
résumé: Moins-value à court terme
|
||||
unité: €
|
||||
meta:
|
||||
facultatif: oui
|
||||
|
||||
DRI . liasse . déclaration contrôlée . divers à déduire:
|
||||
meta:
|
||||
section: oui
|
||||
|
||||
DRI . liasse . déclaration contrôlée . CS:
|
||||
résumé: dont exonération sur le bénéfice « zone franche urbaine entrepreneur »
|
||||
unité: €
|
||||
meta:
|
||||
facultatif: oui
|
||||
|
||||
DRI . liasse . déclaration contrôlée . CT:
|
||||
résumé: dont l'abondement sur l'épargne salariale
|
||||
unité: €
|
||||
meta:
|
||||
facultatif: oui
|
||||
|
||||
DRI . liasse . déclaration contrôlée . AW:
|
||||
unité: €
|
||||
résumé: dont exonération sur le bénéfice « entreprise nouvelle »
|
||||
meta:
|
||||
facultatif: oui
|
||||
|
||||
DRI . liasse . déclaration contrôlée . CO:
|
||||
unité: €
|
||||
résumé: dont exonération sur le bénéfice « jeunes artistes »
|
||||
meta:
|
||||
facultatif: oui
|
||||
|
||||
DRI . liasse . déclaration contrôlée . CU:
|
||||
résumé: dont exonération sur le bénéfice « jeunes entreprise innovantes »
|
||||
unité: €
|
||||
meta:
|
||||
facultatif: oui
|
||||
|
||||
DRI . liasse . déclaration contrôlée . CQ:
|
||||
résumé: dont déduction « médecin conventionnés de secteur 1 »
|
||||
unité: €
|
||||
meta:
|
||||
facultatif: oui
|
||||
|
||||
DRI . liasse . déclaration contrôlée . CI:
|
||||
résumé: dont exonération médecin « zones déficitaires en offre de soin »
|
||||
unité: €
|
||||
meta:
|
||||
facultatif: oui
|
||||
|
||||
DRI . liasse . déclaration contrôlée . CJ:
|
||||
résumé: dont aides Fonds de solidarité Covid
|
||||
unité: €
|
||||
meta:
|
||||
facultatif: oui
|
||||
|
||||
DRI . liasse . déclaration contrôlée . CN:
|
||||
unité: €
|
||||
résumé: Total
|
||||
|
||||
DRI . liasse . OGA:
|
||||
applicable si: entreprise . imposition . IR
|
||||
question: Êtes-vous adhérant à une OGA ?
|
||||
|
||||
DRI . liasse . remboursement cotisation:
|
||||
applicable si: déclaration contrôlée . BT = 0
|
||||
question: Avez vous reçu un remboursement de cotisation en 2021 ?
|
||||
|
||||
DRI . déclaration revenus:
|
||||
question: Quelle est la personne concernée ?
|
||||
une possibilité:
|
||||
choix obligatoire: oui
|
||||
possibilités:
|
||||
- déclarant 1
|
||||
- déclarant 2
|
||||
meta:
|
||||
affichage: toggle
|
||||
|
||||
DRI . déclaration revenus . déclarant 1:
|
||||
valeur: déclaration revenus = 'déclarant 1'
|
||||
DRI . déclaration revenus . déclarant 2:
|
||||
valeur: déclaration revenus = 'déclarant 2'
|
||||
|
||||
DRI . déclaration revenus . BNC:
|
||||
applicable si: entreprise . imposition . IR . type de bénéfices . BNC
|
||||
titre: Revenus non commerciaux professionnels
|
||||
valeur: oui
|
||||
meta:
|
||||
section: oui
|
||||
|
||||
DRI . déclaration revenus . BNC . durée de l'exercice:
|
||||
applicable si: entreprise . durée d'activité . en fin d'année < 1 an
|
||||
meta:
|
||||
cases: [5XI, 5YI]
|
||||
valeur:
|
||||
valeur: entreprise . durée d'activité . en fin d'année
|
||||
unité: mois
|
||||
arrondi: oui
|
||||
unité: ''
|
||||
|
||||
DRI . déclaration revenus . BNC . régime de la déclaration contrôlée:
|
||||
applicable si: entreprise . imposition . régime . déclaration contrôlée
|
||||
valeur: oui
|
||||
meta:
|
||||
section: oui
|
||||
|
||||
DRI . déclaration revenus . BNC . revenus exonérés:
|
||||
note: régimes zonés article 1417, IV, b du code général des impôts
|
||||
meta:
|
||||
cases:
|
||||
défaut: [5QB, 5RB]
|
||||
sans OGA: [5QH, 5RH]
|
||||
non applicable si: valeur = 0
|
||||
valeur:
|
||||
nom: valeur
|
||||
meta:
|
||||
affichage: non
|
||||
somme:
|
||||
- valeur: liasse . déclaration contrôlée . CS
|
||||
par défaut: 0
|
||||
- valeur: liasse . déclaration contrôlée . AW
|
||||
par défaut: 0
|
||||
- valeur: liasse . déclaration contrôlée . CU
|
||||
par défaut: 0
|
||||
- valeur: liasse . déclaration contrôlée . CI
|
||||
par défaut: 0
|
||||
- valeur: liasse . déclaration contrôlée . CT
|
||||
par défaut: 0
|
||||
- valeur: liasse . déclaration contrôlée . CO
|
||||
par défaut: 0
|
||||
- valeur: liasse . déclaration contrôlée . CQ
|
||||
par défaut: 0
|
||||
- valeur: liasse . déclaration contrôlée . CJ
|
||||
par défaut: 0
|
||||
unité: ''
|
||||
|
||||
DRI . déclaration revenus . BNC . revenus imposables:
|
||||
note: cas général
|
||||
meta:
|
||||
cases:
|
||||
défaut: [5QC, 5RC]
|
||||
sans OGA: [5QI, 5RI]
|
||||
valeur: liasse . déclaration contrôlée . CE
|
||||
abattement: liasse . déclaration contrôlée . CN
|
||||
unité: ''
|
||||
|
||||
DRI . déclaration revenus . BNC . plus-values:
|
||||
titre: ' '
|
||||
note: dont plus-values à court terme, subventions d’équipement, indemnités d’assurance pour perte d’élément d’actif
|
||||
meta:
|
||||
cases:
|
||||
défaut: [5XP, 5YP]
|
||||
sans OGA: [5XQ, 5YQ]
|
||||
valeur: DRI . liasse . déclaration contrôlée . CB
|
||||
unité: ''
|
||||
|
||||
DRI . déclaration revenus . BNC . moins-values:
|
||||
titre: ''
|
||||
note: dont moins-values à court terme
|
||||
meta:
|
||||
cases:
|
||||
défaut: [5XH, 5YH]
|
||||
sans OGA: [5XL, 5YL]
|
||||
valeur: DRI . liasse . déclaration contrôlée . CK
|
||||
unité: ''
|
||||
|
||||
DRI . déclaration revenus . BNC . déficits:
|
||||
applicable si: liasse . déclaration contrôlée . CE < liasse . déclaration contrôlée . CN
|
||||
note: y compris inventeurs non professionnels
|
||||
meta:
|
||||
cases:
|
||||
défaut: [5QE, 5RE]
|
||||
sans OGA: [5QK, 5RK]
|
||||
valeur: liasse . déclaration contrôlée . CN
|
||||
abattement: liasse . déclaration contrôlée . CE
|
||||
unité: ''
|
||||
|
||||
DRI . déclaration revenus . BNC . jeunes créateurs:
|
||||
titre: 'Jeunes créateurs : abattement de 50 %'
|
||||
valeur: DRI . liasse . déclaration contrôlée . CO
|
||||
unité: ''
|
||||
meta:
|
||||
cases: [5QL, 5RL]
|
||||
|
||||
DRI . déclaration revenus . BIC:
|
||||
applicable si: entreprise . imposition . IR . type de bénéfices . BIC
|
||||
titre: Revenus industriels et commerciaux professionnels
|
||||
résumé: Y compris locations meublées professionnelles
|
||||
valeur: oui
|
||||
meta:
|
||||
section: oui
|
||||
|
||||
DRI . déclaration revenus . BIC . durée de l'exercice:
|
||||
applicable si: entreprise . durée d'activité . en fin d'année < 1 an
|
||||
meta:
|
||||
cases: [5DB, 5EB]
|
||||
valeur:
|
||||
valeur: entreprise . durée d'activité . en fin d'année
|
||||
unité: mois
|
||||
arrondi: oui
|
||||
unité: ''
|
||||
|
||||
DRI . déclaration revenus . BIC . Régime du bénéfice réel:
|
||||
non applicable si: entreprise . imposition . régime . micro-entreprise
|
||||
valeur: oui
|
||||
meta:
|
||||
section: oui
|
||||
|
||||
DRI . déclaration revenus . BIC . revenus exonérés:
|
||||
note: régimes zonés article 1417, IV, b du code général des impôts
|
||||
meta:
|
||||
cases:
|
||||
défaut: [5KB, 5LB]
|
||||
sans OGA: [5KH, 5LH]
|
||||
non applicable si: valeur = 0
|
||||
valeur:
|
||||
nom: valeur
|
||||
meta:
|
||||
affichage: non
|
||||
valeur: liasse . réel simplifié . c342
|
||||
par défaut: 0
|
||||
unité: ''
|
||||
|
||||
DRI . déclaration revenus . BIC . revenus imposables:
|
||||
note: cas général
|
||||
meta:
|
||||
cases:
|
||||
défaut: [5KC, 5LC]
|
||||
sans OGA: [5KI, 5LI]
|
||||
valeur: liasse . réel simplifié . c370
|
||||
unité: ''
|
||||
|
||||
DRI . déclaration revenus . BIC . plus-values:
|
||||
applicable si: liasse . réel simplifié . c596 > 0
|
||||
titre: ' '
|
||||
note: dont plus-values à court terme, subventions d’équipement, indemnités d’assurance pour perte d’élément d’actif
|
||||
meta:
|
||||
cases:
|
||||
défaut: [5DK, 5EK]
|
||||
sans OGA: [5DL, 5EL]
|
||||
valeur: liasse . réel simplifié . c596
|
||||
unité: ''
|
||||
|
||||
DRI . déclaration revenus . BIC . moins-values:
|
||||
applicable si: liasse . réel simplifié . c596 < 0
|
||||
titre: ''
|
||||
note: dont moins-values à court terme
|
||||
meta:
|
||||
cases:
|
||||
défaut: [5DM, 5EM]
|
||||
sans OGA: [5DN, 5EN]
|
||||
valeur: liasse . réel simplifié . c596
|
||||
unité: ''
|
||||
|
||||
DRI . déclaration revenus . BIC . déficits:
|
||||
meta:
|
||||
cases:
|
||||
défaut: [5KF, 5LF]
|
||||
sans OGA: [5KL, 5LL]
|
||||
valeur: liasse . réel simplifié . c372
|
||||
unité: ''
|
||||
|
||||
DRI . déclaration revenus . indépendant:
|
||||
titre: Données complémentaires de la déclaration de revenu des indépendants
|
||||
valeur: oui
|
||||
meta:
|
||||
section: oui
|
||||
|
||||
DRI . déclaration revenus . indépendant . cotisations sociales:
|
||||
unité: ''
|
||||
meta:
|
||||
cases: [DSCA, DSCB]
|
||||
somme:
|
||||
- DRI . liasse . déclaration contrôlée . BT
|
||||
- DRI . liasse . réel simplifié . c326
|
||||
|
||||
DRI . déclaration revenus . indépendant . cotisations facultatives:
|
||||
meta:
|
||||
cases: [DSEA, DSEB]
|
||||
non applicable si: valeur = 0
|
||||
valeur:
|
||||
meta:
|
||||
affichage: non
|
||||
nom: valeur
|
||||
unité: ''
|
||||
somme:
|
||||
- valeur: DRI . liasse . déclaration contrôlée . BZ
|
||||
par défaut: 0
|
||||
- valeur: DRI . liasse . déclaration contrôlée . BU
|
||||
par défaut: 0
|
||||
- valeur: DRI . liasse . réel simplifié . c381
|
||||
par défaut: 0
|
||||
|
||||
DRI . cotisations: dirigeant . indépendant . cotisations et contributions + DRI . cotisations . régularisation
|
||||
|
||||
DRI . cotisations . assiette des cotisations:
|
||||
rend non applicable:
|
||||
- entreprise . résultat fiscal
|
||||
remplace: dirigeant . indépendant . assiette des cotisations
|
||||
unité: €
|
||||
somme:
|
||||
# BNC
|
||||
- déclaration revenus . BNC . revenus imposables
|
||||
- valeur: déclaration revenus . BNC . plus-values
|
||||
par défaut: 0
|
||||
- valeur: déclaration revenus . BNC . revenus exonérés
|
||||
par défaut: 0
|
||||
# BIC
|
||||
- déclaration revenus . BIC . revenus imposables
|
||||
- valeur: déclaration revenus . BIC . plus-values
|
||||
par défaut: 0
|
||||
- valeur: déclaration revenus . BIC . revenus exonérés
|
||||
par défaut: 0
|
||||
|
||||
# Cotisations facultatives
|
||||
- valeur: déclaration revenus . indépendant . cotisations facultatives
|
||||
par défaut: 0
|
||||
abattement:
|
||||
somme:
|
||||
- valeur: déclaration revenus . BNC . moins-values
|
||||
par défaut: 0
|
||||
- valeur: déclaration revenus . BNC . déficits
|
||||
par défaut: 0
|
||||
|
||||
DRI . cotisations . assiette CSG:
|
||||
remplace: dirigeant . indépendant . cotisations et contributions . CSG et CRDS . assiette
|
||||
somme:
|
||||
- assiette des cotisations
|
||||
- déclaration revenus . indépendant . cotisations sociales
|
||||
|
||||
DRI . cotisations . régularisation:
|
||||
valeur: dirigeant . indépendant . cotisations et contributions - cotisations . appelées en 2021
|
||||
|
||||
DRI . cotisations . appelées en 2021:
|
||||
question: Quel est le montant des cotisations provisionnelles appelées en 2021 ?
|
||||
unité: €
|
|
@ -1,4 +1,4 @@
|
|||
déclaration indépendants:
|
||||
déclaration charge sociales:
|
||||
description: >-
|
||||
Ces règles calculent les montants des charges sociales à reporter dans la déclaration de revenu
|
||||
des indépendants et dans les déclaration de résultats.
|
||||
|
@ -11,7 +11,7 @@ déclaration indépendants:
|
|||
règle: entreprise . activité . mixte
|
||||
par: oui
|
||||
|
||||
déclaration indépendants . comptabilité:
|
||||
déclaration charge sociales . comptabilité:
|
||||
titre: régime de la déclaration contrôlée
|
||||
non applicable si: entreprise . imposition . IS
|
||||
question: Quel méthode de gestion de la comptabilité est utilisée pour l'entreprise ?
|
||||
|
@ -22,20 +22,20 @@ déclaration indépendants . comptabilité:
|
|||
- engagement
|
||||
- trésorerie
|
||||
|
||||
déclaration indépendants . comptabilité . trésorerie:
|
||||
déclaration charge sociales . comptabilité . trésorerie:
|
||||
rend non applicable: entreprise . imposition . IR . micro-fiscal
|
||||
valeur: comptabilité = 'trésorerie'
|
||||
titre: comptabilité de trésorerie
|
||||
|
||||
déclaration indépendants . comptabilité . engagement:
|
||||
déclaration charge sociales . comptabilité . engagement:
|
||||
valeur: comptabilité = 'engagement'
|
||||
titre: comptabilité d'engagement
|
||||
|
||||
déclaration indépendants . cotisations payées:
|
||||
déclaration charge sociales . cotisations payées:
|
||||
remplace:
|
||||
- règle: dirigeant . indépendant . cotisations et contributions . CSG et CRDS . non déductible
|
||||
par: CSG non déductible + CRDS
|
||||
- règle: déclaration indépendants . résultat simple . cotisations obligatoires
|
||||
- règle: déclaration charge sociales . résultat simple . cotisations obligatoires
|
||||
par:
|
||||
valeur: cotisations payées . total charges sociales
|
||||
abattement:
|
||||
|
@ -51,7 +51,7 @@ déclaration indépendants . cotisations payées:
|
|||
non applicable si: résultat simple
|
||||
valeur: oui
|
||||
|
||||
déclaration indépendants . cotisations payées . total charges sociales:
|
||||
déclaration charge sociales . cotisations payées . total charges sociales:
|
||||
remplace:
|
||||
règle: dirigeant . indépendant . cotisations et contributions
|
||||
par:
|
||||
|
@ -68,7 +68,7 @@ déclaration indépendants . cotisations payées . total charges sociales:
|
|||
3. Selectionnez "relevé de situation comptable"
|
||||
4. Reportez dans ce champs le montant de la colonne "Cotisation", ligne "Année 2021"
|
||||
|
||||
déclaration indépendants . cotisations payées . CSG déductible:
|
||||
déclaration charge sociales . cotisations payées . CSG déductible:
|
||||
question: Quel est le montant total de CSG déductible payé cette année ?
|
||||
remplace: dirigeant . indépendant . cotisations et contributions . CSG et CRDS . déductible
|
||||
unité: €/an
|
||||
|
@ -81,7 +81,7 @@ déclaration indépendants . cotisations payées . CSG déductible:
|
|||
3. Puis, "attestation CSG/CRDS"
|
||||
4. Reportez dans ce champs le total de la colonne "Montant déductible CSG" (dernière ligne)
|
||||
|
||||
déclaration indépendants . cotisations payées . CSG non déductible:
|
||||
déclaration charge sociales . cotisations payées . CSG non déductible:
|
||||
question: Quel est le montant total de CSG non déductible payé cette année ?
|
||||
unité: €/an
|
||||
description: |
|
||||
|
@ -93,7 +93,7 @@ déclaration indépendants . cotisations payées . CSG non déductible:
|
|||
3. Puis, "attestation CSG/CRDS"
|
||||
4. Reportez dans ce champs le total de la colonne "Montant non déductible : CSG" (dernière ligne)
|
||||
|
||||
déclaration indépendants . cotisations payées . CRDS:
|
||||
déclaration charge sociales . cotisations payées . CRDS:
|
||||
question: Quel est le montant total de CRDS payé cette année ?
|
||||
unité: €/an
|
||||
description: |
|
||||
|
@ -105,7 +105,7 @@ déclaration indépendants . cotisations payées . CRDS:
|
|||
3. Puis, "attestation CSG/CRDS"
|
||||
4. Reportez dans ce champs le total de la colonne "Montant non déductible : CRDS" (dernière ligne)
|
||||
|
||||
déclaration indépendants . cotisations payées . cotisations obligatoires déductibles:
|
||||
déclaration charge sociales . cotisations payées . cotisations obligatoires déductibles:
|
||||
remplace: cotisations obligatoires déductibles
|
||||
unité: €/an
|
||||
valeur: cotisations payées . total charges sociales
|
||||
|
@ -114,7 +114,7 @@ déclaration indépendants . cotisations payées . cotisations obligatoires déd
|
|||
- dirigeant . indépendant . cotisations et contributions . CSG et CRDS
|
||||
- dirigeant . indépendant . cotisations et contributions . formation professionnelle
|
||||
|
||||
déclaration indépendants . cotisations payées version simple:
|
||||
déclaration charge sociales . cotisations payées version simple:
|
||||
applicable si:
|
||||
toutes ces conditions:
|
||||
- une de ces conditions:
|
||||
|
@ -131,19 +131,19 @@ déclaration indépendants . cotisations payées version simple:
|
|||
- cotisations payées version simple . cotisations sociales
|
||||
- cotisations payées version simple . CSG déductible et CFP
|
||||
|
||||
déclaration indépendants . cotisations payées version simple . CSG déductible et CFP:
|
||||
déclaration charge sociales . cotisations payées version simple . CSG déductible et CFP:
|
||||
question: Quel est le montant total de CSG déductible et CFP payées cette année ?
|
||||
unité: €/an
|
||||
description: |
|
||||
Indiquez le montant de la part de CSG déductible et de CFP que vous avez payé en 2021 (peu importe l’année à laquelle ces contributions se rapportent).
|
||||
déclaration indépendants . cotisations payées version simple . cotisations sociales:
|
||||
déclaration charge sociales . cotisations payées version simple . cotisations sociales:
|
||||
question: Quel est le montant de vos cotisations sociales payées cette année ?
|
||||
unité: €/an
|
||||
description: |
|
||||
Indiquez le montant des cotisations sociales aux régimes obligatoires (maladie-maternité, vieillesse, invalidité-décès, famille) que vous avez payées en 2021 (peu importe l’année à laquelle ces cotisations se rapportent).
|
||||
|
||||
déclaration indépendants . régime d'imposition: oui
|
||||
déclaration indépendants . régime d'imposition . déclaration contrôlée:
|
||||
déclaration charge sociales . régime d'imposition: oui
|
||||
déclaration charge sociales . régime d'imposition . déclaration contrôlée:
|
||||
titre: régime de la déclaration contrôlée
|
||||
applicable si: entreprise . activité . libérale
|
||||
non applicable si:
|
||||
|
@ -158,7 +158,7 @@ déclaration indépendants . régime d'imposition . déclaration contrôlée:
|
|||
|
||||
Dans le cas de la déclaration contrôlée, le contribuable est imposé sur les bénéfices effectivement réalisés. Dans le cas du régime micro-BNC, un abattement forfaitaire de 34 % est appliqué automatiquement après déclaration du chiffre d’affaires.
|
||||
|
||||
déclaration indépendants . régime d'imposition . réel:
|
||||
déclaration charge sociales . régime d'imposition . réel:
|
||||
description: |
|
||||
Le régime simplifié d'imposition (RSI) et le régime réel normal (RN) s'appliquent aux bénéfices réalisés au cours de l'exercice et à la taxe sur la valeur ajoutée (TVA).
|
||||
|
||||
|
@ -176,7 +176,7 @@ déclaration indépendants . régime d'imposition . réel:
|
|||
- simplifié
|
||||
- normal
|
||||
|
||||
déclaration indépendants . régime d'imposition . réel . simplifié:
|
||||
déclaration charge sociales . régime d'imposition . réel . simplifié:
|
||||
description: |
|
||||
Les entreprises soumises au régime d'imposition réel simplifié doivent tenir une comptabilité classique : un bilan, un compte de résultat et des annexes. Des dispositions particulières s’appliquent pour alléger vos obligations comptables :
|
||||
|
||||
|
@ -188,7 +188,7 @@ déclaration indépendants . régime d'imposition . réel . simplifié:
|
|||
acronyme: RSI
|
||||
valeur: réel = 'simplifié'
|
||||
|
||||
déclaration indépendants . régime d'imposition . réel . normal:
|
||||
déclaration charge sociales . régime d'imposition . réel . normal:
|
||||
description: |
|
||||
La comptabilité de l’entreprise soumise au régime réel normal doit être plus précise que pour le régime réel simplifié :
|
||||
|
||||
|
@ -202,7 +202,7 @@ déclaration indépendants . régime d'imposition . réel . normal:
|
|||
acronyme: RN
|
||||
valeur: réel = 'normal'
|
||||
|
||||
déclaration indépendants . nature de l'activité:
|
||||
déclaration charge sociales . nature de l'activité:
|
||||
remplace:
|
||||
- entreprise . activité
|
||||
- règle: entreprise . activité . libérale
|
||||
|
@ -224,7 +224,7 @@ déclaration indépendants . nature de l'activité:
|
|||
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
|
||||
|
||||
déclaration indépendants . ACRE:
|
||||
déclaration charge sociales . ACRE:
|
||||
description: >-
|
||||
L'aide à la création ou à la reprise d'une entreprise (Acre) consiste en une
|
||||
exonération partielle de charges sociales, dite exonération de début
|
||||
|
@ -261,7 +261,7 @@ déclaration indépendants . ACRE:
|
|||
applicable si: entreprise . durée d'activité . en début d'année <= 1 an
|
||||
par défaut: non
|
||||
|
||||
déclaration indépendants . nature de l'activité . libérale:
|
||||
déclaration charge sociales . nature de l'activité . libérale:
|
||||
rend non applicable: dirigeant . indépendant . PL . CIPAV
|
||||
formule: nature de l'activité = 'libérale'
|
||||
titre: Libérale rattachée au régime général
|
||||
|
@ -275,13 +275,13 @@ déclaration indépendants . nature de l'activité . libérale:
|
|||
références:
|
||||
fiche Wikipedia: https://fr.m.wikipedia.org/wiki/Profession_libérale
|
||||
|
||||
déclaration indépendants . nature de l'activité . commerciale:
|
||||
déclaration charge sociales . nature de l'activité . commerciale:
|
||||
formule: nature de l'activité = 'commerciale'
|
||||
description: |
|
||||
- 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é de production ou de transformation grâce à l'utilisation d'outils industriels, extraction, industries minières, manutention, magasinage et stockage
|
||||
déclaration indépendants . nature de l'activité . artisanale:
|
||||
déclaration charge sociales . nature de l'activité . artisanale:
|
||||
formule: nature de l'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.
|
||||
|
@ -293,7 +293,7 @@ déclaration indépendants . nature de l'activité . artisanale:
|
|||
références:
|
||||
liste des activités artisanales: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/activites-artisanales-0
|
||||
|
||||
déclaration indépendants . réduction covid:
|
||||
déclaration charge sociales . réduction covid:
|
||||
titre: Réduction de cotisation Covid
|
||||
remplace:
|
||||
- règle: dirigeant . indépendant . cotisations et contributions . cotisations
|
||||
|
@ -340,7 +340,7 @@ déclaration indépendants . réduction covid:
|
|||
Pour plus d’information, et connaitre le montant de l’exonération dont vous pouvez bénéficier, vous pouvez utiliser le [simulateur d’exonération COVID](/simulateurs/exonération-covid "Nouvelle fenêtre").
|
||||
par défaut: non
|
||||
|
||||
déclaration indépendants . réduction covid . montant:
|
||||
déclaration charge sociales . réduction covid . montant:
|
||||
question: Quel est le montant de l’exonération sociale liée à la crise sanitaire pour les cotisations de l’année 2021 ?
|
||||
description: |-
|
||||
Pour connaître le montant de l'exonération, vous pouvez utiliser le simulateur d'exonération COVID.
|
||||
|
@ -349,7 +349,7 @@ déclaration indépendants . réduction covid . montant:
|
|||
titre: Réduction Covid
|
||||
par défaut: 0 €/an
|
||||
|
||||
déclaration indépendants . réduction covid . conjoint collaborateur:
|
||||
déclaration charge sociales . réduction covid . conjoint collaborateur:
|
||||
applicable si: dirigeant . indépendant . conjoint collaborateur
|
||||
remplace:
|
||||
règle: dirigeant . indépendant . conjoint collaborateur . cotisations
|
||||
|
@ -358,14 +358,14 @@ déclaration indépendants . réduction covid . conjoint collaborateur:
|
|||
abattement: réduction covid . conjoint collaborateur
|
||||
valeur: montant
|
||||
|
||||
déclaration indépendants . réduction covid . total:
|
||||
déclaration charge sociales . réduction covid . total:
|
||||
titre: Réduction Covid
|
||||
description: Intégrée dans le montant des cotisations affiché ci-dessus
|
||||
somme:
|
||||
- montant
|
||||
- conjoint collaborateur
|
||||
|
||||
déclaration indépendants . réduction covid . part cotisations:
|
||||
déclaration charge sociales . réduction covid . part cotisations:
|
||||
titre: Part réduction Covid sur cotisations (hors CSG/CRDS)
|
||||
arrondi: oui
|
||||
résoudre la référence circulaire: oui
|
||||
|
@ -373,39 +373,39 @@ déclaration indépendants . réduction covid . part cotisations:
|
|||
assiette: montant
|
||||
taux: pourcentage cotisations
|
||||
|
||||
déclaration indépendants . réduction covid . pourcentage cotisations:
|
||||
déclaration charge sociales . réduction covid . pourcentage cotisations:
|
||||
unité: '%'
|
||||
valeur: dirigeant . indépendant . cotisations et contributions . cotisations / (dirigeant . indépendant . cotisations et contributions . cotisations + dirigeant . indépendant . cotisations et contributions . CSG et CRDS)
|
||||
|
||||
déclaration indépendants . réduction covid . part CSG:
|
||||
déclaration charge sociales . réduction covid . part CSG:
|
||||
titre: Part réduction Covid sur CSG
|
||||
valeur: montant - part cotisations
|
||||
|
||||
déclaration indépendants . réduction covid . part CSG . déductible:
|
||||
déclaration charge sociales . réduction covid . part CSG . déductible:
|
||||
titre: Part réduction Covid sur CSG/CRDS déductible
|
||||
produit:
|
||||
assiette: part CSG
|
||||
taux: dirigeant . indépendant . cotisations et contributions . CSG et CRDS . déductible . taux / taux CSG
|
||||
arrondi: oui
|
||||
|
||||
déclaration indépendants . réduction covid . part CSG . non déductible:
|
||||
déclaration charge sociales . réduction covid . part CSG . non déductible:
|
||||
titre: Part réduction Covid sur CSG/CRDS non déductible
|
||||
valeur: part CSG - part CSG . déductible
|
||||
|
||||
déclaration indépendants . réduction covid . taux CSG:
|
||||
déclaration charge sociales . réduction covid . taux CSG:
|
||||
unité: '%'
|
||||
valeur:
|
||||
somme:
|
||||
- dirigeant . indépendant . cotisations et contributions . CSG et CRDS . non déductible . taux
|
||||
- dirigeant . indépendant . cotisations et contributions . CSG et CRDS . déductible . taux
|
||||
|
||||
déclaration indépendants . cotisations obligatoires déductibles:
|
||||
déclaration charge sociales . cotisations obligatoires déductibles:
|
||||
description: Cotisations obligatoires déductibles, utile pour calculer l'assiette de la CSG/CRDS
|
||||
somme:
|
||||
- dirigeant . indépendant . cotisations et contributions . cotisations
|
||||
- dirigeant . indépendant . conjoint collaborateur . cotisations
|
||||
|
||||
déclaration indépendants . rémunération déductible:
|
||||
déclaration charge sociales . rémunération déductible:
|
||||
variations:
|
||||
- si: entreprise . imposition . IS
|
||||
alors: dirigeant . rémunération . nette
|
|
@ -1,4 +1,4 @@
|
|||
déclaration indépendants . résultat simple . revenu net fiscal:
|
||||
déclaration charge sociales . résultat simple . revenu net fiscal:
|
||||
non applicable si: entreprise . imposition . IR . micro-fiscal
|
||||
|
||||
titre: revenu net fiscal
|
||||
|
@ -6,7 +6,7 @@ déclaration indépendants . résultat simple . revenu net fiscal:
|
|||
description: Résultat avant déduction des charges sociales et exonérations fiscales
|
||||
valeur: dirigeant . rémunération . totale
|
||||
|
||||
déclaration indépendants . résultat simple . cotisations obligatoires:
|
||||
déclaration charge sociales . résultat simple . cotisations obligatoires:
|
||||
titre: Cotisations sociales obligatoires déductibles
|
||||
résumé: '[C]'
|
||||
description: |
|
||||
|
@ -23,21 +23,21 @@ déclaration indépendants . résultat simple . cotisations obligatoires:
|
|||
références:
|
||||
Notice impots.gouv.fr: https://www.impots.gouv.fr/portail/www2/fichiers/documentation/brochure/ir_2021/pdf_som/11-bis-decla_fusion_fisc_185a195.pdf
|
||||
|
||||
déclaration indépendants . résultat simple: oui
|
||||
déclaration indépendants . résultat simple . CSG déductible:
|
||||
déclaration charge sociales . résultat simple: oui
|
||||
déclaration charge sociales . résultat simple . CSG déductible:
|
||||
non applicable si: entreprise . imposition . IR . micro-fiscal
|
||||
titre: CSG déductible
|
||||
résumé: '[B]'
|
||||
description: "Montant de la CSG déductible à l'impôt sur le revenu"
|
||||
valeur: dirigeant . indépendant . cotisations et contributions . CSG et CRDS . déductible
|
||||
|
||||
déclaration indépendants . résultat simple . CFP:
|
||||
déclaration charge sociales . résultat simple . CFP:
|
||||
non applicable si: entreprise . imposition . IR . micro-fiscal
|
||||
résumé: '[D]'
|
||||
description: Contribution à la formation professionnelle
|
||||
valeur: dirigeant . indépendant . cotisations et contributions . formation professionnelle
|
||||
|
||||
déclaration indépendants . résultat simple . total charges sociales déductible:
|
||||
déclaration charge sociales . résultat simple . total charges sociales déductible:
|
||||
non applicable si: entreprise . imposition . IR . micro-fiscal
|
||||
titre: charges sociales obligatoires déductibles fiscalement
|
||||
résumé: '[B + C + D]'
|
||||
|
@ -52,7 +52,7 @@ déclaration indépendants . résultat simple . total charges sociales déductib
|
|||
- **déclaration contrôlée :** la rubrique BK du formulaire 2035-A-SD
|
||||
- **régime micro fiscal :** pas de liasse professionnelle fiscale à souscrire
|
||||
|
||||
déclaration indépendants . résultat simple . assiette sociale:
|
||||
déclaration charge sociales . résultat simple . assiette sociale:
|
||||
non applicable si: entreprise . imposition . IR . micro-fiscal
|
||||
résumé: '[A - (B + C + D)]'
|
||||
description: Assiette utilisée pour le calcul des cotisations sociales
|
|
@ -11,6 +11,9 @@ entreprise . SIREN:
|
|||
entreprise . nom:
|
||||
type: texte
|
||||
|
||||
entreprise . activité principale:
|
||||
type: texte
|
||||
|
||||
entreprise . date de création:
|
||||
question: Quelle est votre date de début d'activité ?
|
||||
par défaut: 01/01/2021
|
||||
|
@ -72,10 +75,10 @@ entreprise . chiffre d'affaires:
|
|||
- dirigeant . rémunération . impôt
|
||||
- dirigeant . rémunération . cotisations
|
||||
- charges
|
||||
- applicable si: entreprise . imposition . IS
|
||||
- applicable si: imposition . IS
|
||||
somme:
|
||||
- imposition . IS . résultat net
|
||||
- imposition . IS . impôt sur les sociétés
|
||||
- imposition . IS
|
||||
plancher: 0€/an
|
||||
arrondi: oui
|
||||
identifiant court: CA
|
||||
|
@ -513,6 +516,8 @@ entreprise . activité:
|
|||
Spécifiquement pour les auto-entrepreneurs: https://www.shine.fr/blog/categorie-activite-auto-entrepreneur
|
||||
|
||||
entreprise . activité . libérale:
|
||||
question: Votre activité est-elle une profession libérale ?
|
||||
valeur: activité = 'libérale'
|
||||
description: |
|
||||
Ce sont les professions "intellectuelles" : médecins, sage-femme, kiné, avocat, mais aussi consultant, développeur, designer...
|
||||
|
||||
|
@ -524,6 +529,7 @@ entreprise . activité . libérale:
|
|||
liste des professions libérales: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/liste-professions-liberales
|
||||
|
||||
entreprise . activité . commerciale:
|
||||
valeur: activité = 'commerciale'
|
||||
description: |
|
||||
### Activité commerciale
|
||||
- Achats de biens pour leur revente en l'état (commerce en gros ou de détail)
|
||||
|
@ -534,6 +540,7 @@ entreprise . activité . commerciale:
|
|||
Activité de production ou de transformation grâce à l'utilisation d'outils industriels, extraction, industries minières, manutention, magasinage et stockage
|
||||
|
||||
entreprise . activité . artisanale:
|
||||
valeur: 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.
|
||||
|
||||
|
|
|
@ -15,42 +15,37 @@ entreprise . catégorie juridique:
|
|||
|
||||
entreprise . catégorie juridique . EI:
|
||||
titre: 'EI ou EIRL'
|
||||
applicable si: catégorie juridique = 'EI'
|
||||
valeur: oui
|
||||
valeur: catégorie juridique = 'EI'
|
||||
|
||||
entreprise . catégorie juridique . EI . auto-entrepreneur:
|
||||
question: Êtes-vous auto-entrepreneur ?
|
||||
par défaut:
|
||||
nom: défaut
|
||||
valeur: oui
|
||||
remplace:
|
||||
règle: imposition . IR . micro-fiscal
|
||||
par: oui
|
||||
|
||||
par défaut: oui
|
||||
|
||||
entreprise . catégorie juridique . EI . responsabilité limité:
|
||||
non applicable si: auto-entrepreneur # pour simplifier
|
||||
titre: 'EIRL'
|
||||
question: Votre entreprise est-elle une EIRL ?
|
||||
par défaut: non
|
||||
|
||||
entreprise . catégorie juridique . EI . imposition entreprise:
|
||||
non applicable si: responsabilité limité
|
||||
remplace: entreprise . imposition
|
||||
valeur: "'IR'"
|
||||
|
||||
entreprise . catégorie juridique . SARL:
|
||||
titre: 'EURL ou SARL'
|
||||
applicable si: catégorie juridique = 'SARL'
|
||||
valeur: oui
|
||||
valeur: catégorie juridique = 'SARL'
|
||||
|
||||
entreprise . catégorie juridique . SARL . unipersonnelle:
|
||||
titre: EURL
|
||||
description: |-
|
||||
Une EURL est une entreprise avec un seul associé. Cela signifie que vous êtes le seul et unique propriétaire de l'entreprise.
|
||||
question: Votre entreprise est-elle une EURL ?
|
||||
par défaut: oui
|
||||
|
||||
entreprise . catégorie juridique . SELARL:
|
||||
titre: 'SELARL'
|
||||
applicable si: catégorie juridique = 'SELARL'
|
||||
valeur: oui
|
||||
valeur: catégorie juridique = 'SELARL'
|
||||
remplace:
|
||||
- règle: entreprise . activité
|
||||
par: "'libérale'"
|
||||
|
@ -59,8 +54,7 @@ entreprise . catégorie juridique . SELARL:
|
|||
|
||||
entreprise . catégorie juridique . SELAS:
|
||||
titre: 'SELARL'
|
||||
applicable si: catégorie juridique = 'SELAS'
|
||||
valeur: oui
|
||||
valeur: catégorie juridique = 'SELAS'
|
||||
remplace:
|
||||
- règle: entreprise . activité
|
||||
par: "'libérale'"
|
||||
|
@ -72,8 +66,7 @@ entreprise . catégorie juridique . SAS:
|
|||
règle: entreprise . imposition
|
||||
par: "'IS'"
|
||||
titre: 'SASU ou SAS'
|
||||
applicable si: catégorie juridique = 'SAS'
|
||||
valeur: oui
|
||||
valeur: catégorie juridique = 'SAS'
|
||||
|
||||
entreprise . catégorie juridique . SAS . unipersonnelle:
|
||||
titre: 'SASU'
|
||||
|
@ -81,5 +74,4 @@ entreprise . catégorie juridique . SAS . unipersonnelle:
|
|||
par défaut: oui
|
||||
|
||||
entreprise . catégorie juridique . autre:
|
||||
applicable si: catégorie juridique = 'autre'
|
||||
valeur: oui
|
||||
valeur: catégorie juridique = 'autre'
|
|
@ -1,20 +1,61 @@
|
|||
entreprise . imposition:
|
||||
question: Comment l'entreprise est-elle imposée ?
|
||||
description: |
|
||||
Indiquez si le régime d’imposition des revenus liés à l’activité indépendante relèvent :
|
||||
- de l’impôt sur le revenu : les bénéfices de l’entreprise sont imposés directement auprès du travailleur indépendant, au barème progressif de l’impôt sur le revenu.
|
||||
- de l’impôt sur les sociétés : les bénéfices de l’entreprise sont imposés au nom de la société, au taux de l’impôt sur les sociétés.
|
||||
question: Quel est le **type d'imposition** de votre entreprise ?
|
||||
une possibilité:
|
||||
choix obligatoire: oui
|
||||
possibilités:
|
||||
- IR
|
||||
- IS
|
||||
par défaut: "'IR'"
|
||||
par défaut:
|
||||
variations:
|
||||
- si:
|
||||
une de ces conditions:
|
||||
- catégorie juridique . SARL . unipersonnelle
|
||||
- catégorie juridique . EI
|
||||
alors: "'IR'"
|
||||
- sinon: "'IS'"
|
||||
|
||||
entreprise . imposition . IR:
|
||||
applicable si: imposition = 'IR'
|
||||
titre: Impôt sur le revenu
|
||||
valeur: oui
|
||||
valeur: imposition = 'IR'
|
||||
titre: Impôt sur le revenu (IR)
|
||||
description: |
|
||||
Le résultat de votre entreprise est imposé à l'impôt sur le revenu, comme les autres revenus de
|
||||
votre foyer.
|
||||
|
||||
Le résultat est déterminé lors du remplissage de la **liasse fiscale** (aussi appelée
|
||||
déclaration de résultat). C'est le comptable qui s'en charge.
|
||||
|
||||
Si votre entreprise gagne de l'argent, le résultat est appelé **bénéfice**. Il est ajouté aux autres
|
||||
revenus imposables (s'ils existent) : **votre impôt sur le revenu est plus élevé**.
|
||||
|
||||
Si votre entreprise perd de l'argent, le résultat est appelé **déficit**. Il vient réduire le montant du
|
||||
revenu imposable de votre ménage : **votre impôt sur le revenu est moins élevé**.
|
||||
|
||||
Avec l'imposition sur le revenu, il n'y a pas de différence fiscale entre les revenus de votre foyer et ceux de
|
||||
votre entreprise. Cela veut dire que le montant que vous vous versez depuis le compte bancaire professionnel
|
||||
vers votre compte bancaire personnel ne change pas le résultat de l'entreprise.
|
||||
|
||||
entreprise . imposition . IR . type de bénéfices:
|
||||
question: Quel est le **type de bénéfices** de votre entreprise ?
|
||||
par défaut: oui
|
||||
une possibilité:
|
||||
choix obligatoire: oui
|
||||
possibilités:
|
||||
- BNC
|
||||
- BIC
|
||||
- BA
|
||||
|
||||
entreprise . imposition . IR . type de bénéfices . BNC:
|
||||
valeur: type de bénéfices = 'BNC'
|
||||
|
||||
entreprise . imposition . IR . type de bénéfices . BIC:
|
||||
valeur: type de bénéfices = 'BIC'
|
||||
|
||||
entreprise . imposition . IR . type de bénéfices . BA:
|
||||
applicable si: BA possible
|
||||
valeur: type de bénéfices = 'BA'
|
||||
|
||||
entreprise . imposition . IR . type de bénéfices . BA possible: non
|
||||
entreprise . imposition . IR . type de bénéfices . BIC et BNC possibles: non
|
||||
|
||||
entreprise . imposition . IR . micro-fiscal:
|
||||
rend non applicable: dirigeant . indépendant . cotisations facultatives
|
||||
|
@ -113,9 +154,124 @@ entreprise . imposition . IR . information sur le report de déficit:
|
|||
bofip: https://bofip.impots.gouv.fr/bofip/2003-PGP.html/identifiant%3DBOI-BIC-DEF-20-10-20170301
|
||||
|
||||
entreprise . imposition . IS:
|
||||
applicable si: imposition = 'IS'
|
||||
valeur: oui
|
||||
titre: Impôt sur les sociétés
|
||||
valeur: imposition = 'IS'
|
||||
titre: Impôt sur les sociétés (IS)
|
||||
description: |-
|
||||
|
||||
Le **résultat** de votre entreprise est imposé à l'**impôt sur les sociétés**.
|
||||
|
||||
Si votre entreprise perd de l'argent, le résultat est appelé **déficit**. Elle n'aura pas à payer d'impôt
|
||||
sur les sociétés.
|
||||
|
||||
Si votre entreprise gagne de l'argent, le résultat est appelé **bénéfice**. Il sera imposé à un
|
||||
**taux fixe**.
|
||||
|
||||
Le résultat imposable est déterminé lors du remplissage de la **liasse fiscale** (aussi appelée
|
||||
déclaration de résultat). C'est le comptable qui s'en charge.
|
||||
|
||||
|
||||
À noter : il existe **deux façons de se rémunérer** avec une entreprise à l'impôt sur les sociétés :
|
||||
- Vous pouvez vous verser une rémunération en tant que dirigeant pendant l'année. Cette rémunération est
|
||||
déduite (soustraite) du résultat pour calculer le bénéfice imposable de votre entreprise. En revanche, cette
|
||||
rémunération est ajoutée aux revenus imposables de votre foyer pour le calcul de l'impôt sur le revenu.
|
||||
- Vous pouvez aussi vous verser des dividendes à partir des bénéfices des années précédentes. Vous aurez à payer
|
||||
un impôt fixe sur ces derniers : c'est ce que l'on appelle la "flat tax".
|
||||
|
||||
Dans tous les cas, vous aurez à payer des **cotisations sociales** sur les revenus que vous touchez.
|
||||
|
||||
entreprise . imposition . IS . montant:
|
||||
unité: €/an
|
||||
barème:
|
||||
assiette: résultat imposable
|
||||
multiplicateur: prorata temporis
|
||||
variations:
|
||||
- si: exercice . début >= 01/01/2022
|
||||
alors:
|
||||
tranches:
|
||||
- taux:
|
||||
nom: taux réduit
|
||||
valeur: 15%
|
||||
plafond:
|
||||
nom: plafond taux réduit 1
|
||||
applicable si: éligible taux réduit
|
||||
valeur: 38120 €/an
|
||||
- taux:
|
||||
nom: taux normal
|
||||
valeur: 25%
|
||||
- si: exercice . début >= 01/01/2021
|
||||
alors:
|
||||
tranches:
|
||||
- taux: taux réduit
|
||||
plafond: plafond taux réduit 1
|
||||
- taux: 26.5%
|
||||
- si: exercice . début >= 01/01/2020
|
||||
alors:
|
||||
tranches:
|
||||
- taux: taux réduit
|
||||
plafond: plafond taux réduit 1
|
||||
- taux: 28%
|
||||
- si: exercice . début >= 01/01/2019
|
||||
alors:
|
||||
tranches:
|
||||
- taux: taux réduit
|
||||
plafond: plafond taux réduit 1
|
||||
- taux: 28%
|
||||
plafond:
|
||||
nom: plafond taux réduit 2
|
||||
applicable si: éligible taux réduit
|
||||
valeur: 500000 €/an
|
||||
- taux: 31%
|
||||
- si: exercice . début >= 01/01/2018
|
||||
alors:
|
||||
tranches:
|
||||
- taux: taux réduit
|
||||
plafond: plafond taux réduit 1
|
||||
- taux: 28%
|
||||
plafond: plafond taux réduit 2
|
||||
- taux: 33.3333%
|
||||
arrondi: oui
|
||||
|
||||
références:
|
||||
Fiche impots.gouv.fr: https://www.impots.gouv.fr/portail/international-professionnel/impot-sur-les-societes
|
||||
Fiche service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F23575
|
||||
|
||||
entreprise . imposition . IS . éligible taux réduit:
|
||||
par défaut: oui
|
||||
toutes ces conditions:
|
||||
- chiffre d'affaires <= 7630 k€/an * prorata temporis
|
||||
- nom: capital détenu au moins à 75 pourcents par des personnes physiques
|
||||
valeur: oui
|
||||
|
||||
entreprise . imposition . IS . prorata temporis:
|
||||
description: |
|
||||
Lorsque la durée de l’exercice n'est pas égale à un an, on pro-ratise les
|
||||
plafonds utilisés dans le barème de l'impôt sur les sociétés.
|
||||
unité: '%'
|
||||
formule: exercice . durée / 1 an
|
||||
# TODO: c'est un peu plus subtil que cela : « En cas d’exercice ouvert ou
|
||||
# arrêté en cours de mois calendaire, le nombre de jours résiduels concourt à
|
||||
# la détermination du rapport pour un montant égal au rapport existant entre
|
||||
# ce nombre et 30. »
|
||||
références:
|
||||
Bofip: https://bofip.impots.gouv.fr/bofip/2065-PGP.html/identifiant%3DBOI-IS-LIQ-20-20-20180801
|
||||
|
||||
entreprise . imposition . IS . contribution sociale:
|
||||
# description: |
|
||||
# La contribution sociale sur les bénéfices est un impôt distinct de l'impôt sur les sociétés. Son montant n'est pas déductible des résultats.
|
||||
|
||||
# L'assiette bénéficie d'un abattement important, et seules les entreprises réalisant plus de 2,3 millions d'euros de bénéficie sont concernées par cette contribution.
|
||||
description: |
|
||||
La contribution sociale sur les bénéfices est un impôt distinct de l’impôt sur les sociétés. Son montant n’est pas déductible des résultats.
|
||||
|
||||
L’assiette bénéficie d’un abattement important, et seules les entreprises réalisant plus de 2,3 millions d’euros de bénéfices sont concernées par cette contribution.
|
||||
formule:
|
||||
produit:
|
||||
taux: 3.3%
|
||||
assiette:
|
||||
valeur: IS
|
||||
abattement: 763000 €/an * prorata temporis
|
||||
références:
|
||||
Bofip: https://bofip.impots.gouv.fr/bofip/3492-PGP.html/identifiant%3DBOI-IS-AUT-10-20-20130318
|
||||
|
||||
entreprise . imposition . IS . résultat imposable:
|
||||
titre: Résultat de l'exercice
|
||||
|
@ -135,97 +291,39 @@ entreprise . imposition . IS . résultat net:
|
|||
- chiffre d'affaires
|
||||
- (- charges)
|
||||
- (- dirigeant . rémunération . totale)
|
||||
- (- impôt sur les sociétés)
|
||||
- (- montant)
|
||||
par défaut: 0€
|
||||
|
||||
entreprise . imposition . IS . impôt sur les sociétés:
|
||||
unité: €/an
|
||||
formule:
|
||||
barème:
|
||||
assiette: résultat imposable
|
||||
multiplicateur: prorata temporis
|
||||
variations:
|
||||
- si: exercice . début >= 01/01/2022
|
||||
alors:
|
||||
tranches:
|
||||
- taux: 15%
|
||||
plafond: plafond taux réduit 1
|
||||
- taux: 25%
|
||||
- si: exercice . début >= 01/01/2021
|
||||
alors:
|
||||
tranches:
|
||||
- taux: 15%
|
||||
plafond: plafond taux réduit 1
|
||||
- taux: 26.5%
|
||||
- si: exercice . début >= 01/01/2020
|
||||
alors:
|
||||
tranches:
|
||||
- taux: 15%
|
||||
plafond: plafond taux réduit 1
|
||||
- taux: 28%
|
||||
- si: exercice . début >= 01/01/2019
|
||||
alors:
|
||||
tranches:
|
||||
- taux: 15%
|
||||
plafond: plafond taux réduit 1
|
||||
- taux: 28%
|
||||
plafond: plafond taux réduit 2
|
||||
- taux: 31%
|
||||
- si: exercice . début >= 01/01/2018
|
||||
alors:
|
||||
tranches:
|
||||
- taux: 15%
|
||||
plafond: plafond taux réduit 1
|
||||
- taux: 28%
|
||||
plafond: plafond taux réduit 2
|
||||
- taux: 33.3333%
|
||||
arrondi: oui
|
||||
références:
|
||||
Fiche impots.gouv.fr: https://www.impots.gouv.fr/portail/international-professionnel/impot-sur-les-societes
|
||||
Fiche service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F23575
|
||||
entreprise . imposition . régime:
|
||||
question: Quel est le **régime d'imposition** de votre entreprise ?
|
||||
une possibilité:
|
||||
choix obligatoire: oui
|
||||
possibilités:
|
||||
- micro-entreprise
|
||||
- déclaration contrôlée
|
||||
- réel simplifié
|
||||
- réel normal
|
||||
|
||||
entreprise . imposition . IS . impôt sur les sociétés . plafond taux réduit 1:
|
||||
applicable si: éligible taux réduit
|
||||
valeur: 38120 €/an
|
||||
entreprise . imposition . régime . micro-entreprise:
|
||||
titre: Régime de la micro-entreprise
|
||||
non applicable si: imposition = 'IS'
|
||||
remplace:
|
||||
règle: IR . micro-fiscal
|
||||
par: oui
|
||||
valeur: régime = 'micro-entreprise'
|
||||
|
||||
entreprise . imposition . IS . impôt sur les sociétés . plafond taux réduit 2:
|
||||
applicable si: éligible taux réduit
|
||||
valeur: 500000 €/an
|
||||
entreprise . imposition . régime . déclaration contrôlée:
|
||||
applicable si: IR . type de bénéfices . BNC
|
||||
valeur: régime = 'déclaration contrôlée'
|
||||
|
||||
entreprise . imposition . IS . impôt sur les sociétés . éligible taux réduit:
|
||||
formule:
|
||||
toutes ces conditions:
|
||||
- chiffre d'affaires <= 7630 k€/an * prorata temporis
|
||||
- nom: capital détenu au moins à 75 pourcents par des personnes physiques
|
||||
valeur: oui
|
||||
entreprise . imposition . régime . réel normal:
|
||||
titre: Régime réel normal d'imposition
|
||||
acronyme: RN
|
||||
non applicable si: IR . type de bénéfices . BNC
|
||||
valeur: régime = 'réel normal'
|
||||
|
||||
entreprise . imposition . IS . impôt sur les sociétés . prorata temporis:
|
||||
description: |
|
||||
Lorsque la durée de l’exercice n'est pas égale à un an, on pro-ratise les
|
||||
plafonds utilisés dans le barème de l'impôt sur les sociétés.
|
||||
unité: '%'
|
||||
formule: exercice . durée / 1 an
|
||||
# TODO: c'est un peu plus subtil que cela : « En cas d’exercice ouvert ou
|
||||
# arrêté en cours de mois calendaire, le nombre de jours résiduels concourt à
|
||||
# la détermination du rapport pour un montant égal au rapport existant entre
|
||||
# ce nombre et 30. »
|
||||
références:
|
||||
Bofip: https://bofip.impots.gouv.fr/bofip/2065-PGP.html/identifiant%3DBOI-IS-LIQ-20-20-20180801
|
||||
|
||||
entreprise . imposition . IS . impôt sur les sociétés . contribution sociale:
|
||||
# description: |
|
||||
# La contribution sociale sur les bénéfices est un impôt distinct de l'impôt sur les sociétés. Son montant n'est pas déductible des résultats.
|
||||
|
||||
# L'assiette bénéficie d'un abattement important, et seules les entreprises réalisant plus de 2,3 millions d'euros de bénéficie sont concernées par cette contribution.
|
||||
description: |
|
||||
La contribution sociale sur les bénéfices est un impôt distinct de l’impôt sur les sociétés. Son montant n’est pas déductible des résultats.
|
||||
|
||||
L’assiette bénéficie d’un abattement important, et seules les entreprises réalisant plus de 2,3 millions d’euros de bénéfices sont concernées par cette contribution.
|
||||
formule:
|
||||
produit:
|
||||
taux: 3.3%
|
||||
assiette:
|
||||
valeur: impôt sur les sociétés
|
||||
abattement: 763000 €/an * prorata temporis
|
||||
références:
|
||||
Bofip: https://bofip.impots.gouv.fr/bofip/3492-PGP.html/identifiant%3DBOI-IS-AUT-10-20-20130318
|
||||
entreprise . imposition . régime . réel simplifié:
|
||||
titre: Régime réel simplifié d'imposition
|
||||
acronyme: RSI
|
||||
non applicable si: IR . type de bénéfices . BNC
|
||||
valeur: régime = 'réel simplifié'
|
||||
|
|
|
@ -8,12 +8,12 @@
|
|||
"url": "https://github.com/betagouv/mon-entreprise.git",
|
||||
"directory": "site"
|
||||
},
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"main": "./source/entry-empty.js",
|
||||
"engines": {
|
||||
"node": ">=12.16.1"
|
||||
},
|
||||
"type": "module",
|
||||
"browserslist": [
|
||||
"> 1% in FR",
|
||||
"not ie < 11"
|
||||
|
@ -54,6 +54,7 @@
|
|||
"@internationalized/number": "^3.0.3",
|
||||
"@mui/material": "^5.0.4",
|
||||
"@mui/styled-engine": "npm:@mui/styled-engine-sc@latest",
|
||||
"@react-aria/accordion": "^3.0.0-alpha.5",
|
||||
"@react-aria/button": "^3.4.1",
|
||||
"@react-aria/checkbox": "^3.2.3",
|
||||
"@react-aria/dialog": "^3.1.6",
|
||||
|
@ -71,6 +72,7 @@
|
|||
"@react-stately/radio": "^3.3.2",
|
||||
"@react-stately/searchfield": "^3.1.3",
|
||||
"@react-stately/toggle": "^3.2.3",
|
||||
"@react-stately/tree": "^3.2.3",
|
||||
"@sentry/integrations": "^6.19.6",
|
||||
"@sentry/react": "^6.19.6",
|
||||
"@sentry/tracing": "^6.19.6",
|
||||
|
@ -80,8 +82,8 @@
|
|||
"iframe-resizer": "^4.3.2",
|
||||
"markdown-to-jsx": "^7.1.7",
|
||||
"modele-social": "workspace:^",
|
||||
"publicodes": "^1.0.0-beta.32",
|
||||
"publicodes-react": "^1.0.0-beta.32",
|
||||
"publicodes": "=1.0.0-beta.33",
|
||||
"publicodes-react": "1.0.0-beta.33",
|
||||
"ramda": "^0.27.0",
|
||||
"react": "^17.0.0",
|
||||
"react-color": "^2.14.0",
|
||||
|
@ -104,6 +106,7 @@
|
|||
"whatwg-fetch": "^3.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@react-types/accordion": "^3.0.0-alpha.4",
|
||||
"@react-types/numberfield": "^3.1.0",
|
||||
"@react-types/searchfield": "^3.1.2",
|
||||
"@redux-devtools/extension": "^3.2.2",
|
||||
|
@ -127,8 +130,8 @@
|
|||
"@types/recharts": "^1.8.16",
|
||||
"@types/serve-static": "^1.13.10",
|
||||
"@types/styled-components": "^5.1.24",
|
||||
"@vitejs/plugin-legacy": "^1.7.1",
|
||||
"@vitejs/plugin-react": "^1.2.0",
|
||||
"@vitejs/plugin-legacy": "^1.8.1",
|
||||
"@vitejs/plugin-react": "^1.3.1",
|
||||
"cypress": "^9.5.4",
|
||||
"cypress-plugin-tab": "^1.0.5",
|
||||
"cypress-wait-until": "^1.7.2",
|
||||
|
|
|
@ -29,7 +29,7 @@ import IntegrationTest from './pages/Dev/IntegrationTest'
|
|||
import Personas from './pages/Dev/Personas'
|
||||
import Sitemap from './pages/Dev/Sitemap'
|
||||
import Documentation from './pages/Documentation'
|
||||
import Gérer from './pages/Gerer'
|
||||
import Gérer from './pages/gerer'
|
||||
import Iframes from './pages/Iframes'
|
||||
import Integration from './pages/integration/index'
|
||||
import Landing from './pages/Landing/Landing'
|
||||
|
@ -38,6 +38,7 @@ import Simulateurs from './pages/Simulateurs'
|
|||
import Stats from './pages/Stats/LazyStats'
|
||||
import Provider, { ProviderProps } from './Provider'
|
||||
import redirects from './redirects'
|
||||
import { RootState } from './reducers/rootReducer'
|
||||
import { constructLocalizedSitePath } from './sitePaths'
|
||||
import {
|
||||
retrievePersistedChoixStatutJuridique,
|
||||
|
@ -47,6 +48,10 @@ import {
|
|||
retrievePersistedCompanySituation,
|
||||
setupCompanySituationPersistence,
|
||||
} from './storage/persistCompanySituation'
|
||||
import {
|
||||
retrievePersistedDRISituation,
|
||||
setupDRISituationPersistence,
|
||||
} from './storage/persistDRISituation'
|
||||
import { setupSimulationPersistence } from './storage/persistSimulation'
|
||||
|
||||
type RootProps = {
|
||||
|
@ -79,11 +84,13 @@ export default function Root({
|
|||
onStoreCreated={(store) => {
|
||||
setupChoixStatutJuridiquePersistence(store)
|
||||
setupCompanySituationPersistence(store)
|
||||
setupDRISituationPersistence(store)
|
||||
setupSimulationPersistence(store)
|
||||
}}
|
||||
initialStore={{
|
||||
choixStatutJuridique: retrievePersistedChoixStatutJuridique(),
|
||||
companySituation: retrievePersistedCompanySituation(),
|
||||
DRISituation: retrievePersistedDRISituation(),
|
||||
}}
|
||||
>
|
||||
<EngineProvider value={engine}>
|
||||
|
@ -98,13 +105,16 @@ const Router = () => {
|
|||
const simulatorSituation = useSelector(situationSelector)
|
||||
const configSituation = useSelector(configSituationSelector)
|
||||
const companySituation = useSelector(companySituationSelector)
|
||||
const DRISituation = useSelector((state: RootState) => state.DRISituation)
|
||||
|
||||
const situation = useMemo(
|
||||
() => ({
|
||||
...DRISituation,
|
||||
...companySituation,
|
||||
...configSituation,
|
||||
...simulatorSituation,
|
||||
}),
|
||||
[configSituation, simulatorSituation, companySituation]
|
||||
[configSituation, simulatorSituation, companySituation, DRISituation]
|
||||
)
|
||||
|
||||
return (
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
import { Bénéfice } from '@/api/activité-vers-bénéfice'
|
||||
import { Commune } from '@/api/commune'
|
||||
import { FabriqueSocialEntreprise } from '@/api/fabrique-social'
|
||||
|
||||
export type CompanyActions = ReturnType<
|
||||
typeof resetCompany | typeof setCompany | typeof addCommuneDetails
|
||||
| typeof resetCompany
|
||||
| typeof setCompany
|
||||
| typeof addCommuneDetails
|
||||
| typeof setBénéficeType
|
||||
>
|
||||
|
||||
export const resetCompany = () =>
|
||||
|
@ -16,6 +20,12 @@ export const addCommuneDetails = (details: Commune) =>
|
|||
details,
|
||||
} as const)
|
||||
|
||||
export const setBénéficeType = (bénéfice: NonNullable<Bénéfice>) =>
|
||||
({
|
||||
type: 'COMPANY::SET_BÉNÉFICE_TYPE',
|
||||
bénéfice,
|
||||
} as const)
|
||||
|
||||
export const setCompany = (entreprise: FabriqueSocialEntreprise) => {
|
||||
return {
|
||||
type: 'COMPANY::SET_EXISTING_COMPANY',
|
||||
|
|
|
@ -1,12 +1,9 @@
|
|||
import { FabriqueSocialEntreprise } from '@/api/fabrique-social'
|
||||
import { useNextQuestionUrl } from '@/selectors/companyStatusSelectors'
|
||||
import { LegalStatusRequirements } from '@/types/companyTypes'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { useDispatch } from 'react-redux'
|
||||
import { useHistory } from 'react-router'
|
||||
import { useNextQuestionUrl } from '@/selectors/companyStatusSelectors'
|
||||
import { LegalStatusRequirements } from '@/types/companyTypes'
|
||||
import { Action } from './actions'
|
||||
import { addCommuneDetails, setCompany } from './companyActions'
|
||||
import { fetchCommuneDetails } from '@/api/commune'
|
||||
|
||||
export type CompanyStatusAction = ReturnType<
|
||||
| typeof isSoleProprietorship
|
||||
|
@ -74,21 +71,3 @@ export const resetCompanyStatusChoice = (
|
|||
type: 'RESET_COMPANY_STATUS_CHOICE',
|
||||
answersToReset,
|
||||
} as const)
|
||||
|
||||
export const useSetEntreprise = () => {
|
||||
const dispatch = useDispatch()
|
||||
|
||||
return (entreprise: FabriqueSocialEntreprise | null) => {
|
||||
if (entreprise === null) {
|
||||
return
|
||||
}
|
||||
dispatch(setCompany(entreprise))
|
||||
void fetchCommuneDetails(
|
||||
entreprise.firstMatchingEtablissement.codeCommuneEtablissement,
|
||||
entreprise.firstMatchingEtablissement.codePostalEtablissement
|
||||
).then(
|
||||
(communeDetails) =>
|
||||
communeDetails && dispatch(addCommuneDetails(communeDetails))
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,730 @@
|
|||
{
|
||||
"01.11Z": "BA",
|
||||
"01.12Z": "BA",
|
||||
"01.13Z": "BA",
|
||||
"01.14Z": "BA",
|
||||
"01.15Z": "BA",
|
||||
"01.16Z": "BA",
|
||||
"01.19Z": "BA",
|
||||
"01.21Z": "BA",
|
||||
"01.22Z": "BA",
|
||||
"01.23Z": "BA",
|
||||
"01.24Z": "BA",
|
||||
"01.25Z": "BA",
|
||||
"01.26Z": "BA",
|
||||
"01.27Z": "BA",
|
||||
"01.28Z": "BA",
|
||||
"01.29Z": "BA",
|
||||
"01.30Z": "BA",
|
||||
"01.41Z": "BA",
|
||||
"01.42Z": "BA",
|
||||
"01.43Z": "BA",
|
||||
"01.44Z": "BA",
|
||||
"01.45Z": "BA",
|
||||
"01.46Z": "BA",
|
||||
"01.47Z": "BA",
|
||||
"01.49Z": "BA",
|
||||
"01.50Z": "BA",
|
||||
"01.61Z": "BIC",
|
||||
"01.62Z": "BA",
|
||||
"01.63Z": "BA",
|
||||
"01.64Z": "BA",
|
||||
"01.70Z": "BNC",
|
||||
"02.10Z": "BA",
|
||||
"02.20Z": "BA",
|
||||
"02.30Z": "BA",
|
||||
"02.40Z": "BA",
|
||||
"03.11Z": "BA",
|
||||
"03.12Z": "BA",
|
||||
"03.21Z": "BA",
|
||||
"03.22Z": "BA",
|
||||
"05.10Z": "BIC",
|
||||
"05.20Z": "BIC",
|
||||
"06.10Z": "BIC",
|
||||
"06.20Z": "BIC",
|
||||
"07.10Z": "BIC",
|
||||
"07.21Z": "BIC",
|
||||
"07.29Z": "BIC",
|
||||
"08.11Z": "BIC",
|
||||
"08.12Z": "BIC",
|
||||
"08.91Z": "BIC",
|
||||
"08.92Z": "BIC",
|
||||
"08.93Z": "BIC",
|
||||
"08.99Z": "BIC",
|
||||
"09.10Z": "BIC",
|
||||
"09.90Z": "BIC",
|
||||
"10.11Z": "BIC",
|
||||
"10.12Z": "BIC",
|
||||
"10.13A": "BIC",
|
||||
"10.13B": "BIC",
|
||||
"10.20Z": "BIC",
|
||||
"10.31Z": "BIC",
|
||||
"10.32Z": "BIC",
|
||||
"10.39A": "BIC",
|
||||
"10.39B": "BIC",
|
||||
"10.41A": "BIC",
|
||||
"10.41B": "BIC",
|
||||
"10.42Z": "BIC",
|
||||
"10.51A": "BIC",
|
||||
"10.51B": "BIC",
|
||||
"10.51C": "BIC",
|
||||
"10.51D": "BIC",
|
||||
"10.52Z": "BIC",
|
||||
"10.61A": "BIC",
|
||||
"10.61B": "BIC",
|
||||
"10.62Z": "BIC",
|
||||
"10.71A": "BIC",
|
||||
"10.71B": "BIC",
|
||||
"10.71C": "BIC",
|
||||
"10.71D": "BIC",
|
||||
"10.72Z": "BIC",
|
||||
"10.73Z": "BIC",
|
||||
"10.81Z": "BIC",
|
||||
"10.82Z": "BIC",
|
||||
"10.83Z": "BIC",
|
||||
"10.84Z": "BIC",
|
||||
"10.85Z": "BIC",
|
||||
"10.86Z": "BIC",
|
||||
"10.89Z": "BIC",
|
||||
"10.91Z": "BIC",
|
||||
"10.92Z": "BIC",
|
||||
"11.01Z": "BIC",
|
||||
"11.02A": "BIC",
|
||||
"11.02B": "BIC",
|
||||
"11.03Z": "BIC",
|
||||
"11.04Z": "BIC",
|
||||
"11.05Z": "BIC",
|
||||
"11.06Z": "BIC",
|
||||
"11.07A": "BIC",
|
||||
"11.07B": "BIC",
|
||||
"12.00Z": "BIC",
|
||||
"13.10Z": "BIC",
|
||||
"13.20Z": "BIC",
|
||||
"13.30Z": "BIC",
|
||||
"13.91Z": "BIC",
|
||||
"13.92Z": "BIC",
|
||||
"13.93Z": "BIC",
|
||||
"13.94Z": "BIC",
|
||||
"13.95Z": "BIC",
|
||||
"13.96Z": "BIC",
|
||||
"13.99Z": "BIC",
|
||||
"14.11Z": "BIC",
|
||||
"14.12Z": "BIC",
|
||||
"14.13Z": "BIC",
|
||||
"14.14Z": "BIC",
|
||||
"14.19Z": "BIC",
|
||||
"14.20Z": "BIC",
|
||||
"14.31Z": "BIC",
|
||||
"14.39Z": "BIC",
|
||||
"15.11Z": "BIC",
|
||||
"15.12Z": "BIC",
|
||||
"15.20Z": "BIC",
|
||||
"16.10A": "BIC",
|
||||
"16.10B": "BIC",
|
||||
"16.21Z": "BIC",
|
||||
"16.22Z": "BIC",
|
||||
"16.23Z": "BIC",
|
||||
"16.24Z": "BIC",
|
||||
"16.29Z": "BIC",
|
||||
"17.11Z": "BIC",
|
||||
"17.12Z": "BIC",
|
||||
"17.21A": "BIC",
|
||||
"17.21B": "BIC",
|
||||
"17.21C": "BIC",
|
||||
"17.22Z": "BIC",
|
||||
"17.23Z": "BIC",
|
||||
"17.24Z": "BIC",
|
||||
"17.29Z": "BIC",
|
||||
"18.11Z": "BIC",
|
||||
"18.12Z": "BIC/BNC",
|
||||
"18.13Z": "BIC/BNC",
|
||||
"18.14Z": "BIC",
|
||||
"18.20Z": "BIC",
|
||||
"19.10Z": "BIC",
|
||||
"19.20Z": "BIC",
|
||||
"20.11Z": "BIC",
|
||||
"20.12Z": "BIC",
|
||||
"20.13A": "BIC",
|
||||
"20.13B": "BIC",
|
||||
"20.14Z": "BIC",
|
||||
"20.15Z": "BIC",
|
||||
"20.16Z": "BIC",
|
||||
"20.17Z": "BIC",
|
||||
"20.20Z": "BIC",
|
||||
"20.30Z": "BIC",
|
||||
"20.41Z": "BIC",
|
||||
"20.42Z": "BIC",
|
||||
"20.51Z": "BIC",
|
||||
"20.52Z": "BIC",
|
||||
"20.53Z": "BIC",
|
||||
"20.59Z": "BIC",
|
||||
"20.60Z": "BIC",
|
||||
"21.10Z": "BIC",
|
||||
"21.20Z": "BIC",
|
||||
"22.11Z": "BIC",
|
||||
"22.19Z": "BIC",
|
||||
"22.21Z": "BIC",
|
||||
"22.22Z": "BIC",
|
||||
"22.23Z": "BIC",
|
||||
"22.29A": "BIC",
|
||||
"22.29B": "BIC",
|
||||
"23.11Z": "BIC",
|
||||
"23.12Z": "BIC",
|
||||
"23.13Z": "BIC",
|
||||
"23.14Z": "BIC",
|
||||
"23.19Z": "BIC",
|
||||
"23.20Z": "BIC",
|
||||
"23.31Z": "BIC",
|
||||
"23.32Z": "BIC",
|
||||
"23.41Z": "BIC",
|
||||
"23.42Z": "BIC",
|
||||
"23.43Z": "BIC",
|
||||
"23.44Z": "BIC",
|
||||
"23.49Z": "BIC",
|
||||
"23.51Z": "BIC",
|
||||
"23.52Z": "BIC",
|
||||
"23.61Z": "BIC",
|
||||
"23.62Z": "BIC",
|
||||
"23.63Z": "BIC",
|
||||
"23.64Z": "BIC",
|
||||
"23.65Z": "BIC",
|
||||
"23.69Z": "BIC",
|
||||
"23.70Z": "BIC",
|
||||
"23.91Z": "BIC",
|
||||
"23.99Z": "BIC",
|
||||
"24.10Z": "BIC",
|
||||
"24.20Z": "BIC",
|
||||
"24.31Z": "BIC",
|
||||
"24.32Z": "BIC",
|
||||
"24.33Z": "BIC",
|
||||
"24.34Z": "BIC",
|
||||
"24.41Z": "BIC",
|
||||
"24.42Z": "BIC",
|
||||
"24.43Z": "BIC",
|
||||
"24.44Z": "BIC",
|
||||
"24.45Z": "BIC",
|
||||
"24.46Z": "BIC",
|
||||
"24.51Z": "BIC",
|
||||
"24.52Z": "BIC",
|
||||
"24.53Z": "BIC",
|
||||
"24.54Z": "BIC",
|
||||
"25.11Z": "BIC",
|
||||
"25.12Z": "BIC",
|
||||
"25.21Z": "BIC",
|
||||
"25.29Z": "BIC",
|
||||
"25.30Z": "BIC",
|
||||
"25.40Z": "BIC",
|
||||
"25.50A": "BIC",
|
||||
"25.50B": "BIC",
|
||||
"25.61Z": "BIC",
|
||||
"25.62A": "BIC",
|
||||
"25.62B": "BIC",
|
||||
"25.71Z": "BIC",
|
||||
"25.72Z": "BIC",
|
||||
"25.73A": "BIC",
|
||||
"25.73B": "BIC",
|
||||
"25.91Z": "BIC",
|
||||
"25.92Z": "BIC",
|
||||
"25.93Z": "BIC",
|
||||
"25.94Z": "BIC",
|
||||
"25.99A": "BIC",
|
||||
"25.99B": "BIC",
|
||||
"26.11Z": "BIC",
|
||||
"26.12Z": "BIC",
|
||||
"26.20Z": "BIC",
|
||||
"26.30Z": "BIC",
|
||||
"26.40Z": "BIC",
|
||||
"26.51A": "BIC",
|
||||
"26.51B": "BIC",
|
||||
"26.52Z": "BIC",
|
||||
"26.60Z": "BIC",
|
||||
"26.70Z": "BIC",
|
||||
"26.80Z": "BIC",
|
||||
"27.11Z": "BIC",
|
||||
"27.12Z": "BIC",
|
||||
"27.20Z": "BIC",
|
||||
"27.31Z": "BIC",
|
||||
"27.32Z": "BIC",
|
||||
"27.33Z": "BIC",
|
||||
"27.40Z": "BIC",
|
||||
"27.51Z": "BIC",
|
||||
"27.52Z": "BIC",
|
||||
"27.90Z": "BIC",
|
||||
"28.11Z": "BIC",
|
||||
"28.12Z": "BIC",
|
||||
"28.13Z": "BIC",
|
||||
"28.14Z": "BIC",
|
||||
"28.15Z": "BIC",
|
||||
"28.21Z": "BIC",
|
||||
"28.22Z": "BIC",
|
||||
"28.23Z": "BIC",
|
||||
"28.24Z": "BIC",
|
||||
"28.25Z": "BIC",
|
||||
"28.29A": "BIC",
|
||||
"28.29B": "BIC",
|
||||
"28.30Z": "BIC",
|
||||
"28.41Z": "BIC",
|
||||
"28.49Z": "BIC",
|
||||
"28.91Z": "BIC",
|
||||
"28.92Z": "BIC",
|
||||
"28.93Z": "BIC",
|
||||
"28.94Z": "BIC",
|
||||
"28.95Z": "BIC",
|
||||
"28.96Z": "BIC",
|
||||
"28.99A": "BIC",
|
||||
"28.99B": "BIC",
|
||||
"29.10Z": "BIC",
|
||||
"29.20Z": "BIC",
|
||||
"29.31Z": "BIC",
|
||||
"29.32Z": "BIC",
|
||||
"30.11Z": "BIC",
|
||||
"30.12Z": "BIC",
|
||||
"30.20Z": "BIC",
|
||||
"30.30Z": "BIC",
|
||||
"30.40Z": "BIC",
|
||||
"30.91Z": "BIC",
|
||||
"30.92Z": "BIC",
|
||||
"30.99Z": "BIC",
|
||||
"31.01Z": "BIC",
|
||||
"31.02Z": "BIC",
|
||||
"31.03Z": "BIC",
|
||||
"31.09A": "BIC",
|
||||
"31.09B": "BIC",
|
||||
"32.11Z": "BIC",
|
||||
"32.12Z": "BIC",
|
||||
"32.13Z": "BIC",
|
||||
"32.20Z": "BIC",
|
||||
"32.30Z": "BIC",
|
||||
"32.40Z": "BIC",
|
||||
"32.50A": "BIC",
|
||||
"32.50B": "BIC",
|
||||
"32.91Z": "BIC",
|
||||
"32.99Z": "BIC",
|
||||
"33.11Z": "BIC",
|
||||
"33.12Z": "BIC",
|
||||
"33.13Z": "BIC",
|
||||
"33.14Z": "BIC",
|
||||
"33.15Z": "BIC",
|
||||
"33.16Z": "BIC",
|
||||
"33.17Z": "BIC",
|
||||
"33.19Z": "BIC",
|
||||
"33.20A": "BIC",
|
||||
"33.20B": "BIC",
|
||||
"33.20C": "BIC",
|
||||
"33.20D": "BIC",
|
||||
"35.11Z": "BIC",
|
||||
"35.12Z": "BIC",
|
||||
"35.13Z": "BIC",
|
||||
"35.14Z": "BIC",
|
||||
"35.21Z": "BIC",
|
||||
"35.22Z": "BIC",
|
||||
"35.23Z": "BIC",
|
||||
"35.30Z": "BIC",
|
||||
"36.00Z": "BIC",
|
||||
"37.00Z": "BIC",
|
||||
"38.11Z": "BIC",
|
||||
"38.12Z": "BIC",
|
||||
"38.21Z": "BIC",
|
||||
"38.22Z": "BIC",
|
||||
"38.31Z": "BIC",
|
||||
"38.32Z": "BIC",
|
||||
"39.00Z": "BIC",
|
||||
"41.10A": "BIC",
|
||||
"41.10B": "BIC",
|
||||
"41.10C": "BIC",
|
||||
"41.10D": "BIC",
|
||||
"41.20A": "BIC",
|
||||
"41.20B": "BIC",
|
||||
"42.11Z": "BIC",
|
||||
"42.12Z": "BIC",
|
||||
"42.13A": "BIC",
|
||||
"42.13B": "BIC",
|
||||
"42.21Z": "BIC",
|
||||
"42.22Z": "BIC",
|
||||
"42.91Z": "BIC",
|
||||
"42.99Z": "BIC",
|
||||
"43.11Z": "BIC",
|
||||
"43.12A": "BIC",
|
||||
"43.12B": "BIC",
|
||||
"43.13Z": "BIC",
|
||||
"43.21A": "BIC",
|
||||
"43.21B": "BIC",
|
||||
"43.22A": "BIC",
|
||||
"43.22B": "BIC",
|
||||
"43.29A": "BIC",
|
||||
"43.29B": "BIC",
|
||||
"43.31Z": "BIC",
|
||||
"43.32A": "BIC",
|
||||
"43.32B": "BIC",
|
||||
"43.32C": "BIC",
|
||||
"43.33Z": "BIC",
|
||||
"43.34Z": "BIC",
|
||||
"43.39Z": "BIC",
|
||||
"43.91A": "BIC",
|
||||
"43.91B": "BIC",
|
||||
"43.99A": "BIC",
|
||||
"43.99B": "BIC",
|
||||
"43.99C": "BIC",
|
||||
"43.99D": "BIC",
|
||||
"43.99E": "BIC",
|
||||
"45.11Z": "BIC",
|
||||
"45.19Z": "BIC",
|
||||
"45.20A": "BIC",
|
||||
"45.20B": "BIC",
|
||||
"45.31Z": "BIC",
|
||||
"45.32Z": "BIC",
|
||||
"45.40Z": "BIC",
|
||||
"46.11Z": "BIC",
|
||||
"46.12A": "BIC",
|
||||
"46.12B": "BIC",
|
||||
"46.13Z": "BIC",
|
||||
"46.14Z": "BIC",
|
||||
"46.15Z": "BIC",
|
||||
"46.16Z": "BIC",
|
||||
"46.17A": "BIC",
|
||||
"46.17B": "BIC",
|
||||
"46.18Z": "BIC",
|
||||
"46.19A": "BIC",
|
||||
"46.19B": "BNC",
|
||||
"46.21Z": "BIC",
|
||||
"46.22Z": "BIC",
|
||||
"46.23Z": "BIC",
|
||||
"46.24Z": "BIC",
|
||||
"46.31Z": "BIC",
|
||||
"46.32A": "BIC",
|
||||
"46.32B": "BIC",
|
||||
"46.32C": "BIC",
|
||||
"46.33Z": "BIC",
|
||||
"46.34Z": "BIC",
|
||||
"46.35Z": "BIC",
|
||||
"46.36Z": "BIC",
|
||||
"46.37Z": "BIC",
|
||||
"46.38A": "BIC",
|
||||
"46.38B": "BIC",
|
||||
"46.39A": "BIC",
|
||||
"46.39B": "BIC",
|
||||
"46.41Z": "BIC",
|
||||
"46.42Z": "BIC",
|
||||
"46.43Z": "BIC",
|
||||
"46.44Z": "BIC",
|
||||
"46.45Z": "BIC",
|
||||
"46.46Z": "BIC",
|
||||
"46.47Z": "BIC",
|
||||
"46.48Z": "BIC",
|
||||
"46.49Z": "BIC",
|
||||
"46.51Z": "BIC",
|
||||
"46.52Z": "BIC",
|
||||
"46.61Z": "BIC",
|
||||
"46.62Z": "BIC",
|
||||
"46.63Z": "BIC",
|
||||
"46.64Z": "BIC",
|
||||
"46.65Z": "BIC",
|
||||
"46.66Z": "BIC",
|
||||
"46.69A": "BIC",
|
||||
"46.69B": "BIC",
|
||||
"46.69C": "BIC",
|
||||
"46.71Z": "BIC",
|
||||
"46.72Z": "BIC",
|
||||
"46.73A": "BIC",
|
||||
"46.73B": "BIC",
|
||||
"46.74A": "BIC",
|
||||
"46.74B": "BIC",
|
||||
"46.75Z": "BIC",
|
||||
"46.76Z": "BIC",
|
||||
"46.77Z": "BIC",
|
||||
"46.90Z": "BIC",
|
||||
"47.11A": "BIC",
|
||||
"47.11B": "BIC",
|
||||
"47.11C": "BIC",
|
||||
"47.11D": "BIC",
|
||||
"47.11E": "BIC",
|
||||
"47.11F": "BIC",
|
||||
"47.19A": "BIC",
|
||||
"47.19B": "BIC",
|
||||
"47.21Z": "BIC",
|
||||
"47.22Z": "BIC",
|
||||
"47.23Z": "BIC",
|
||||
"47.24Z": "BIC",
|
||||
"47.25Z": "BIC",
|
||||
"47.26Z": "BIC",
|
||||
"47.29Z": "BIC",
|
||||
"47.30Z": "BIC",
|
||||
"47.41Z": "BIC",
|
||||
"47.42Z": "BIC",
|
||||
"47.43Z": "BIC",
|
||||
"47.51Z": "BIC",
|
||||
"47.52A": "BIC",
|
||||
"47.52B": "BIC",
|
||||
"47.53Z": "BIC",
|
||||
"47.54Z": "BIC",
|
||||
"47.59A": "BIC",
|
||||
"47.59B": "BIC",
|
||||
"47.61Z": "BIC",
|
||||
"47.62Z": "BIC",
|
||||
"47.63Z": "BIC",
|
||||
"47.64Z": "BIC",
|
||||
"47.65Z": "BIC",
|
||||
"47.71Z": "BIC",
|
||||
"47.72A": "BIC",
|
||||
"47.72B": "BIC",
|
||||
"47.73Z": "BIC",
|
||||
"47.74Z": "BIC",
|
||||
"47.75Z": "BIC",
|
||||
"47.76Z": "BIC",
|
||||
"47.77Z": "BIC",
|
||||
"47.78A": "BIC",
|
||||
"47.78B": "BIC",
|
||||
"47.78C": "BIC",
|
||||
"47.79Z": "BIC",
|
||||
"47.81Z": "BIC",
|
||||
"47.82Z": "BIC",
|
||||
"47.89Z": "BIC",
|
||||
"47.91A": "BIC",
|
||||
"47.91B": "BIC",
|
||||
"47.99A": "BIC",
|
||||
"47.99B": "BIC",
|
||||
"49.10Z": "BIC",
|
||||
"49.20Z": "BIC",
|
||||
"49.31Z": "BIC",
|
||||
"49.32Z": "BIC",
|
||||
"49.39A": "BIC",
|
||||
"49.39B": "BIC",
|
||||
"49.39C": "BIC",
|
||||
"49.41A": "BIC",
|
||||
"49.41B": "BIC",
|
||||
"49.41C": "BIC",
|
||||
"49.42Z": "BIC",
|
||||
"49.50Z": "BIC",
|
||||
"50.10Z": "BIC",
|
||||
"50.20Z": "BIC",
|
||||
"50.30Z": "BIC",
|
||||
"50.40Z": "BIC",
|
||||
"51.10Z": "BIC",
|
||||
"51.21Z": "BIC",
|
||||
"51.22Z": "BIC",
|
||||
"52.10A": "BIC",
|
||||
"52.10B": "BIC",
|
||||
"52.21Z": "BIC",
|
||||
"52.22Z": "BIC",
|
||||
"52.23Z": "BIC",
|
||||
"52.24A": "BIC",
|
||||
"52.24B": "BIC",
|
||||
"52.29A": "BIC",
|
||||
"52.29B": "BIC",
|
||||
"53.10Z": "BIC",
|
||||
"53.20Z": "BIC",
|
||||
"55.10Z": "BIC",
|
||||
"55.20Z": "BIC",
|
||||
"55.30Z": "BIC",
|
||||
"55.90Z": "BIC",
|
||||
"56.10A": "BIC",
|
||||
"56.10B": "BIC",
|
||||
"56.10C": "BIC",
|
||||
"56.21Z": "BIC",
|
||||
"56.29A": "BIC",
|
||||
"56.29B": "BIC",
|
||||
"56.30Z": "BIC",
|
||||
"58.11Z": "BIC",
|
||||
"58.12Z": "BIC",
|
||||
"58.13Z": "BIC",
|
||||
"58.14Z": "BIC",
|
||||
"58.19Z": "BIC",
|
||||
"58.21Z": "BIC",
|
||||
"58.29A": "BIC",
|
||||
"58.29B": "BIC",
|
||||
"58.29C": "BIC/BNC",
|
||||
"59.11A": "BIC",
|
||||
"59.11B": "BIC",
|
||||
"59.11C": "BIC",
|
||||
"59.12Z": "BIC/BNC",
|
||||
"59.13A": "BIC",
|
||||
"59.13B": "BIC",
|
||||
"59.14Z": "BIC",
|
||||
"59.20Z": "BIC",
|
||||
"60.10Z": "BIC",
|
||||
"60.20A": "BIC",
|
||||
"60.20B": "BIC",
|
||||
"61.10Z": "BIC",
|
||||
"61.20Z": "BIC",
|
||||
"61.30Z": "BIC",
|
||||
"61.90Z": "BIC",
|
||||
"62.01Z": "BIC/BNC",
|
||||
"62.02A": "BNC",
|
||||
"62.02B": "BIC",
|
||||
"62.03Z": "BIC",
|
||||
"62.09Z": "BIC/BNC",
|
||||
"63.11Z": "BIC/BNC",
|
||||
"63.12Z": "BIC",
|
||||
"63.91Z": "BIC/BNC",
|
||||
"63.99Z": "BIC/BNC",
|
||||
"64.11Z": "BIC",
|
||||
"64.19Z": "BIC",
|
||||
"64.20Z": "BIC",
|
||||
"64.30Z": "BIC",
|
||||
"64.91Z": "BIC",
|
||||
"64.92Z": "BIC",
|
||||
"64.99Z": "BIC",
|
||||
"65.11Z": "BIC",
|
||||
"65.12Z": "BIC",
|
||||
"65.20Z": "BIC",
|
||||
"65.30Z": "BIC",
|
||||
"66.11Z": "BIC/BNC",
|
||||
"66.12Z": "BIC",
|
||||
"66.19A": "BIC",
|
||||
"66.19B": "BIC/BNC",
|
||||
"66.21Z": "BNC",
|
||||
"66.22Z": "BIC/BNC",
|
||||
"66.29Z": "BIC/BNC",
|
||||
"66.30Z": "BNC",
|
||||
"68.10Z": "BIC",
|
||||
"68.20A": "BIC",
|
||||
"68.20B": "BIC/BNC",
|
||||
"68.31Z": "BIC",
|
||||
"68.32A": "BIC",
|
||||
"68.32B": "BIC",
|
||||
"69.10Z": "BNC",
|
||||
"69.20Z": "BNC",
|
||||
"70.10Z": "BIC",
|
||||
"70.21Z": "BNC",
|
||||
"70.22Z": "BNC",
|
||||
"71.11Z": "BNC",
|
||||
"71.12A": "BNC",
|
||||
"71.12B": "BNC",
|
||||
"71.20A": "BIC",
|
||||
"71.20B": "BIC",
|
||||
"72.11Z": "BIC/BNC",
|
||||
"72.19Z": "BIC/BNC",
|
||||
"72.20Z": "BIC/BNC",
|
||||
"73.11Z": "BIC/BNC",
|
||||
"73.12Z": "BIC/BNC",
|
||||
"73.20Z": "BIC/BNC",
|
||||
"74.10Z": "BNC",
|
||||
"74.20Z": "BIC/BNC",
|
||||
"74.30Z": "BIC/BNC",
|
||||
"74.90A": "BNC",
|
||||
"74.90B": "BIC/BNC",
|
||||
"75.00Z": "BNC",
|
||||
"77.11A": "BIC",
|
||||
"77.11B": "BIC",
|
||||
"77.12Z": "BIC",
|
||||
"77.21Z": "BIC",
|
||||
"77.22Z": "BIC",
|
||||
"77.29Z": "BIC",
|
||||
"77.31Z": "BIC",
|
||||
"77.32Z": "BIC",
|
||||
"77.33Z": "BIC",
|
||||
"77.34Z": "BIC",
|
||||
"77.35Z": "BIC",
|
||||
"77.39Z": "BIC",
|
||||
"77.40Z": "BIC",
|
||||
"78.10Z": "BIC/BNC",
|
||||
"78.20Z": "BIC",
|
||||
"78.30Z": "BIC/BNC",
|
||||
"79.11Z": "BIC",
|
||||
"79.12Z": "BIC/BNC",
|
||||
"79.90Z": "BIC/BNC",
|
||||
"80.10Z": "BIC/BNC",
|
||||
"80.20Z": "BNC",
|
||||
"80.30Z": "BNC",
|
||||
"81.10Z": "BIC/BNC",
|
||||
"81.21Z": "BIC",
|
||||
"81.22Z": "BIC",
|
||||
"81.29A": "BIC",
|
||||
"81.29B": "BIC/BNC",
|
||||
"81.30Z": "BIC",
|
||||
"82.11Z": "BIC/BNC",
|
||||
"82.19Z": "BIC/BNC",
|
||||
"82.20Z": "BIC",
|
||||
"82.30Z": "BIC/BNC",
|
||||
"82.91Z": "BIC/BNC",
|
||||
"82.92Z": "BIC",
|
||||
"82.99Z": "BIC/BNC",
|
||||
"84.11Z": "BIC",
|
||||
"84.12Z": "BIC",
|
||||
"84.13Z": "BIC",
|
||||
"84.21Z": "BIC",
|
||||
"84.22Z": "BIC",
|
||||
"84.23Z": "BIC",
|
||||
"84.24Z": "BIC",
|
||||
"84.25Z": "BIC",
|
||||
"84.30A": "BIC",
|
||||
"84.30B": "BIC",
|
||||
"84.30C": "BIC",
|
||||
"85.10Z": "BIC",
|
||||
"85.20Z": "BIC",
|
||||
"85.31Z": "BIC",
|
||||
"85.32Z": "BIC",
|
||||
"85.41Z": "BIC",
|
||||
"85.42Z": "BIC",
|
||||
"85.51Z": "BIC/BNC",
|
||||
"85.52Z": "BNC",
|
||||
"85.53Z": "BIC/BNC",
|
||||
"85.59A": "BNC",
|
||||
"85.59B": "BNC",
|
||||
"85.60Z": "BNC",
|
||||
"86.10Z": "BNC",
|
||||
"86.21Z": "BNC",
|
||||
"86.22A": "BNC",
|
||||
"86.22B": "BNC",
|
||||
"86.22C": "BNC",
|
||||
"86.23Z": "BNC",
|
||||
"86.90A": "BIC",
|
||||
"86.90B": "BNC",
|
||||
"86.90C": "BIC",
|
||||
"86.90D": "BNC",
|
||||
"86.90E": "BIC/BNC",
|
||||
"86.90F": "BNC",
|
||||
"87.10A": "BIC",
|
||||
"87.10B": "BIC",
|
||||
"87.10C": "BIC",
|
||||
"87.20A": "BIC",
|
||||
"87.20B": "BIC",
|
||||
"87.30A": "BIC",
|
||||
"87.30B": "BIC",
|
||||
"87.90A": "BIC",
|
||||
"87.90B": "BIC",
|
||||
"88.10A": "BIC",
|
||||
"88.10B": "BIC/BNC",
|
||||
"88.10C": "BIC",
|
||||
"88.91A": "BIC",
|
||||
"88.91B": "BIC/BNC",
|
||||
"88.99A": "BIC",
|
||||
"88.99B": "BIC",
|
||||
"90.01Z": "BIC/BNC",
|
||||
"90.02Z": "BIC/BNC",
|
||||
"90.03A": "BIC/BNC",
|
||||
"90.03B": "BNC",
|
||||
"90.04Z": "BIC",
|
||||
"91.01Z": "BIC/BNC",
|
||||
"91.02Z": "BIC",
|
||||
"91.03Z": "BIC",
|
||||
"91.04Z": "BIC",
|
||||
"92.00Z": "BIC/BNC",
|
||||
"93.11Z": "BIC",
|
||||
"93.12Z": "BIC",
|
||||
"93.13Z": "BIC",
|
||||
"93.19Z": "BNC",
|
||||
"93.21Z": "BIC",
|
||||
"93.29Z": "BIC/BNC",
|
||||
"94.11Z": "BIC",
|
||||
"94.12Z": "BIC",
|
||||
"94.20Z": "BIC",
|
||||
"94.91Z": "BIC",
|
||||
"94.92Z": "BIC",
|
||||
"94.99Z": "BIC",
|
||||
"95.11Z": "BIC",
|
||||
"95.12Z": "BIC",
|
||||
"95.21Z": "BIC",
|
||||
"95.22Z": "BIC",
|
||||
"95.23Z": "BIC",
|
||||
"95.24Z": "BIC",
|
||||
"95.25Z": "BIC",
|
||||
"95.29Z": "BIC",
|
||||
"96.01A": "BIC",
|
||||
"96.01B": "BIC",
|
||||
"96.02A": "BIC",
|
||||
"96.02B": "BIC",
|
||||
"96.03Z": "BIC/BNC",
|
||||
"96.04Z": "BIC",
|
||||
"96.09Z": "BIC/BNC"
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
export type Bénéfice = 'BIC' | 'BA' | 'BIC/BNC' | 'BNC' | undefined
|
||||
|
||||
export default async function fetchBénéfice(
|
||||
activité: string
|
||||
): Promise<Bénéfice> {
|
||||
const data = (await import('./data.json')).default
|
||||
|
||||
return data[activité as keyof typeof data] as Bénéfice
|
||||
}
|
|
@ -34,6 +34,7 @@ export type FabriqueSocialEntreprise = {
|
|||
codeCommuneEtablissement: string
|
||||
codePostalEtablissement: string
|
||||
is_siege: boolean
|
||||
activitePrincipaleEtablissement: string
|
||||
}
|
||||
allMatchingEtablissements: Array<{
|
||||
address?: string
|
||||
|
|
|
@ -12,6 +12,7 @@ import { SimulationGoal } from './Simulation'
|
|||
import { useEngine } from './utils/EngineContext'
|
||||
import { Markdown } from './utils/markdown'
|
||||
import { Switch } from '@/design-system/switch'
|
||||
import { ExplicableRule } from './conversation/Explicable'
|
||||
|
||||
const proportions = {
|
||||
'entreprise . activité . mixte . proportions . service BIC':
|
||||
|
@ -45,7 +46,6 @@ export default function ChiffreAffairesActivitéMixte({
|
|||
<fieldset aria-label={t("Chiffre d'affaires")}>
|
||||
<SimulationGoal
|
||||
appear={false}
|
||||
alwaysShow
|
||||
onUpdateSituation={clearChiffreAffaireMixte}
|
||||
dottedName={dottedName}
|
||||
/>
|
||||
|
@ -54,7 +54,6 @@ export default function ChiffreAffairesActivitéMixte({
|
|||
<Condition expression="entreprise . activité . mixte">
|
||||
{Object.values(proportions).map((chiffreAffaires) => (
|
||||
<SimulationGoal
|
||||
alwaysShow
|
||||
small
|
||||
key={chiffreAffaires}
|
||||
onUpdateSituation={adjustProportions}
|
||||
|
@ -135,9 +134,7 @@ function ActivitéMixte() {
|
|||
Activité mixte
|
||||
</Switch>
|
||||
</Trans>
|
||||
<ButtonHelp type="aide" title={rule.title} light>
|
||||
<Markdown>{rule.rawNode.description ?? ''}</Markdown>
|
||||
</ButtonHelp>
|
||||
<ExplicableRule dottedName={rule.dottedName} light />
|
||||
</StyledActivitéMixteContainer>
|
||||
</div>
|
||||
)
|
||||
|
|
|
@ -8,6 +8,7 @@ import Engine, {
|
|||
} from 'publicodes'
|
||||
import React from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import styled, { keyframes } from 'styled-components'
|
||||
import RuleLink from './RuleLink'
|
||||
import { useEngine } from './utils/EngineContext'
|
||||
|
||||
|
@ -18,6 +19,7 @@ export type ValueProps<Names extends string> = {
|
|||
displayedUnit?: string
|
||||
precision?: number
|
||||
linkToRule?: boolean
|
||||
flashOnChange?: boolean
|
||||
} & React.HTMLProps<HTMLSpanElement>
|
||||
|
||||
export default function Value<Names extends string>({
|
||||
|
@ -25,6 +27,7 @@ export default function Value<Names extends string>({
|
|||
unit,
|
||||
engine,
|
||||
displayedUnit,
|
||||
flashOnChange = false,
|
||||
precision,
|
||||
linkToRule = true,
|
||||
...props
|
||||
|
@ -49,13 +52,36 @@ export default function Value<Names extends string>({
|
|||
if (isRule && linkToRule) {
|
||||
return (
|
||||
<RuleLink dottedName={expression as DottedName}>
|
||||
<span {...props}>{value}</span>
|
||||
<StyledValue {...props} key={value} $flashOnChange={flashOnChange}>
|
||||
{value}
|
||||
</StyledValue>
|
||||
</RuleLink>
|
||||
)
|
||||
}
|
||||
|
||||
return <span {...props}>{value}</span>
|
||||
return (
|
||||
<StyledValue {...props} key={value} $flashOnChange={flashOnChange}>
|
||||
{value}
|
||||
</StyledValue>
|
||||
)
|
||||
}
|
||||
const flash = keyframes`
|
||||
|
||||
from {
|
||||
background-color: white;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
to {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
`
|
||||
|
||||
const StyledValue = styled.span<{ $flashOnChange: boolean }>`
|
||||
animation: ${flash} 0.2s 1;
|
||||
will-change: background-color, opacity;
|
||||
`
|
||||
|
||||
type ConditionProps = {
|
||||
expression: PublicodesExpression | ASTNode
|
||||
|
@ -77,10 +103,12 @@ export function Condition({
|
|||
: value
|
||||
|
||||
if (Boolean(boolValue) !== boolValue) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error(
|
||||
`[ CONDITION NON-BOOLEENNE ] dans le composant Condition: expression=`,
|
||||
expression
|
||||
`[ CONDITION NON-BOOLEENNE ] dans le composant Condition: expression=${JSON.stringify(
|
||||
expression,
|
||||
null,
|
||||
2
|
||||
)}`
|
||||
)
|
||||
}
|
||||
if (!boolValue) {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import Emoji from '@/components/utils/Emoji'
|
||||
import { Button } from '@/design-system/buttons'
|
||||
import { Spacing } from '@/design-system/layout'
|
||||
import Popover from '@/design-system/Popover'
|
||||
import Popover from '@/design-system/popover/Popover'
|
||||
import { Strong } from '@/design-system/typography'
|
||||
import { Link } from '@/design-system/typography/link'
|
||||
import { Body, SmallBody } from '@/design-system/typography/paragraphs'
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import PopoverWithTrigger from '@/design-system/PopoverWithTrigger'
|
||||
import { PopoverWithTrigger } from '@/design-system'
|
||||
import { H2 } from '@/design-system/typography/heading'
|
||||
import { Link } from '@/design-system/typography/link'
|
||||
import { Body } from '@/design-system/typography/paragraphs'
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
import { hideNotification } from '@/actions/actions'
|
||||
import { useEngine, useInversionFail } from '@/components/utils/EngineContext'
|
||||
import { Message } from '@/design-system'
|
||||
import { Button } from '@/design-system/buttons'
|
||||
import { GenericButtonOrLinkProps } from '@/design-system/typography/link'
|
||||
import { RootState } from '@/reducers/rootReducer'
|
||||
import { DottedName } from 'modele-social'
|
||||
import Engine, { RuleNode } from 'publicodes'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import { useDispatch, useSelector } from 'react-redux'
|
||||
import { RootState } from '@/reducers/rootReducer'
|
||||
import styled from 'styled-components'
|
||||
import RuleLink from './RuleLink'
|
||||
import Emoji from './utils/Emoji'
|
||||
import { Markdown } from './utils/markdown'
|
||||
import { Message } from '@/design-system'
|
||||
|
||||
// To add a new notification to a simulator, you should create a publicodes rule
|
||||
// with the "type: notification" attribute. The display can be customized with
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import { useIsEmbedded } from '@/components/utils/embeddedContext'
|
||||
import { EngineContext } from '@/components/utils/EngineContext'
|
||||
import Meta from '@/components/utils/Meta'
|
||||
import { SitePathsContext } from '@/components/utils/SitePathsContext'
|
||||
import useSearchParamsSimulationSharing from '@/components/utils/useSearchParamsSimulationSharing'
|
||||
|
@ -7,13 +6,17 @@ import useSimulationConfig from '@/components/utils/useSimulationConfig'
|
|||
import { Spacing } from '@/design-system/layout'
|
||||
import { H1 } from '@/design-system/typography/heading'
|
||||
import { Intro } from '@/design-system/typography/paragraphs'
|
||||
import { Evaluation } from 'publicodes'
|
||||
import { situationSelector } from '@/selectors/simulationSelectors'
|
||||
import { ComponentPropsWithoutRef, useContext } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { useSelector } from 'react-redux'
|
||||
import { useLocation } from 'react-router-dom'
|
||||
import { TrackChapter } from '../../../ATInternetTracking'
|
||||
import { CurrentSimulatorDataProvider, ExtractFromSimuData } from '../metadata'
|
||||
import { NextSteps } from './NextSteps'
|
||||
import { TrackChapter } from '../ATInternetTracking'
|
||||
import {
|
||||
CurrentSimulatorDataProvider,
|
||||
ExtractFromSimuData,
|
||||
} from '../pages/Simulateurs/metadata'
|
||||
import { NextSteps } from '../pages/Simulateurs/NextSteps'
|
||||
|
||||
export interface PageDataProps {
|
||||
meta: ExtractFromSimuData<'meta'>
|
||||
|
@ -49,9 +52,9 @@ export default function PageData(props: PageDataProps) {
|
|||
} = props
|
||||
let { title } = props
|
||||
|
||||
const année = useContext(EngineContext).evaluate('année')
|
||||
.nodeValue as Evaluation<number>
|
||||
const year = typeof année === 'number' && année !== 2022 ? ` - ${année}` : ''
|
||||
const année = useSelector(situationSelector)['année']
|
||||
const year =
|
||||
typeof année === 'number' && année != 2022 ? ` - version ${année}` : ''
|
||||
|
||||
const inIframe = useIsEmbedded()
|
||||
useSimulationConfig(config)
|
|
@ -35,7 +35,7 @@ export default function PageHeader({
|
|||
`}
|
||||
>
|
||||
{titre && <H1>{titre}</H1>}
|
||||
{children}
|
||||
<div>{children}</div>
|
||||
</Grid>
|
||||
|
||||
{picture && (
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { Button } from '@/design-system/buttons'
|
||||
import { SROnly } from '@/design-system/global-style'
|
||||
import PopoverWithTrigger from '@/design-system/PopoverWithTrigger'
|
||||
import { PopoverWithTrigger } from '@/design-system'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import styled from 'styled-components'
|
||||
import SearchRulesAndSimulators from './search/SearchRulesAndSimulators'
|
||||
|
|
|
@ -2,7 +2,7 @@ import { Grid } from '@mui/material'
|
|||
import Emoji from '@/components/utils/Emoji'
|
||||
import { Button } from '@/design-system/buttons'
|
||||
import { Spacing } from '@/design-system/layout'
|
||||
import PopoverWithTrigger from '@/design-system/PopoverWithTrigger'
|
||||
import { PopoverWithTrigger } from '@/design-system'
|
||||
import { CurrentSimulatorDataContext } from '../../pages/Simulateurs/metadata'
|
||||
import { useContext } from 'react'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
|
|
|
@ -1,14 +1,11 @@
|
|||
import { Grid } from '@mui/material'
|
||||
import { updateSituation } from '@/actions/actions'
|
||||
import { SmallBody } from '@/design-system/typography/paragraphs'
|
||||
import { targetUnitSelector } from '@/selectors/simulationSelectors'
|
||||
import { Grid } from '@mui/material'
|
||||
import { DottedName } from 'modele-social'
|
||||
import { formatValue, UNSAFE_isNotApplicable } from 'publicodes'
|
||||
import { formatValue } from 'publicodes'
|
||||
import React, { useCallback, useState } from 'react'
|
||||
import { useDispatch, useSelector } from 'react-redux'
|
||||
import {
|
||||
situationSelector,
|
||||
targetUnitSelector,
|
||||
} from '@/selectors/simulationSelectors'
|
||||
import styled from 'styled-components'
|
||||
import RuleInput, { InputProps } from '../conversation/RuleInput'
|
||||
import RuleLink from '../RuleLink'
|
||||
|
@ -25,7 +22,6 @@ type SimulationGoalProps = {
|
|||
editable?: boolean
|
||||
isTypeBoolean?: boolean
|
||||
|
||||
alwaysShow?: boolean
|
||||
onUpdateSituation?: (
|
||||
name: DottedName,
|
||||
...rest: Parameters<InputProps['onChange']>
|
||||
|
@ -38,15 +34,12 @@ export function SimulationGoal({
|
|||
small = false,
|
||||
onUpdateSituation,
|
||||
appear = true,
|
||||
alwaysShow = false,
|
||||
editable = true,
|
||||
isTypeBoolean = false, // TODO : remove when type inference works in publicodes
|
||||
}: SimulationGoalProps) {
|
||||
const dispatch = useDispatch()
|
||||
const engine = useEngine()
|
||||
const currentUnit = useSelector(targetUnitSelector)
|
||||
const situation = useSelector(situationSelector)
|
||||
const isNotApplicable = UNSAFE_isNotApplicable(engine, dottedName)
|
||||
const evaluation = engine.evaluate({
|
||||
valeur: dottedName,
|
||||
...(!isTypeBoolean ? { unité: currentUnit, arrondi: 'oui' } : {}),
|
||||
|
@ -61,20 +54,10 @@ export function SimulationGoal({
|
|||
},
|
||||
[dispatch, onUpdateSituation, dottedName]
|
||||
)
|
||||
if (
|
||||
!alwaysShow &&
|
||||
(isNotApplicable === true ||
|
||||
(!(dottedName in situation) &&
|
||||
evaluation.nodeValue === false &&
|
||||
!(dottedName in evaluation.missingVariables)))
|
||||
) {
|
||||
if (evaluation.nodeValue === null) {
|
||||
return null
|
||||
}
|
||||
if (
|
||||
small &&
|
||||
!editable &&
|
||||
(evaluation.nodeValue === null || evaluation.nodeValue === undefined)
|
||||
) {
|
||||
if (small && !editable && evaluation.nodeValue === undefined) {
|
||||
return null
|
||||
}
|
||||
|
||||
|
@ -125,7 +108,7 @@ export function SimulationGoal({
|
|||
}
|
||||
aria-labelledby={`${dottedName}-label`}
|
||||
aria-describedby={`${dottedName}-description`}
|
||||
displayedUnit=""
|
||||
displayedUnit="€"
|
||||
dottedName={dottedName}
|
||||
onFocus={() => setFocused(true)}
|
||||
onBlur={() => setFocused(false)}
|
||||
|
|
|
@ -8,7 +8,11 @@ import styled from 'styled-components'
|
|||
import SeeAnswersButton from '../conversation/SeeAnswersButton'
|
||||
import Value from '../EngineValue'
|
||||
|
||||
export function CompanyDetails() {
|
||||
export function CompanyDetails({
|
||||
showSituation = false,
|
||||
}: {
|
||||
showSituation?: boolean
|
||||
}) {
|
||||
return (
|
||||
<StyledCompanyContainer>
|
||||
<div
|
||||
|
@ -31,7 +35,7 @@ export function CompanyDetails() {
|
|||
</H4>
|
||||
<Body>
|
||||
<Trans>
|
||||
Créee le{' '}
|
||||
Entreprise créée le{' '}
|
||||
<Strong>
|
||||
<Value
|
||||
expression="entreprise . date de création"
|
||||
|
@ -48,14 +52,16 @@ export function CompanyDetails() {
|
|||
</Trans>
|
||||
</Body>
|
||||
</div>
|
||||
<div
|
||||
css={`
|
||||
text-align: right;
|
||||
`}
|
||||
>
|
||||
<SeeAnswersButton />
|
||||
<Spacing xs />
|
||||
</div>
|
||||
{showSituation && (
|
||||
<div
|
||||
css={`
|
||||
text-align: right;
|
||||
`}
|
||||
>
|
||||
<SeeAnswersButton />
|
||||
<Spacing xs />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</StyledCompanyContainer>
|
||||
)
|
||||
|
|
|
@ -13,6 +13,9 @@ import { useTranslation } from 'react-i18next'
|
|||
import styled from 'styled-components'
|
||||
import CompanySearchDetails from './SearchDetails'
|
||||
import { FromTop } from '../ui/animate'
|
||||
import { Message } from '@/design-system'
|
||||
import { H3 } from '@/design-system/typography/heading'
|
||||
import { Strong } from '@/design-system/typography'
|
||||
|
||||
const StyledCard = styled(Card)`
|
||||
flex-direction: row; // for Safari <= 13
|
||||
|
@ -93,13 +96,15 @@ function Results({
|
|||
}) {
|
||||
return !results.length ? (
|
||||
<FromTop>
|
||||
<MessageContainer>
|
||||
<Intro>Aucune entreprise correspondante trouvée</Intro>
|
||||
<Message type="info" icon>
|
||||
<Body>
|
||||
<Strong>Aucune entreprise correspondante trouvée</Strong>
|
||||
</Body>
|
||||
<Body>
|
||||
Vous pouvez réessayer avec votre SIREN ou votre SIRET pour un meilleur
|
||||
résultat
|
||||
</Body>
|
||||
</MessageContainer>
|
||||
</Message>
|
||||
</FromTop>
|
||||
) : (
|
||||
<FromTop>
|
||||
|
|
|
@ -43,6 +43,10 @@ export default function AnswerList({ onClose }: AnswerListProps) {
|
|||
)
|
||||
.concat(passedQuestions)
|
||||
.filter((answered) => !(answered in companySituation))
|
||||
.filter(
|
||||
(dottedName) =>
|
||||
engine.getRule(dottedName).rawNode.question !== undefined
|
||||
)
|
||||
.map((dottedName) => engine.evaluate(engine.getRule(dottedName))),
|
||||
[engine, passedQuestions, situation, companySituation]
|
||||
)
|
||||
|
|
|
@ -24,6 +24,8 @@ import {
|
|||
} from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import styled from 'styled-components'
|
||||
import { useEngine } from '../utils/EngineContext'
|
||||
import { ExplicableRule } from './Explicable'
|
||||
import { InputProps } from './RuleInput'
|
||||
|
||||
const relativeDottedName = (rootDottedName: string, childDottedName: string) =>
|
||||
|
@ -119,7 +121,7 @@ export function MultipleAnswerInput<Names extends string = DottedName>({
|
|||
return (
|
||||
<Component onChange={handleChange} value={currentSelection ?? undefined}>
|
||||
<RadioChoice
|
||||
autoFocus={defaultValue}
|
||||
autoFocus={defaultValue && props.autoFocus}
|
||||
choice={choice}
|
||||
rootDottedName={props.dottedName}
|
||||
/>
|
||||
|
@ -174,11 +176,10 @@ function RadioChoice<Names extends string = DottedName>({
|
|||
{node.title}{' '}
|
||||
{node.rawNode.icônes && <Emoji emoji={node.rawNode.icônes} />}
|
||||
</Radio>{' '}
|
||||
{node.rawNode.description && (
|
||||
<ButtonHelp type="info" light title={node.title}>
|
||||
<Markdown>{node.rawNode.description ?? ''}</Markdown>
|
||||
</ButtonHelp>
|
||||
)}
|
||||
<ExplicableRule
|
||||
light
|
||||
dottedName={node.dottedName as DottedName}
|
||||
/>
|
||||
</span>
|
||||
)}
|
||||
</Fragment>
|
||||
|
@ -239,8 +240,8 @@ export function useSelection<Names extends string = DottedName>({
|
|||
missing ? null : defaultValue
|
||||
)
|
||||
const handleChange = useCallback(
|
||||
(value) => {
|
||||
value && setCurrentSelection(value)
|
||||
(value: string) => {
|
||||
setCurrentSelection(value)
|
||||
},
|
||||
[setCurrentSelection]
|
||||
)
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import { NumberFieldProps } from '@react-types/numberfield'
|
||||
import { EngineContext } from '@/components/utils/EngineContext'
|
||||
import { NumberField } from '@/design-system/field'
|
||||
import { ASTNode, serializeUnit, Unit } from 'publicodes'
|
||||
import { debounce } from '@/utils'
|
||||
import { NumberFieldProps } from '@react-types/numberfield'
|
||||
import { ASTNode, parseUnit, serializeUnit, Unit } from 'publicodes'
|
||||
import { useCallback, useContext, useEffect, useState } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import styled from 'styled-components'
|
||||
import { debounce } from '@/utils'
|
||||
import InputSuggestions from './InputSuggestions'
|
||||
import { InputProps } from './RuleInput'
|
||||
|
||||
|
@ -27,9 +27,7 @@ export default function NumberInput({
|
|||
!missing && value != null && typeof value === 'number' ? value : undefined
|
||||
)
|
||||
const { i18n, t } = useTranslation()
|
||||
displayedUnit =
|
||||
displayedUnit ??
|
||||
(unit && getSerializedUnit(currentValue ?? 0, unit, i18n.language, t))
|
||||
const parsedDisplayedUnit = displayedUnit ? parseUnit(displayedUnit) : unit
|
||||
const engine = useContext(EngineContext)
|
||||
useEffect(() => {
|
||||
if (value !== currentValue) {
|
||||
|
@ -40,16 +38,23 @@ export default function NumberInput({
|
|||
)
|
||||
}
|
||||
}, [value])
|
||||
formatOptions = {
|
||||
style: 'decimal',
|
||||
...(unit?.numerators.includes('€')
|
||||
? {
|
||||
style: 'currency',
|
||||
currency: 'EUR',
|
||||
minimumFractionDigits: 0,
|
||||
}
|
||||
: {}),
|
||||
...formatOptions,
|
||||
|
||||
if (parsedDisplayedUnit && parsedDisplayedUnit.numerators.includes('€')) {
|
||||
parsedDisplayedUnit.numerators = parsedDisplayedUnit.numerators.filter(
|
||||
(u) => u === '€'
|
||||
)
|
||||
formatOptions = {
|
||||
style: 'currency',
|
||||
currency: 'EUR',
|
||||
minimumFractionDigits: 0,
|
||||
|
||||
...formatOptions,
|
||||
}
|
||||
} else {
|
||||
formatOptions = {
|
||||
style: 'decimal',
|
||||
...formatOptions,
|
||||
}
|
||||
}
|
||||
const debouncedOnChange = useCallback(debounce(1000, onChange), [])
|
||||
|
||||
|
@ -58,7 +63,15 @@ export default function NumberInput({
|
|||
<NumberField
|
||||
{...(fieldProps as NumberFieldProps)}
|
||||
description=""
|
||||
displayedUnit={displayedUnit}
|
||||
displayedUnit={
|
||||
parsedDisplayedUnit &&
|
||||
getSerializedUnit(
|
||||
currentValue ?? 0,
|
||||
parsedDisplayedUnit,
|
||||
i18n.language,
|
||||
t
|
||||
)
|
||||
}
|
||||
onChange={(valeur) => {
|
||||
setCurrentValue(valeur)
|
||||
if (valeur != null && unité) {
|
||||
|
|
|
@ -27,6 +27,7 @@ type Props<Names extends string = DottedName> = Omit<
|
|||
autoFocus?: boolean
|
||||
small?: boolean
|
||||
dottedName: Names
|
||||
label?: string
|
||||
onChange: (value: PublicodesExpression | undefined, dottedName: Names) => void
|
||||
// TODO: It would be preferable to replace this "showSuggestions" parameter by
|
||||
// a build-in logic in the engine, by setting the "applicability" of
|
||||
|
@ -191,9 +192,11 @@ export const buildVariantTree = <Name extends string>(
|
|||
variant.explanation as (ASTNode & {
|
||||
nodeKind: 'reference'
|
||||
})[]
|
||||
).map(({ dottedName }) =>
|
||||
buildVariantTree(engine, dottedName as Name)
|
||||
),
|
||||
)
|
||||
.filter((node) => engine.evaluate(node).nodeValue !== null)
|
||||
.map(({ dottedName }) =>
|
||||
buildVariantTree(engine, dottedName as Name)
|
||||
),
|
||||
}
|
||||
: null
|
||||
) as Choice
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { Button } from '@/design-system/buttons'
|
||||
import PopoverWithTrigger from '@/design-system/PopoverWithTrigger'
|
||||
import { PopoverWithTrigger } from '@/design-system'
|
||||
import { Trans } from 'react-i18next'
|
||||
import Answers from './AnswerList'
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { Button } from '@/design-system/buttons'
|
||||
import { Spacing } from '@/design-system/layout'
|
||||
import PopoverWithTrigger from '@/design-system/PopoverWithTrigger'
|
||||
import { PopoverWithTrigger } from '@/design-system'
|
||||
import { Link } from '@/design-system/typography/link'
|
||||
import { Body, Intro } from '@/design-system/typography/paragraphs'
|
||||
import FeedbackSvg from './feedback.svg'
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { Checkbox } from '@/design-system/field'
|
||||
import PopoverWithTrigger from '@/design-system/PopoverWithTrigger'
|
||||
import { PopoverWithTrigger } from '@/design-system'
|
||||
import { Link } from '@/design-system/typography/link'
|
||||
import { Body, SmallBody } from '@/design-system/typography/paragraphs'
|
||||
import { useCallback, useContext, useState } from 'react'
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { formatValue } from 'publicodes'
|
||||
import { useRef } from 'react'
|
||||
import React, { useRef } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { useSelector } from 'react-redux'
|
||||
import { targetUnitSelector } from '@/selectors/simulationSelectors'
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { DottedName } from 'modele-social'
|
||||
import Engine, { PublicodesExpression, Rule } from 'publicodes'
|
||||
import React, { createContext, useContext } from 'react'
|
||||
import { createContext, default as React, useContext } from 'react'
|
||||
import i18n from '../../locales/i18n'
|
||||
|
||||
export type Rules = Record<DottedName, Rule>
|
||||
|
|
|
@ -110,8 +110,8 @@ export const Markdown = ({
|
|||
<MarkdownToJsx
|
||||
{...otherProps}
|
||||
options={{
|
||||
...otherProps.options,
|
||||
forceBlock: true,
|
||||
...otherProps.options,
|
||||
overrides: {
|
||||
h1: H1,
|
||||
h2: H2,
|
||||
|
@ -127,7 +127,9 @@ export const Markdown = ({
|
|||
li: Li,
|
||||
code: CodeBlock,
|
||||
span: TextRenderer,
|
||||
blockquote: Message,
|
||||
blockquote: (props) => (
|
||||
<Message type="info" border={false} icon {...props} />
|
||||
),
|
||||
...components,
|
||||
},
|
||||
}}
|
||||
|
|
|
@ -41,7 +41,6 @@ export function getNextSteps(
|
|||
): Array<DottedName> {
|
||||
const byCount = ([, [count]]: [unknown, [number]]) => count
|
||||
const byScore = ([, [, score]]: [unknown, [unknown, number]]) => score
|
||||
|
||||
const missingByTotalScore = reduce<MissingVariables, MissingVariables>(
|
||||
mergeWith(add),
|
||||
{},
|
||||
|
@ -144,7 +143,9 @@ export const useNextQuestions = function (): Array<DottedName> {
|
|||
}
|
||||
|
||||
return next.filter(
|
||||
(question) => engine.evaluate(question).nodeValue !== null
|
||||
(question) =>
|
||||
engine.evaluate(question).nodeValue !== null &&
|
||||
engine.getRule(question).rawNode.question !== undefined
|
||||
)
|
||||
}, [
|
||||
missingVariables,
|
||||
|
|
|
@ -12,6 +12,7 @@ import {
|
|||
setActiveTarget,
|
||||
batchUpdateSituation,
|
||||
} from '@/actions/actions'
|
||||
import { isEmpty } from 'ramda'
|
||||
|
||||
type Objectifs = (string | { objectifs: string[] })[]
|
||||
type ShortName = string
|
||||
|
@ -47,8 +48,9 @@ export default function useSearchParamsSimulationSharing() {
|
|||
searchParams,
|
||||
dottedNameParamName
|
||||
)
|
||||
|
||||
dispatch(batchUpdateSituation(newSituation as Situation))
|
||||
if (!isEmpty(newSituation)) {
|
||||
dispatch(batchUpdateSituation(newSituation as Situation))
|
||||
}
|
||||
|
||||
const newActiveTarget = Object.keys(newSituation).filter((dottedName) =>
|
||||
objectifs.includes(dottedName)
|
||||
|
|
|
@ -16,9 +16,7 @@ export default function useSimulationConfig(
|
|||
const url = useHistory().location.pathname.split('?')[0]
|
||||
|
||||
const lastConfig = useSelector(configSelector)
|
||||
useEffect(() => {
|
||||
if (config && lastConfig !== config) {
|
||||
dispatch(setSimulationConfig(config ?? {}, url))
|
||||
}
|
||||
}, [config, dispatch, lastConfig, url])
|
||||
if (config && lastConfig !== config) {
|
||||
dispatch(setSimulationConfig(config ?? {}, url))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="16" height="10" viewBox="0 0 16 10" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" fill="#1D458C" d="M15.6585 9.75258C16.0742 9.3889 16.1163 8.75713 15.7526 8.3415L8.75259 0.341496C8.5627 0.124481 8.28838 3.43869e-09 8.00001 0C7.71165 -3.43869e-09 7.43732 0.124481 7.24744 0.341496L0.247437 8.3415C-0.116245 8.75713 -0.0741278 9.38889 0.341509 9.75258C0.757145 10.1163 1.38891 10.0741 1.75259 9.6585L8.00001 2.51859L14.2474 9.6585C14.6111 10.0741 15.2429 10.1163 15.6585 9.75258Z" />
|
||||
</svg>
|
After Width: | Height: | Size: 540 B |
|
@ -0,0 +1,47 @@
|
|||
import { ComponentStory, ComponentMeta } from '@storybook/react'
|
||||
import { Accordion } from '@/design-system'
|
||||
import { Body } from '@/design-system/typography/paragraphs'
|
||||
import { Item } from '@react-stately/collections'
|
||||
|
||||
// More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
|
||||
export default {
|
||||
component: Accordion,
|
||||
// More on argTypes: https://storybook.js.org/docs/react/api/argtypes
|
||||
} as ComponentMeta<typeof Accordion>
|
||||
|
||||
// More on component templates: https://storybook.js.org/docs/react/writing-stories/introduction#using-args
|
||||
const Template: ComponentStory<typeof Accordion> = (args) => (
|
||||
<Accordion {...args}>
|
||||
<Item key="lorem-ipsum" title="Lorem ipsum" hasChildItems={false}>
|
||||
<Body>
|
||||
Nam ipsum doloribus non. Deserunt consequatur quam consectetur odio.
|
||||
Dolor eos est et omnis quas nulla repellat. Velit voluptate sequi et
|
||||
voluptatibus sed dolorem dolorum.
|
||||
</Body>
|
||||
<Body>
|
||||
Totam et reprehenderit aliquam hic dolorum ipsum. Iste et neque eos
|
||||
voluptas deserunt harum. Mollitia numquam incidunt nihil laboriosam.
|
||||
Error autem possimus quaerat veniam ut explicabo ut. Error esse est
|
||||
reprehenderit quae dolor occaecati quas laboriosam.
|
||||
</Body>
|
||||
</Item>
|
||||
<Item
|
||||
key="eligendi-et-voluptatem"
|
||||
title="Eligendi et voluptatem"
|
||||
hasChildItems={false}
|
||||
>
|
||||
<Body>
|
||||
Qui tempora tenetur eum voluptatibus sit et assumenda fuga. Temporibus
|
||||
hic ut in maxime omnis esse et nam. Aliquam veritatis perferendis quia
|
||||
enim dolorem molestiae. Impedit eaque optio iste. Eligendi et voluptatem
|
||||
voluptate corporis perferendis.
|
||||
</Body>
|
||||
</Item>
|
||||
</Accordion>
|
||||
)
|
||||
|
||||
export const Basic = Template.bind({})
|
||||
// More on args: https://storybook.js.org/docs/react/writing-stories/args
|
||||
Basic.args = {
|
||||
defaultExpandedKeys: ['lorem-ipsum'],
|
||||
}
|
|
@ -0,0 +1,130 @@
|
|||
import { FocusStyle } from '@/design-system/global-style'
|
||||
import { useAccordion, useAccordionItem } from '@react-aria/accordion'
|
||||
import { filterDOMProps } from '@react-aria/utils'
|
||||
import { TreeState, useTreeState } from '@react-stately/tree'
|
||||
import { AriaAccordionProps } from '@react-types/accordion'
|
||||
import { Node } from '@react-types/shared'
|
||||
import React, { useRef } from 'react'
|
||||
import { animated, useSpring } from 'react-spring'
|
||||
import useMeasure from 'react-use-measure'
|
||||
import styled, { css } from 'styled-components'
|
||||
import chevronImg from './chevron.svg'
|
||||
|
||||
export default function Accordion<T extends object>(
|
||||
props: AriaAccordionProps<T>
|
||||
) {
|
||||
const state = useTreeState<T>(props)
|
||||
const ref = useRef<HTMLDivElement>(null)
|
||||
const { accordionProps } = useAccordion(props, state, ref)
|
||||
|
||||
return (
|
||||
<StyledAccordionGroup
|
||||
{...filterDOMProps(props)}
|
||||
{...accordionProps}
|
||||
ref={ref}
|
||||
>
|
||||
{[...state.collection].map((item) => (
|
||||
<AccordionItem<T> key={item.key} item={item} state={state} />
|
||||
))}
|
||||
</StyledAccordionGroup>
|
||||
)
|
||||
}
|
||||
|
||||
const StyledAccordionGroup = styled.div`
|
||||
overflow: hidden;
|
||||
${({ theme }) =>
|
||||
css`
|
||||
border-radius: ${theme.box.borderRadius};
|
||||
border: 1px solid ${theme.colors.bases.primary[400]};
|
||||
margin-bottom: ${theme.spacings.lg};
|
||||
`}
|
||||
`
|
||||
|
||||
interface AccordionItemProps<T> {
|
||||
item: Node<T>
|
||||
state: TreeState<T>
|
||||
}
|
||||
|
||||
function AccordionItem<T>(props: AccordionItemProps<T>) {
|
||||
const ref = useRef<HTMLButtonElement>(null)
|
||||
const { state, item } = props
|
||||
const { buttonProps, regionProps } = useAccordionItem<T>(props, state, ref)
|
||||
|
||||
const isOpen = state.expandedKeys.has(item.key)
|
||||
// const isDisabled = state.disabledKeys.has(item.key)
|
||||
|
||||
const [regionRef, { height }] = useMeasure()
|
||||
const animatedStyle = useSpring({
|
||||
reset: false,
|
||||
to: isOpen
|
||||
? { opacity: 1, height: height + 48 } // We add 48px that corresponds to the margin
|
||||
: { opacity: 0, height: 0 },
|
||||
})
|
||||
|
||||
return (
|
||||
<StyledAccordionItem>
|
||||
<StyledTitle>
|
||||
<StyledButton {...buttonProps} ref={ref}>
|
||||
<span>{item.props.title}</span>
|
||||
<ChevronRightMedium aria-hidden="true" $isOpen={isOpen} />
|
||||
</StyledButton>
|
||||
</StyledTitle>
|
||||
<StyledContent {...regionProps} style={animatedStyle}>
|
||||
<div ref={regionRef}>{item.props.children}</div>
|
||||
</StyledContent>
|
||||
</StyledAccordionItem>
|
||||
)
|
||||
}
|
||||
|
||||
const StyledTitle = styled.h3`
|
||||
margin: 0;
|
||||
`
|
||||
const StyledAccordionItem = styled.div`
|
||||
:not(:first-child) {
|
||||
border-top: 1px solid ${({ theme }) => theme.colors.bases.primary[400]};
|
||||
}
|
||||
`
|
||||
const StyledButton = styled.button`
|
||||
display: flex;
|
||||
width: 100%;
|
||||
justify-content: space-between;
|
||||
${({ theme }) => css`
|
||||
font-family: ${theme.fonts.main};
|
||||
font-size: ${theme.baseFontSize};
|
||||
color: ${theme.colors.bases.primary[700]};
|
||||
padding: ${theme.spacings.lg};
|
||||
background-color: ${theme.colors.bases.primary[100]};
|
||||
> span {
|
||||
border-radius: ${theme.box.borderRadius};
|
||||
}
|
||||
`}
|
||||
:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
:focus {
|
||||
outline: none;
|
||||
}
|
||||
:focus > span {
|
||||
${FocusStyle}
|
||||
}
|
||||
`
|
||||
const ChevronRightMedium = styled.img.attrs({ src: chevronImg })<{
|
||||
$isOpen: boolean
|
||||
}>`
|
||||
transition: transform 0.3s;
|
||||
${({ $isOpen }) =>
|
||||
$isOpen &&
|
||||
css`
|
||||
transform: rotate(180deg);
|
||||
`}
|
||||
`
|
||||
|
||||
const StyledContent = styled(animated.div)`
|
||||
overflow: hidden;
|
||||
${({ theme }) => css`
|
||||
/* border-top: 1px solid ${theme.colors.bases.primary[400]}; */
|
||||
`}
|
||||
> div {
|
||||
margin: ${({ theme }) => theme.spacings.lg};
|
||||
}
|
||||
`
|
|
@ -1,13 +1,16 @@
|
|||
import { Grid } from '@mui/material'
|
||||
import { Children, FunctionComponent, ReactNode } from 'react'
|
||||
import { Children, ComponentProps, FunctionComponent, ReactNode } from 'react'
|
||||
|
||||
type AnswerGroupProps = {
|
||||
children: ReactNode
|
||||
}
|
||||
} & ComponentProps<typeof Grid>
|
||||
|
||||
const AnswerGroup: FunctionComponent<AnswerGroupProps> = ({ children }) => {
|
||||
const AnswerGroup: FunctionComponent<AnswerGroupProps> = ({
|
||||
children,
|
||||
...props
|
||||
}) => {
|
||||
return (
|
||||
<Grid container justifyContent="flex-start" spacing={3}>
|
||||
<Grid container spacing={3} {...props}>
|
||||
{Children.map(children, (c, i) => (
|
||||
<Grid key={`answerGroup-${i}`} item sm={12} md="auto">
|
||||
{c}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import PopoverWithTrigger from '@/design-system/PopoverWithTrigger'
|
||||
import { PopoverWithTrigger } from '@/design-system'
|
||||
import React from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import styled from 'styled-components'
|
||||
|
|
|
@ -2,7 +2,9 @@ export * as button from './buttons'
|
|||
export * from './field'
|
||||
export { GlobalStyle } from './global-style'
|
||||
export * as layout from './layout'
|
||||
export { default as Popover } from './Popover'
|
||||
export { default as PopoverWithTrigger } from './PopoverWithTrigger'
|
||||
export { default as Popover } from './popover/Popover'
|
||||
export { default as PopoverWithTrigger } from './popover/PopoverWithTrigger'
|
||||
export * as typography from './typography'
|
||||
export * from './message'
|
||||
export { default as Accordion } from './accordion'
|
||||
export { Step, Stepper } from './stepper'
|
||||
|
|
|
@ -5,6 +5,7 @@ import infoIcon from './infoIcon.svg'
|
|||
import errorIcon from './errorIcon.svg'
|
||||
import successIcon from './successIcon.svg'
|
||||
import { Body } from '../typography/paragraphs'
|
||||
import { Palette, SmallPalette } from '../styled'
|
||||
|
||||
type MessageType = 'primary' | 'secondary' | 'info' | 'error' | 'success'
|
||||
type MessageProps = {
|
||||
|
@ -74,9 +75,9 @@ const StyledMessage = styled.div<
|
|||
>`
|
||||
display: flex;
|
||||
position: relative;
|
||||
align-items: flex-start;
|
||||
align-items: baseline;
|
||||
${({ theme, type, border, light }) => {
|
||||
const colorSpace =
|
||||
const colorSpace: Palette | SmallPalette =
|
||||
type === 'secondary' || type === 'primary'
|
||||
? theme.colors.bases[type]
|
||||
: theme.colors.extended[type]
|
||||
|
@ -87,6 +88,13 @@ const StyledMessage = styled.div<
|
|||
border: 2px solid ${colorSpace[border ? 500 : 100]};
|
||||
border-radius: ${theme.box.borderRadius};
|
||||
margin-bottom: ${theme.spacings.md};
|
||||
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
color: ${(colorSpace as Palette)[700] ?? colorSpace[600]};
|
||||
}
|
||||
`
|
||||
}}
|
||||
`
|
||||
|
|
|
@ -13,8 +13,8 @@ import {
|
|||
import { AriaDialogProps } from '@react-types/dialog'
|
||||
import React, { RefObject, useEffect, useRef, useState } from 'react'
|
||||
import styled, { css, keyframes, ThemeProvider } from 'styled-components'
|
||||
import { Container } from './layout'
|
||||
import { H2 } from './typography/heading'
|
||||
import { Container } from '../layout'
|
||||
import { H2 } from '../typography/heading'
|
||||
|
||||
const useIFrameOffset = () => {
|
||||
const [offsetTop, setOffset] = useState<number | null | undefined>(
|
|
@ -12,7 +12,7 @@ import React, {
|
|||
} from 'react'
|
||||
import { useLocation } from 'react-router'
|
||||
import Popover from './Popover'
|
||||
import { Link } from './typography/link'
|
||||
import { Link } from '../typography/link'
|
||||
|
||||
type ButtonBuilderProps = AriaButtonProps & {
|
||||
ref: Ref<HTMLButtonElement>
|
|
@ -0,0 +1,33 @@
|
|||
import { ComponentStory, ComponentMeta } from '@storybook/react'
|
||||
import { Step, Stepper } from '@/design-system'
|
||||
import { MemoryRouter } from 'react-router-dom'
|
||||
|
||||
// More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
|
||||
export default {
|
||||
component: Stepper,
|
||||
// More on argTypes: https://storybook.js.org/docs/react/api/argtypes
|
||||
} as ComponentMeta<typeof Step>
|
||||
|
||||
const Template: ComponentStory<typeof Stepper> = (args) => (
|
||||
<MemoryRouter initialEntries={['/step-2']}>
|
||||
<Stepper {...args}>
|
||||
<Step to={'/'} progress={1}>
|
||||
Première étape
|
||||
</Step>
|
||||
<Step to={'/step-2'} progress={0.2}>
|
||||
Deuxième étape
|
||||
</Step>
|
||||
<Step to={'/step-3'} progress={0}>
|
||||
Troisième étape
|
||||
</Step>
|
||||
<Step to={'/step-4'} progress={0} isDisabled>
|
||||
Dernière étape
|
||||
</Step>
|
||||
</Stepper>
|
||||
</MemoryRouter>
|
||||
)
|
||||
|
||||
export const Basic = Template.bind({})
|
||||
Basic.args = {
|
||||
'aria-label': 'Étapes du formulaire en cours',
|
||||
}
|
|
@ -0,0 +1,162 @@
|
|||
import { useProgressBar } from '@react-aria/progress'
|
||||
import { useSSRSafeId } from '@react-aria/ssr'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { AriaButtonProps } from '@react-types/button'
|
||||
|
||||
import styled, { css } from 'styled-components'
|
||||
import { Link } from '../typography/link'
|
||||
import { Link as RouterLink } from 'react-router-dom'
|
||||
import { useRouteMatch } from 'react-router'
|
||||
|
||||
import { ComponentPropsWithRef } from 'react'
|
||||
|
||||
type Props = {
|
||||
isDisabled?: boolean
|
||||
progress: number
|
||||
to: string
|
||||
} & AriaButtonProps<typeof RouterLink> &
|
||||
ComponentPropsWithRef<typeof RouterLink>
|
||||
|
||||
export function Step({
|
||||
isDisabled = false,
|
||||
progress,
|
||||
children,
|
||||
...props
|
||||
}: Props) {
|
||||
const labelId = useSSRSafeId()
|
||||
if (import.meta.env.DEV && (progress > 1 || progress < 0)) {
|
||||
throw new TypeError('`progress` should be a number between 0 and 1')
|
||||
}
|
||||
const active = !!useRouteMatch({ path: props.to, exact: true })
|
||||
const propsBar = {
|
||||
'aria-labelledby': labelId,
|
||||
minValue: 0,
|
||||
maxValue: 100,
|
||||
value: progress * 100,
|
||||
}
|
||||
const { progressBarProps } = useProgressBar(propsBar)
|
||||
|
||||
return (
|
||||
<StyledStepContainer {...(active && { 'aria-current': 'step' })}>
|
||||
<StyledStep $active={active} isDisabled={isDisabled} {...props}>
|
||||
<div id={labelId}>
|
||||
<StyledStepNumber $active={active} $disabled={isDisabled} />
|
||||
{children}
|
||||
</div>
|
||||
<div className="sr-only">
|
||||
{progress > 0 ? (
|
||||
<Trans>Étape non complétée</Trans>
|
||||
) : (
|
||||
progress === 1 && <Trans>Étape complétée</Trans>
|
||||
)}
|
||||
</div>
|
||||
<StyledProgressBar
|
||||
$active={active}
|
||||
$progress={progress}
|
||||
$isDisabled={isDisabled}
|
||||
{...progressBarProps}
|
||||
></StyledProgressBar>
|
||||
</StyledStep>
|
||||
</StyledStepContainer>
|
||||
)
|
||||
}
|
||||
|
||||
export function Stepper({
|
||||
children,
|
||||
...props
|
||||
}: { children: Array<React.ReactElement<Props, typeof Step>> } & (
|
||||
| { 'aria-label': string }
|
||||
| { 'aria-labelledby': string }
|
||||
)) {
|
||||
return (
|
||||
<div role="group" {...props}>
|
||||
<StyledStepper>{children}</StyledStepper>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
const StyledStepper = styled.ol`
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
`
|
||||
const StyledStepContainer = styled.li`
|
||||
counter-increment: step-counter;
|
||||
display: inline-block;
|
||||
margin-right: ${({ theme }) => theme.spacings.lg};
|
||||
:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
margin-bottom: ${({ theme }) => theme.spacings.md};
|
||||
* {
|
||||
transition: background-color 0.1s, color 0.1s, border-color 0.1s;
|
||||
}
|
||||
`
|
||||
const StyledStepNumber = styled.span<{ $active: boolean; $disabled: boolean }>`
|
||||
::before {
|
||||
content: counter(step-counter);
|
||||
font-size: 1.125rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 100%;
|
||||
height: ${({ theme }) => theme.spacings.xl};
|
||||
width: ${({ theme }) => theme.spacings.xl};
|
||||
color: ${({ theme, $disabled }) =>
|
||||
theme.colors.extended.grey[$disabled ? 600 : 100]};
|
||||
border: 2px solid
|
||||
${({ theme, $active, $disabled }) =>
|
||||
$disabled
|
||||
? theme.colors.extended.grey[600]
|
||||
: theme.colors.bases.primary[$active ? 800 : 600]};
|
||||
background-color: ${({ theme, $active, $disabled }) =>
|
||||
$disabled
|
||||
? 'transparent'
|
||||
: theme.colors.bases.primary[$active ? 800 : 600]};
|
||||
|
||||
margin-right: ${({ theme }) => theme.spacings.xs};
|
||||
`
|
||||
|
||||
const StyledStep = styled(Link)<{ $active: boolean }>`
|
||||
text-decoration: none;
|
||||
text-align: left;
|
||||
display: inline-block;
|
||||
${({ $active, theme }) =>
|
||||
$active
|
||||
? css`
|
||||
color: ${theme.colors.bases.primary[800]};
|
||||
`
|
||||
: css`
|
||||
font-weight: inherit;
|
||||
`};
|
||||
`
|
||||
const StyledProgressBar = styled.div<{
|
||||
$active: boolean
|
||||
$progress: number
|
||||
$isDisabled: boolean
|
||||
}>`
|
||||
width: 10.115rem;
|
||||
height: 0.375rem;
|
||||
margin-top: ${({ theme }) => theme.spacings.md};
|
||||
border-radius: ${({ theme }) => theme.box.borderRadius};
|
||||
background-color: ${({ theme }) => theme.colors.extended.grey[300]};
|
||||
|
||||
position: relative;
|
||||
::after {
|
||||
display: block;
|
||||
content: '';
|
||||
height: inherit;
|
||||
border-radius: inherit;
|
||||
width: ${({ $progress }) => $progress * 100}%;
|
||||
min-width: ${({ theme, $active }) => $active && theme.spacings.xs};
|
||||
background-color: ${({ theme, $active, $isDisabled }) =>
|
||||
$isDisabled
|
||||
? theme.colors.extended.grey[600]
|
||||
: theme.colors.bases.primary[$active ? 800 : 600]};
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
transition: width 0.2s;
|
||||
}
|
||||
`
|
|
@ -19,8 +19,11 @@ export const StyledLinkHover = css`
|
|||
? theme.colors.bases.primary[100]
|
||||
: theme.colors.bases.primary[800]};
|
||||
`
|
||||
export const StyledLink = styled.a`
|
||||
color: ${({ theme }) => theme.colors.bases.primary[700]};
|
||||
export const StyledLink = styled.a<{ isDisabled?: boolean }>`
|
||||
color: ${({ theme, isDisabled }) =>
|
||||
isDisabled
|
||||
? theme.colors.extended.grey[600]
|
||||
: theme.colors.bases.primary[700]};
|
||||
${({ theme }) =>
|
||||
theme.darkMode &&
|
||||
css`
|
||||
|
@ -28,6 +31,11 @@ export const StyledLink = styled.a`
|
|||
color: ${theme.colors.extended.grey[100]};
|
||||
}
|
||||
`}
|
||||
${({ isDisabled }) =>
|
||||
isDisabled &&
|
||||
css`
|
||||
cursor: default;
|
||||
`}
|
||||
font-family: ${({ theme }) => theme.fonts.main};
|
||||
font-weight: 700;
|
||||
padding: 0;
|
||||
|
@ -35,7 +43,7 @@ export const StyledLink = styled.a`
|
|||
text-decoration: none;
|
||||
border-radius: ${({ theme }) => theme.box.borderRadius};
|
||||
&:hover {
|
||||
${StyledLinkHover}
|
||||
${({ isDisabled }) => !isDisabled && StyledLinkHover}
|
||||
}
|
||||
&:focus-visible {
|
||||
${FocusStyle}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { ComponentStory, ComponentMeta } from '@storybook/react'
|
||||
import { Li, Ul } from '@/design-system/typography/list'
|
||||
import { Li, Ol, Ul } from '@/design-system/typography/list'
|
||||
|
||||
// More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
|
||||
export default {
|
||||
|
@ -25,3 +25,15 @@ export const XL = Template.bind({})
|
|||
XL.args = {
|
||||
size: 'XL',
|
||||
}
|
||||
|
||||
const OlTemplate: ComponentStory<typeof Ol> = (args) => (
|
||||
<Ol {...args}>
|
||||
<Li>Élément 1</Li>
|
||||
<Li>Élément 2</Li>
|
||||
<Li>Élément 3</Li>
|
||||
</Ol>
|
||||
)
|
||||
|
||||
export const Numbered = OlTemplate.bind({})
|
||||
// More on args: https://storybook.js.org/docs/react/writing-stories/args
|
||||
Numbered.args = {}
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
import styled, { css } from 'styled-components'
|
||||
import { baseParagraphStyle } from './paragraphs'
|
||||
|
||||
type UlProps = {
|
||||
type ListProps = {
|
||||
size?: 'XS' | 'MD' | 'XL'
|
||||
}
|
||||
|
||||
export const Li = styled.li``
|
||||
export const Ul = styled.ul<UlProps>`
|
||||
|
||||
const BaseListStyle = css<ListProps>`
|
||||
${baseParagraphStyle}
|
||||
font-size: 1rem;
|
||||
line-height: 1.5rem;
|
||||
|
@ -29,16 +30,73 @@ export const Ul = styled.ul<UlProps>`
|
|||
position: relative;
|
||||
padding-left: ${({ theme }) => theme.spacings.lg};
|
||||
margin-bottom: ${({ theme }) => theme.spacings.xs};
|
||||
&::before {
|
||||
content: '●';
|
||||
font-size: 80%;
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: ${({ theme }) => theme.spacings.lg};
|
||||
text-align: center;
|
||||
color: ${({ theme }) => theme.colors.bases.secondary[400]};
|
||||
margin-bottom: ${({ theme }) => theme.spacings.xs};
|
||||
}
|
||||
}
|
||||
`
|
||||
|
||||
export const Ul = styled.ul<ListProps>`
|
||||
${BaseListStyle}
|
||||
${Li}::before {
|
||||
content: '●';
|
||||
font-size: 80%;
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: ${({ theme }) => theme.spacings.lg};
|
||||
text-align: center;
|
||||
color: ${({ theme }) => theme.colors.bases.secondary[400]};
|
||||
margin-bottom: ${({ theme }) => theme.spacings.xs};
|
||||
}
|
||||
`
|
||||
|
||||
export const Ol = styled.ol<ListProps>`
|
||||
${BaseListStyle}
|
||||
padding-left: ${({ theme }) => theme.spacings.xl};
|
||||
|
||||
${({ size = 'MD', theme }) =>
|
||||
size === 'XS'
|
||||
? css`
|
||||
font-size: 0.875rem;
|
||||
padding-left: ${theme.spacings.lg};
|
||||
line-height: 1.25rem;
|
||||
`
|
||||
: size === 'XL' &&
|
||||
css`
|
||||
font-size: 1.25rem;
|
||||
line-height: 2rem;
|
||||
padding-left: ${theme.spacings.xxl};
|
||||
`}
|
||||
|
||||
${Li} {
|
||||
counter-increment: step-counter;
|
||||
}
|
||||
${Li}::before {
|
||||
content: counter(step-counter);
|
||||
font-size: 1.125rem;
|
||||
font-weight: 500;
|
||||
border-radius: 100%;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
display: inline-flex;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
${({ theme, size }) => css`
|
||||
width: ${theme.spacings.lg};
|
||||
height: ${theme.spacings.lg};
|
||||
background-color: ${theme.colors.bases.secondary[500]};
|
||||
color: ${theme.colors.extended.grey[100]};
|
||||
vertical-align: baseline;
|
||||
${size === 'XS'
|
||||
? css`
|
||||
font-size: 0.875rem;
|
||||
width: ${theme.spacings.md};
|
||||
height: ${theme.spacings.md};
|
||||
`
|
||||
: size === 'XL' &&
|
||||
css`
|
||||
font-size: 1.25rem;
|
||||
width: ${theme.spacings.xl};
|
||||
height: ${theme.spacings.xl};
|
||||
`}
|
||||
`}
|
||||
}
|
||||
`
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
import { useMemo } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
|
||||
/*
|
||||
Return the ordinal localized string (first, second, etc...)
|
||||
*/
|
||||
|
||||
const suffixes = {
|
||||
en: {
|
||||
one: 'st',
|
||||
two: 'nd',
|
||||
few: 'rd',
|
||||
other: 'th',
|
||||
},
|
||||
fr: {
|
||||
one: 'ère',
|
||||
other: 'ème',
|
||||
},
|
||||
}
|
||||
|
||||
export function useOrdinal(n: number): string {
|
||||
const language = useTranslation().i18n.language
|
||||
if (language !== 'fr' && language !== 'en') {
|
||||
throw new Error(`Le language ${language} n'est pas supporté`)
|
||||
}
|
||||
|
||||
const pr = useMemo(
|
||||
() => new Intl.PluralRules(language, { type: 'ordinal' }),
|
||||
[language]
|
||||
)
|
||||
|
||||
const rule = pr.select(n)
|
||||
const suffix: Partial<Record<Intl.LDMLPluralRule, string>> =
|
||||
suffixes[language]
|
||||
if (!(rule in suffix)) {
|
||||
throw new Error(
|
||||
`Le cardinal de ${n} n'est pas défini dans le langage ${language}`
|
||||
)
|
||||
}
|
||||
|
||||
return `${n}${suffix[rule] ?? ''}`
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
import {
|
||||
setBénéficeType,
|
||||
addCommuneDetails,
|
||||
setCompany,
|
||||
} from '@/actions/companyActions'
|
||||
import fetchBénéfice from '@/api/activité-vers-bénéfice'
|
||||
import { fetchCommuneDetails } from '@/api/commune'
|
||||
import { FabriqueSocialEntreprise } from '@/api/fabrique-social'
|
||||
import { useDispatch } from 'react-redux'
|
||||
|
||||
export function useSetEntreprise() {
|
||||
const dispatch = useDispatch()
|
||||
|
||||
return (entreprise: FabriqueSocialEntreprise | null) => {
|
||||
if (entreprise === null) {
|
||||
return
|
||||
}
|
||||
|
||||
dispatch(setCompany(entreprise))
|
||||
|
||||
void fetchCommuneDetails(
|
||||
entreprise.firstMatchingEtablissement.codeCommuneEtablissement,
|
||||
entreprise.firstMatchingEtablissement.codePostalEtablissement
|
||||
).then(
|
||||
(communeDetails) =>
|
||||
communeDetails && dispatch(addCommuneDetails(communeDetails))
|
||||
)
|
||||
|
||||
void fetchBénéfice(
|
||||
entreprise.firstMatchingEtablissement.activitePrincipaleEtablissement
|
||||
).then((bénéfice) => bénéfice && dispatch(setBénéficeType(bénéfice)))
|
||||
}
|
||||
}
|
|
@ -1,3 +1,362 @@
|
|||
DRI:
|
||||
titre.en: '[automatic] DRI'
|
||||
titre.fr: DRI
|
||||
DRI . accompagnement imposition:
|
||||
titre.en: '[automatic] Assistant in support mode'
|
||||
titre.fr: Assistant en mode accompagnement
|
||||
DRI . accompagnement imposition . bénéfice:
|
||||
titre.en: '[automatic] profit'
|
||||
titre.fr: bénéfice
|
||||
DRI . accompagnement imposition . bénéfice . exceptions:
|
||||
titre.en: '[automatic] exceptions'
|
||||
titre.fr: exceptions
|
||||
DRI . accompagnement imposition . bénéfice . explications:
|
||||
titre.en: '[automatic] explanations'
|
||||
titre.fr: explications
|
||||
DRI . accompagnement imposition . bénéfice . situation:
|
||||
titre.en: '[automatic] situation'
|
||||
titre.fr: situation
|
||||
DRI . accompagnement imposition . explications:
|
||||
titre.en: '[automatic] explanations'
|
||||
titre.fr: explications
|
||||
DRI . accompagnement imposition . explications . situation:
|
||||
titre.en: '[automatic] situation'
|
||||
titre.fr: situation
|
||||
DRI . accompagnement imposition . régime:
|
||||
titre.en: '[automatic] diet'
|
||||
titre.fr: régime
|
||||
DRI . accompagnement imposition . régime memento fiscal:
|
||||
question.en: |-
|
||||
[automatic] In the "Your Tax Obligations" section,
|
||||
what is the "**tax regime**" listed on the first line?
|
||||
question.fr: |-
|
||||
Dans la section « **vos obligations fiscales** »,
|
||||
quel est le « **régime d'imposition** » inscrit sur la première ligne ?
|
||||
titre.en: '[automatic] tax memento system'
|
||||
titre.fr: régime memento fiscal
|
||||
DRI . accompagnement imposition . régime memento fiscal . DECC:
|
||||
titre.en: '[automatic] DECC - Controlled declaration system'
|
||||
titre.fr: DECC - Régime de la déclaration contrôlée
|
||||
DRI . accompagnement imposition . régime memento fiscal . MICROE:
|
||||
titre.en: '[automatic] MICROE - Microenterprise regime'
|
||||
titre.fr: MICROE - Régime des micro-entreprises
|
||||
DRI . accompagnement imposition . régime memento fiscal . RN:
|
||||
titre.en: '[automatic] RN - Normal Real'
|
||||
titre.fr: RN - Réel normal
|
||||
DRI . accompagnement imposition . régime memento fiscal . RSI:
|
||||
titre.en: '[automatic] RSI - Real Simplified Taxation'
|
||||
titre.fr: RSI - Réel simplifié d'imposition
|
||||
DRI . accompagnement imposition . régime memento fiscal . SPECIAL:
|
||||
description.en: '[automatic] The special regime corresponds to the
|
||||
**microenterprise regime** for non-commercial profits (BNC)'
|
||||
description.fr: Le régime spécial correspond au **régime de la
|
||||
micro-entreprise** pour les bénéfices de type non commerciaux (BNC)
|
||||
titre.en: '[automatic] SPECIAL - Special regime for non-commercial profits'
|
||||
titre.fr: SPECIAL - Régime spécial des bénéfices non commerciaux
|
||||
DRI . accompagnement imposition . type:
|
||||
titre.en: '[automatic] type'
|
||||
titre.fr: type
|
||||
DRI . accompagnement imposition . type . exceptions:
|
||||
titre.en: '[automatic] exceptions'
|
||||
titre.fr: exceptions
|
||||
DRI . accompagnement imposition . type . situation:
|
||||
titre.en: '[automatic] situation'
|
||||
titre.fr: situation
|
||||
DRI . accompagnement imposition par défaut:
|
||||
titre.en: '[automatic] accompaniment by default taxation'
|
||||
titre.fr: accompagnement imposition par défaut
|
||||
DRI . cas exclus:
|
||||
titre.en: '[automatic] excluded cases'
|
||||
titre.fr: cas exclus
|
||||
DRI . cas exclus . autres outils:
|
||||
titre.en: '[automatic] other tools'
|
||||
titre.fr: autres outils
|
||||
DRI . cas exclus . désolé:
|
||||
titre.en: '[automatic] sorry'
|
||||
titre.fr: désolé
|
||||
DRI . comptable:
|
||||
titre.en: '[automatic] accountant'
|
||||
titre.fr: comptable
|
||||
DRI . cotisations:
|
||||
titre.en: '[automatic] contributions'
|
||||
titre.fr: cotisations
|
||||
DRI . cotisations . appelées en 2021:
|
||||
question.en:
|
||||
'[automatic] What is the amount of provisional contributions called
|
||||
for in 2021?'
|
||||
question.fr: Quel est le montant des cotisations provisionnelles appelées en 2021 ?
|
||||
titre.en: '[automatic] called in 2021'
|
||||
titre.fr: appelées en 2021
|
||||
DRI . cotisations . assiette CSG:
|
||||
titre.en: '[automatic] CSG base'
|
||||
titre.fr: assiette CSG
|
||||
DRI . cotisations . assiette des cotisations:
|
||||
titre.en: '[automatic] basis of assessment'
|
||||
titre.fr: assiette des cotisations
|
||||
DRI . cotisations . régularisation:
|
||||
titre.en: '[automatic] regularization'
|
||||
titre.fr: régularisation
|
||||
DRI . déclaration revenus:
|
||||
question.en: '[automatic] Who is the person concerned?'
|
||||
question.fr: Quelle est la personne concernée ?
|
||||
titre.en: '[automatic] income tax return'
|
||||
titre.fr: déclaration revenus
|
||||
DRI . déclaration revenus . BIC:
|
||||
résumé.en: '[automatic] Including professional furnished rentals'
|
||||
résumé.fr: Y compris locations meublées professionnelles
|
||||
titre.en: '[automatic] Professional industrial and commercial income'
|
||||
titre.fr: Revenus industriels et commerciaux professionnels
|
||||
DRI . déclaration revenus . BIC . Régime du bénéfice réel:
|
||||
titre.en: '[automatic] Real profit system'
|
||||
titre.fr: Régime du bénéfice réel
|
||||
DRI . déclaration revenus . BIC . durée de l'exercice:
|
||||
titre.en: '[automatic] duration of the exercise'
|
||||
titre.fr: durée de l'exercice
|
||||
DRI . déclaration revenus . BIC . déficits:
|
||||
titre.en: '[automatic] deficits'
|
||||
titre.fr: déficits
|
||||
DRI . déclaration revenus . BIC . moins-values:
|
||||
note.en: '[automatic] of which short-term capital losses'
|
||||
note.fr: dont moins-values à court terme
|
||||
titre.en: '[automatic] capital losses'
|
||||
titre.fr: moins-values
|
||||
DRI . déclaration revenus . BIC . plus-values:
|
||||
note.en: '[automatic] of which short-term capital gains, capital grants,
|
||||
insurance proceeds from loss of assets'
|
||||
note.fr: dont plus-values à court terme, subventions d’équipement, indemnités
|
||||
d’assurance pour perte d’élément d’actif
|
||||
titre.en: '[automatic] '
|
||||
titre.fr: ' '
|
||||
DRI . déclaration revenus . BIC . revenus exonérés:
|
||||
note.en: '[automatic] zoned regimes article 1417, IV, b of the general tax code'
|
||||
note.fr: régimes zonés article 1417, IV, b du code général des impôts
|
||||
titre.en: '[automatic] exempt income'
|
||||
titre.fr: revenus exonérés
|
||||
DRI . déclaration revenus . BIC . revenus imposables:
|
||||
note.en: '[automatic] general case'
|
||||
note.fr: cas général
|
||||
titre.en: '[automatic] taxable income'
|
||||
titre.fr: revenus imposables
|
||||
DRI . déclaration revenus . BNC:
|
||||
titre.en: '[automatic] Professional non-commercial income'
|
||||
titre.fr: Revenus non commerciaux professionnels
|
||||
DRI . déclaration revenus . BNC . durée de l'exercice:
|
||||
titre.en: '[automatic] duration of the exercise'
|
||||
titre.fr: durée de l'exercice
|
||||
DRI . déclaration revenus . BNC . déficits:
|
||||
note.en: '[automatic] including non-professional inventors'
|
||||
note.fr: y compris inventeurs non professionnels
|
||||
titre.en: '[automatic] deficits'
|
||||
titre.fr: déficits
|
||||
DRI . déclaration revenus . BNC . jeunes créateurs:
|
||||
titre.en: '[automatic] Young creators: 50% deduction'
|
||||
titre.fr: 'Jeunes créateurs : abattement de 50 %'
|
||||
DRI . déclaration revenus . BNC . moins-values:
|
||||
note.en: '[automatic] of which short-term capital losses'
|
||||
note.fr: dont moins-values à court terme
|
||||
titre.en: '[automatic] capital losses'
|
||||
titre.fr: moins-values
|
||||
DRI . déclaration revenus . BNC . plus-values:
|
||||
note.en: '[automatic] of which short-term capital gains, capital grants,
|
||||
insurance proceeds from loss of assets'
|
||||
note.fr: dont plus-values à court terme, subventions d’équipement, indemnités
|
||||
d’assurance pour perte d’élément d’actif
|
||||
titre.en: '[automatic] '
|
||||
titre.fr: ' '
|
||||
DRI . déclaration revenus . BNC . revenus exonérés:
|
||||
note.en: '[automatic] zoned regimes article 1417, IV, b of the general tax code'
|
||||
note.fr: régimes zonés article 1417, IV, b du code général des impôts
|
||||
titre.en: '[automatic] exempt income'
|
||||
titre.fr: revenus exonérés
|
||||
DRI . déclaration revenus . BNC . revenus imposables:
|
||||
note.en: '[automatic] general case'
|
||||
note.fr: cas général
|
||||
titre.en: '[automatic] taxable income'
|
||||
titre.fr: revenus imposables
|
||||
DRI . déclaration revenus . BNC . régime de la déclaration contrôlée:
|
||||
titre.en: '[automatic] controlled declaration system'
|
||||
titre.fr: régime de la déclaration contrôlée
|
||||
DRI . déclaration revenus . déclarant 1:
|
||||
titre.en: '[automatic] declarant 1'
|
||||
titre.fr: déclarant 1
|
||||
DRI . déclaration revenus . déclarant 2:
|
||||
titre.en: '[automatic] declarant 2'
|
||||
titre.fr: déclarant 2
|
||||
DRI . déclaration revenus . indépendant:
|
||||
titre.en: '[automatic] Additional data from the income tax return for
|
||||
self-employed persons'
|
||||
titre.fr: Données complémentaires de la déclaration de revenu des indépendants
|
||||
DRI . déclaration revenus . indépendant . cotisations facultatives:
|
||||
titre.en: '[automatic] optional contributions'
|
||||
titre.fr: cotisations facultatives
|
||||
DRI . déclaration revenus . indépendant . cotisations sociales:
|
||||
titre.en: '[automatic] social contributions'
|
||||
titre.fr: cotisations sociales
|
||||
DRI . liasse:
|
||||
titre.en: '[automatic] bundle'
|
||||
titre.fr: liasse
|
||||
DRI . liasse . OGA:
|
||||
question.en: '[automatic] Are you a member of an OGA?'
|
||||
question.fr: Êtes-vous adhérant à une OGA ?
|
||||
titre.en: '[automatic] OGA'
|
||||
titre.fr: OGA
|
||||
DRI . liasse . déclaration contrôlée:
|
||||
titre.en: '[automatic] controlled declaration'
|
||||
titre.fr: déclaration contrôlée
|
||||
DRI . liasse . déclaration contrôlée . AW:
|
||||
résumé.en: '[automatic] of which exemption on "new business" profits'
|
||||
résumé.fr: dont exonération sur le bénéfice « entreprise nouvelle »
|
||||
titre.en: '[automatic] AW'
|
||||
titre.fr: AW
|
||||
DRI . liasse . déclaration contrôlée . BT:
|
||||
résumé.en: '[automatic] of which mandatory'
|
||||
résumé.fr: dont obligatoires
|
||||
titre.en: '[automatic] BT'
|
||||
titre.fr: BT
|
||||
DRI . liasse . déclaration contrôlée . BU:
|
||||
résumé.en: '[automatic] including optional to new retirement savings plans'
|
||||
résumé.fr: dont facultatives aux nouveaux plans d'épargne retraite
|
||||
titre.en: '[automatic] BU'
|
||||
titre.fr: BU
|
||||
DRI . liasse . déclaration contrôlée . BV:
|
||||
résumé.en: '[automatic] deductible generalized social contribution'
|
||||
résumé.fr: contribution sociale généralisée déductible
|
||||
titre.en: '[automatic] BV'
|
||||
titre.fr: BV
|
||||
DRI . liasse . déclaration contrôlée . BZ:
|
||||
résumé.en: '[automatic] of which optional Madelin contributions'
|
||||
résumé.fr: dont cotisations facultatives Madelin
|
||||
titre.en: '[automatic] BZ'
|
||||
titre.fr: BZ
|
||||
DRI . liasse . déclaration contrôlée . CB:
|
||||
résumé.en: '[automatic] Short-term capital gain'
|
||||
résumé.fr: Plus-value à court terme
|
||||
titre.en: '[automatic] CB'
|
||||
titre.fr: CB
|
||||
DRI . liasse . déclaration contrôlée . CE:
|
||||
résumé.en: '[automatic] Total'
|
||||
résumé.fr: Total
|
||||
titre.en: '[automatic] CE'
|
||||
titre.fr: CE
|
||||
DRI . liasse . déclaration contrôlée . CI:
|
||||
résumé.en:
|
||||
'[automatic] of which doctor exemption for "areas with a shortage of
|
||||
health care".'
|
||||
résumé.fr: dont exonération médecin « zones déficitaires en offre de soin »
|
||||
titre.en: '[automatic] CI'
|
||||
titre.fr: CI
|
||||
DRI . liasse . déclaration contrôlée . CJ:
|
||||
résumé.en: '[automatic] of which Covid Solidarity Fund'
|
||||
résumé.fr: dont aides Fonds de solidarité Covid
|
||||
titre.en: '[automatic] CJ'
|
||||
titre.fr: CJ
|
||||
DRI . liasse . déclaration contrôlée . CK:
|
||||
résumé.en: '[automatic] Short-term capital loss'
|
||||
résumé.fr: Moins-value à court terme
|
||||
titre.en: '[automatic] CK'
|
||||
titre.fr: CK
|
||||
DRI . liasse . déclaration contrôlée . CN:
|
||||
résumé.en: '[automatic] Total'
|
||||
résumé.fr: Total
|
||||
titre.en: '[automatic] CN'
|
||||
titre.fr: CN
|
||||
DRI . liasse . déclaration contrôlée . CO:
|
||||
résumé.en: '[automatic] of which exemption on the "young artists" benefit'
|
||||
résumé.fr: dont exonération sur le bénéfice « jeunes artistes »
|
||||
titre.en: '[automatic] CO'
|
||||
titre.fr: CO
|
||||
DRI . liasse . déclaration contrôlée . CQ:
|
||||
résumé.en: '[automatic] of which deduction for "sector 1 physicians'
|
||||
résumé.fr: dont déduction « médecin conventionnés de secteur 1 »
|
||||
titre.en: '[automatic] CQ'
|
||||
titre.fr: CQ
|
||||
DRI . liasse . déclaration contrôlée . CS:
|
||||
résumé.en: '[automatic] of which exemption on the "urban free zone entrepreneur" profit'
|
||||
résumé.fr: dont exonération sur le bénéfice « zone franche urbaine entrepreneur »
|
||||
titre.en: '[automatic] CS'
|
||||
titre.fr: CS
|
||||
DRI . liasse . déclaration contrôlée . CT:
|
||||
résumé.en: '[automatic] including the contribution to employee savings plans'
|
||||
résumé.fr: dont l'abondement sur l'épargne salariale
|
||||
titre.en: '[automatic] CT'
|
||||
titre.fr: CT
|
||||
DRI . liasse . déclaration contrôlée . CU:
|
||||
résumé.en: '[automatic] of which exemption on "young innovative companies" profits'
|
||||
résumé.fr: dont exonération sur le bénéfice « jeunes entreprise innovantes »
|
||||
titre.en: '[automatic] CU'
|
||||
titre.fr: CU
|
||||
DRI . liasse . déclaration contrôlée . charges sociales personnelles:
|
||||
titre.en: '[automatic] personal social charges'
|
||||
titre.fr: charges sociales personnelles
|
||||
DRI . liasse . déclaration contrôlée . divers à déduire:
|
||||
titre.en: '[automatic] miscellaneous deductible'
|
||||
titre.fr: divers à déduire
|
||||
DRI . liasse . déclaration contrôlée . excedents:
|
||||
titre.en: '[automatic] surpluses'
|
||||
titre.fr: excedents
|
||||
DRI . liasse . déclaration contrôlée . impôts et taxe:
|
||||
titre.en: '[automatic] taxes and duties'
|
||||
titre.fr: impôts et taxe
|
||||
DRI . liasse . déclaration contrôlée . insuffisance:
|
||||
titre.en: '[automatic] insufficiency'
|
||||
titre.fr: insuffisance
|
||||
DRI . liasse . remboursement cotisation:
|
||||
question.en: '[automatic] Did you receive a contribution refund in 2021?'
|
||||
question.fr: Avez vous reçu un remboursement de cotisation en 2021 ?
|
||||
titre.en: '[automatic] reimbursement of contribution'
|
||||
titre.fr: remboursement cotisation
|
||||
DRI . liasse . réel normal:
|
||||
titre.en: '[automatic] real normal'
|
||||
titre.fr: réel normal
|
||||
DRI . liasse . réel simplifié:
|
||||
titre.en: '[automatic] simplified real'
|
||||
titre.fr: réel simplifié
|
||||
DRI . liasse . réel simplifié . Divers:
|
||||
titre.en: '[automatic] Various'
|
||||
titre.fr: Divers
|
||||
DRI . liasse . réel simplifié . Déductions:
|
||||
titre.en: '[automatic] Deductions'
|
||||
titre.fr: Déductions
|
||||
DRI . liasse . réel simplifié . c326:
|
||||
résumé.en: '[automatic] of which amount deductible from compulsory social
|
||||
security contributions'
|
||||
résumé.fr: dont montant déductible des cotisations sociales obligatoires
|
||||
titre.en: '[automatic] 326'
|
||||
titre.fr: '326'
|
||||
DRI . liasse . réel simplifié . c342:
|
||||
résumé.en: '[automatic] Deductions'
|
||||
résumé.fr: Déductions
|
||||
titre.en: '[automatic] 342'
|
||||
titre.fr: '342'
|
||||
DRI . liasse . réel simplifié . c370:
|
||||
résumé.en: '[automatic] Profit'
|
||||
résumé.fr: Bénéfice
|
||||
titre.en: '[automatic] 370'
|
||||
titre.fr: '370'
|
||||
DRI . liasse . réel simplifié . c372:
|
||||
résumé.en: '[automatic] Deficit'
|
||||
résumé.fr: Déficit
|
||||
titre.en: '[automatic] 372'
|
||||
titre.fr: '372'
|
||||
DRI . liasse . réel simplifié . c381:
|
||||
résumé.en: '[automatic] Optional premiums and supplementary contributions'
|
||||
résumé.fr: Primes et cotisations complémentaires facultatives
|
||||
titre.en: '[automatic] 381'
|
||||
titre.fr: '381'
|
||||
DRI . liasse . réel simplifié . c596:
|
||||
résumé.en: '[automatic] Short term'
|
||||
résumé.fr: Court terme
|
||||
titre.en: '[automatic] 596'
|
||||
titre.fr: '596'
|
||||
DRI . liasse . réel simplifié . plus-values et moins-values:
|
||||
titre.en: '[automatic] capital gains and losses'
|
||||
titre.fr: plus-values et moins-values
|
||||
DRI . liasse . réel simplifié . résultat:
|
||||
titre.en: '[automatic] Taxable income after deduction of deficits'
|
||||
titre.fr: Résultat fiscal après imputation des déficits
|
||||
DRI . nombre de déclarations:
|
||||
titre.en: '[automatic] number of declarations'
|
||||
titre.fr: nombre de déclarations
|
||||
SMIC horaire:
|
||||
note.en: >
|
||||
[automatic] In principle, and unless there is a "boost", the SMIC is
|
||||
|
@ -6362,7 +6721,7 @@ dirigeant . rémunération . totale:
|
|||
résumé.fr: Incluant les cotisations et contributions
|
||||
titre.en: '[automatic] Total compensation'
|
||||
titre.fr: Rémunération totale
|
||||
déclaration indépendants:
|
||||
déclaration charge sociales:
|
||||
description.en:
|
||||
'[automatic] These rules calculate the amounts of social charges
|
||||
to be reported in the income tax return of the self-employed and in the
|
||||
|
@ -6370,9 +6729,9 @@ déclaration indépendants:
|
|||
description.fr: Ces règles calculent les montants des charges sociales à
|
||||
reporter dans la déclaration de revenu des indépendants et dans les
|
||||
déclaration de résultats.
|
||||
titre.en: '[automatic] assistance declaration independent income 2020'
|
||||
titre.fr: déclaration indépendants
|
||||
déclaration indépendants . ACRE:
|
||||
titre.en: '[automatic] social security declaration'
|
||||
titre.fr: déclaration charge sociales
|
||||
déclaration charge sociales . ACRE:
|
||||
description.en: >-
|
||||
[automatic] The aid for creating or taking over a business (Acre) consists
|
||||
of a partial exemption from social security charges, known as the start-up
|
||||
|
@ -6429,28 +6788,28 @@ déclaration indépendants . ACRE:
|
|||
question.fr: Votre entreprise bénéficie-t-elle de l'ACRE ?
|
||||
titre.en: '[automatic] ACRE'
|
||||
titre.fr: ACRE
|
||||
déclaration indépendants . comptabilité:
|
||||
déclaration charge sociales . comptabilité:
|
||||
question.en: '[automatic] What method of accounting management is used for the company?'
|
||||
question.fr: Quel méthode de gestion de la comptabilité est utilisée pour l'entreprise ?
|
||||
titre.en: '[automatic] controlled declaration regime'
|
||||
titre.fr: régime de la déclaration contrôlée
|
||||
déclaration indépendants . comptabilité . engagement:
|
||||
déclaration charge sociales . comptabilité . engagement:
|
||||
titre.en: '[automatic] accrual accounting'
|
||||
titre.fr: comptabilité d'engagement
|
||||
déclaration indépendants . comptabilité . trésorerie:
|
||||
déclaration charge sociales . comptabilité . trésorerie:
|
||||
titre.en: '[automatic] cash accounting'
|
||||
titre.fr: comptabilité de trésorerie
|
||||
déclaration indépendants . cotisations obligatoires déductibles:
|
||||
déclaration charge sociales . cotisations obligatoires déductibles:
|
||||
description.en: '[automatic] Deductible compulsory contributions, useful for
|
||||
calculating the CSG/CRDS base'
|
||||
description.fr: Cotisations obligatoires déductibles, utile pour calculer
|
||||
l'assiette de la CSG/CRDS
|
||||
titre.en: '[automatic] deductible mandatory contributions'
|
||||
titre.fr: cotisations obligatoires déductibles
|
||||
déclaration indépendants . cotisations payées:
|
||||
déclaration charge sociales . cotisations payées:
|
||||
titre.en: '[automatic] contributions paid'
|
||||
titre.fr: cotisations payées
|
||||
déclaration indépendants . cotisations payées . CRDS:
|
||||
déclaration charge sociales . cotisations payées . CRDS:
|
||||
description.en: >
|
||||
[automatic] You can find this amount in your personal Urssaf space. Here are
|
||||
the steps to follow:
|
||||
|
@ -6483,7 +6842,7 @@ déclaration indépendants . cotisations payées . CRDS:
|
|||
question.fr: Quel est le montant total de CRDS payé cette année ?
|
||||
titre.en: '[automatic] CRDS'
|
||||
titre.fr: CRDS
|
||||
déclaration indépendants . cotisations payées . CSG déductible:
|
||||
déclaration charge sociales . cotisations payées . CSG déductible:
|
||||
description.en: >
|
||||
[automatic] You can find this amount in your personal Urssaf space. Here are
|
||||
the steps to follow:
|
||||
|
@ -6516,7 +6875,7 @@ déclaration indépendants . cotisations payées . CSG déductible:
|
|||
question.fr: Quel est le montant total de CSG déductible payé cette année ?
|
||||
titre.en: '[automatic] Deductible CSG'
|
||||
titre.fr: CSG déductible
|
||||
déclaration indépendants . cotisations payées . CSG non déductible:
|
||||
déclaration charge sociales . cotisations payées . CSG non déductible:
|
||||
description.en: >
|
||||
[automatic] You can find this amount in your personal Urssaf space. Here are
|
||||
the steps to follow:
|
||||
|
@ -6549,10 +6908,10 @@ déclaration indépendants . cotisations payées . CSG non déductible:
|
|||
question.fr: Quel est le montant total de CSG non déductible payé cette année ?
|
||||
titre.en: '[automatic] Non-deductible CSG'
|
||||
titre.fr: CSG non déductible
|
||||
déclaration indépendants . cotisations payées . cotisations obligatoires déductibles:
|
||||
déclaration charge sociales . cotisations payées . cotisations obligatoires déductibles:
|
||||
titre.en: '[automatic] deductible mandatory contributions'
|
||||
titre.fr: cotisations obligatoires déductibles
|
||||
déclaration indépendants . cotisations payées . total charges sociales:
|
||||
déclaration charge sociales . cotisations payées . total charges sociales:
|
||||
description.en: >
|
||||
[automatic] You can find this amount in your personal Urssaf space. Here are
|
||||
the steps to follow:
|
||||
|
@ -6585,10 +6944,10 @@ déclaration indépendants . cotisations payées . total charges sociales:
|
|||
payées pendant l'exercice ?
|
||||
titre.en: '[automatic] total social charges'
|
||||
titre.fr: total charges sociales
|
||||
déclaration indépendants . cotisations payées version simple:
|
||||
déclaration charge sociales . cotisations payées version simple:
|
||||
titre.en: '[automatic] dues paid simple version'
|
||||
titre.fr: cotisations payées version simple
|
||||
déclaration indépendants . cotisations payées version simple . CSG déductible et CFP:
|
||||
déclaration charge sociales . cotisations payées version simple . CSG déductible et CFP:
|
||||
description.en: >
|
||||
[automatic] Enter the amount of deductible CSG and PSC you paid in 2021
|
||||
(regardless of the year to which these contributions relate).
|
||||
|
@ -6601,7 +6960,7 @@ déclaration indépendants . cotisations payées version simple . CSG déductibl
|
|||
question.fr: Quel est le montant total de CSG déductible et CFP payées cette année ?
|
||||
titre.en: '[automatic] Deductible CSG and PSC'
|
||||
titre.fr: CSG déductible et CFP
|
||||
déclaration indépendants . cotisations payées version simple . cotisations sociales:
|
||||
déclaration charge sociales . cotisations payées version simple . cotisations sociales:
|
||||
description.en: >
|
||||
[automatic] Indicate the amount of social contributions to the compulsory
|
||||
schemes (sickness-maternity, old age, disability-death, family) that you
|
||||
|
@ -6615,12 +6974,12 @@ déclaration indépendants . cotisations payées version simple . cotisations so
|
|||
question.fr: Quel est le montant de vos cotisations sociales payées cette année ?
|
||||
titre.en: '[automatic] social contributions'
|
||||
titre.fr: cotisations sociales
|
||||
déclaration indépendants . nature de l'activité:
|
||||
déclaration charge sociales . 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é
|
||||
déclaration indépendants . nature de l'activité . artisanale:
|
||||
déclaration charge sociales . 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
|
||||
|
@ -6647,7 +7006,7 @@ déclaration indépendants . nature de l'activité . artisanale:
|
|||
- Les activités artisanales sont répertoriées par un décret
|
||||
titre.en: '[automatic] artisanal'
|
||||
titre.fr: artisanale
|
||||
déclaration indépendants . nature de l'activité . commerciale:
|
||||
déclaration charge sociales . nature de l'activité . commerciale:
|
||||
description.en: >
|
||||
[automatic] - Purchase of goods for resale as is (wholesale or retail trade)
|
||||
|
||||
|
@ -6663,7 +7022,7 @@ déclaration indépendants . nature de l'activité . commerciale:
|
|||
- 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
|
||||
déclaration indépendants . nature de l'activité . libérale:
|
||||
déclaration charge sociales . nature de l'activité . libérale:
|
||||
description.en: >
|
||||
[automatic] These are the "intellectual" professions, which are not attached
|
||||
to any specific
|
||||
|
@ -6682,7 +7041,7 @@ déclaration indépendants . nature de l'activité . libérale:
|
|||
1er janvier 2021.
|
||||
titre.en: '[automatic] Liberal attached to the general regime'
|
||||
titre.fr: Libérale rattachée au régime général
|
||||
déclaration indépendants . réduction covid:
|
||||
déclaration charge sociales . réduction covid:
|
||||
description.en: >-
|
||||
[automatic] Within the framework of the health crisis, the Government has
|
||||
implemented several exceptional measures concerning the social contributions
|
||||
|
@ -6785,10 +7144,10 @@ déclaration indépendants . réduction covid:
|
|||
cotisations et contributions sociales 2021 liées à la crise du Covid-19 ?
|
||||
titre.en: '[automatic] Covid contribution reduction'
|
||||
titre.fr: Réduction de cotisation Covid
|
||||
déclaration indépendants . réduction covid . conjoint collaborateur:
|
||||
déclaration charge sociales . réduction covid . conjoint collaborateur:
|
||||
titre.en: '[automatic] collaborating spouse'
|
||||
titre.fr: conjoint collaborateur
|
||||
déclaration indépendants . réduction covid . montant:
|
||||
déclaration charge sociales . réduction covid . montant:
|
||||
description.en: >-
|
||||
[automatic] To find out the amount of the exemption, you can use the COVID
|
||||
exemption simulator.
|
||||
|
@ -6808,33 +7167,33 @@ déclaration indépendants . réduction covid . montant:
|
|||
sanitaire pour les cotisations de l’année 2021 ?
|
||||
titre.en: '[automatic] Covid discount'
|
||||
titre.fr: Réduction Covid
|
||||
déclaration indépendants . réduction covid . part CSG:
|
||||
déclaration charge sociales . réduction covid . part CSG:
|
||||
titre.en: '[automatic] Covid reduction on CSG'
|
||||
titre.fr: Part réduction Covid sur CSG
|
||||
déclaration indépendants . réduction covid . part CSG . déductible:
|
||||
déclaration charge sociales . réduction covid . part CSG . déductible:
|
||||
titre.en: '[automatic] Covid reduction on deductible CSG/CRDS'
|
||||
titre.fr: Part réduction Covid sur CSG/CRDS déductible
|
||||
déclaration indépendants . réduction covid . part CSG . non déductible:
|
||||
déclaration charge sociales . réduction covid . part CSG . non déductible:
|
||||
titre.en: '[automatic] Covid reduction on non-deductible CSG/CRDS'
|
||||
titre.fr: Part réduction Covid sur CSG/CRDS non déductible
|
||||
déclaration indépendants . réduction covid . part cotisations:
|
||||
déclaration charge sociales . réduction covid . part cotisations:
|
||||
titre.en: '[automatic] Covid reduction on contributions (excluding CSG/CRDS)'
|
||||
titre.fr: Part réduction Covid sur cotisations (hors CSG/CRDS)
|
||||
déclaration indépendants . réduction covid . pourcentage cotisations:
|
||||
déclaration charge sociales . réduction covid . pourcentage cotisations:
|
||||
titre.en: '[automatic] percentage contributions'
|
||||
titre.fr: pourcentage cotisations
|
||||
déclaration indépendants . réduction covid . taux CSG:
|
||||
déclaration charge sociales . réduction covid . taux CSG:
|
||||
titre.en: '[automatic] CSG rate'
|
||||
titre.fr: taux CSG
|
||||
déclaration indépendants . réduction covid . total:
|
||||
déclaration charge sociales . réduction covid . total:
|
||||
description.en: '[automatic] Included in the amount of contributions shown above'
|
||||
description.fr: Intégrée dans le montant des cotisations affiché ci-dessus
|
||||
titre.en: '[automatic] Covid discount'
|
||||
titre.fr: Réduction Covid
|
||||
déclaration indépendants . régime d'imposition:
|
||||
déclaration charge sociales . régime d'imposition:
|
||||
titre.en: '[automatic] tax regime'
|
||||
titre.fr: régime d'imposition
|
||||
déclaration indépendants . régime d'imposition . déclaration contrôlée:
|
||||
déclaration charge sociales . régime d'imposition . déclaration contrôlée:
|
||||
description.en: >
|
||||
[automatic] If you have to declare non-commercial profits (BNC), you may be
|
||||
subject to the controlled declaration regime or the micro-BNC regime; this
|
||||
|
@ -6857,7 +7216,7 @@ déclaration indépendants . régime d'imposition . déclaration contrôlée:
|
|||
Dans le cas de la déclaration contrôlée, le contribuable est imposé sur les bénéfices effectivement réalisés. Dans le cas du régime micro-BNC, un abattement forfaitaire de 34 % est appliqué automatiquement après déclaration du chiffre d’affaires.
|
||||
titre.en: '[automatic] controlled declaration regime'
|
||||
titre.fr: régime de la déclaration contrôlée
|
||||
déclaration indépendants . régime d'imposition . réel:
|
||||
déclaration charge sociales . régime d'imposition . réel:
|
||||
description.en: >
|
||||
[automatic] The simplified tax regime (RSI) and the normal tax regime (RN)
|
||||
apply to profits made during the financial year and to value added tax
|
||||
|
@ -6876,7 +7235,7 @@ déclaration indépendants . régime d'imposition . réel:
|
|||
question.fr: Quel est le régime d'imposition applicable à l'exercice ?
|
||||
titre.en: '[automatic] real'
|
||||
titre.fr: réel
|
||||
déclaration indépendants . régime d'imposition . réel . normal:
|
||||
déclaration charge sociales . régime d'imposition . réel . normal:
|
||||
description.en: >
|
||||
[automatic] The accounting of the company subjected to the normal real
|
||||
regime must be more precise than for the simplified real regime:
|
||||
|
@ -6907,7 +7266,7 @@ déclaration indépendants . régime d'imposition . réel . normal:
|
|||
- L'entreprise doit tenir un livre journal et un grand livre.
|
||||
titre.en: '[automatic] standard real estate regime'
|
||||
titre.fr: régime réel normal
|
||||
déclaration indépendants . régime d'imposition . réel . simplifié:
|
||||
déclaration charge sociales . régime d'imposition . réel . simplifié:
|
||||
description.en: >
|
||||
[automatic] Companies subject to the simplified real tax regime must keep
|
||||
standard accounts: a balance sheet, an income statement and annexes. Special
|
||||
|
@ -6933,34 +7292,34 @@ déclaration indépendants . régime d'imposition . réel . simplifié:
|
|||
- le bilan fourni à l’administration fiscale est un bilan simplifié
|
||||
titre.en: '[automatic] simplified real estate regime'
|
||||
titre.fr: régime réel simplifié
|
||||
déclaration indépendants . rémunération déductible:
|
||||
déclaration charge sociales . rémunération déductible:
|
||||
titre.en: '[automatic] deductible remuneration'
|
||||
titre.fr: rémunération déductible
|
||||
déclaration indépendants . résultat simple:
|
||||
déclaration charge sociales . résultat simple:
|
||||
titre.en: '[automatic] simple result'
|
||||
titre.fr: résultat simple
|
||||
déclaration indépendants . résultat simple . CFP:
|
||||
déclaration charge sociales . résultat simple . CFP:
|
||||
description.en: '[automatic] Contribution to professional training'
|
||||
description.fr: Contribution à la formation professionnelle
|
||||
résumé.en: '[automatic] [D]'
|
||||
résumé.fr: '[D]'
|
||||
titre.en: '[automatic] PSC'
|
||||
titre.fr: CFP
|
||||
déclaration indépendants . résultat simple . CSG déductible:
|
||||
déclaration charge sociales . résultat simple . CSG déductible:
|
||||
description.en: '[automatic] Amount of CSG deductible from income tax'
|
||||
description.fr: Montant de la CSG déductible à l'impôt sur le revenu
|
||||
résumé.en: '[automatic] [B]'
|
||||
résumé.fr: '[B]'
|
||||
titre.en: '[automatic] Deductible CSG'
|
||||
titre.fr: CSG déductible
|
||||
déclaration indépendants . résultat simple . assiette sociale:
|
||||
déclaration charge sociales . résultat simple . assiette sociale:
|
||||
description.en: '[automatic] Basis for calculating social security contributions'
|
||||
description.fr: Assiette utilisée pour le calcul des cotisations sociales
|
||||
résumé.en: '[automatic] [A - (B + C + D)]'
|
||||
résumé.fr: '[A - (B + C + D)]'
|
||||
titre.en: '[automatic] social base'
|
||||
titre.fr: assiette sociale
|
||||
déclaration indépendants . résultat simple . cotisations obligatoires:
|
||||
déclaration charge sociales . résultat simple . cotisations obligatoires:
|
||||
description.en: >
|
||||
[automatic] To be reported in :
|
||||
|
||||
|
@ -6989,7 +7348,7 @@ déclaration indépendants . résultat simple . cotisations obligatoires:
|
|||
résumé.fr: '[C]'
|
||||
titre.en: '[automatic] Deductible mandatory social security contributions'
|
||||
titre.fr: Cotisations sociales obligatoires déductibles
|
||||
déclaration indépendants . résultat simple . revenu net fiscal:
|
||||
déclaration charge sociales . résultat simple . revenu net fiscal:
|
||||
description.en:
|
||||
'[automatic] Income before deduction of social security charges
|
||||
and tax exemptions'
|
||||
|
@ -6998,7 +7357,7 @@ déclaration indépendants . résultat simple . revenu net fiscal:
|
|||
résumé.fr: '[A]'
|
||||
titre.en: '[automatic] net tax income'
|
||||
titre.fr: revenu net fiscal
|
||||
déclaration indépendants . résultat simple . total charges sociales déductible:
|
||||
déclaration charge sociales . résultat simple . total charges sociales déductible:
|
||||
description.en: |
|
||||
[automatic] To be reported in :
|
||||
- simplified actual system:** item 252 of form 2033-B-SD
|
||||
|
@ -7186,6 +7545,8 @@ entreprise . activité . libérale:
|
|||
Selon la loi, ce sont des personnes exerçant à titre habituel, de manière indépendante et sous leur responsabilité, une activité :
|
||||
- de nature généralement civile,
|
||||
- ayant pour objet d'assurer des prestations principalement intellectuelles, techniques ou de soins, mises en œuvre au moyen de qualifications professionnelles appropriées et dans le respect de principes éthiques ou d'une déontologie professionnelle.
|
||||
question.en: '[automatic] Is your activity a liberal profession?'
|
||||
question.fr: Votre activité est-elle une profession libérale ?
|
||||
titre.en: liberal
|
||||
titre.fr: libérale
|
||||
entreprise . activité . libérale réglementée:
|
||||
|
@ -7312,6 +7673,9 @@ entreprise . activité . service ou vente . vente:
|
|||
toutes les activités de restauration et d'hébergement.
|
||||
titre.en: '[automatic] sale of goods, catering or accommodation'
|
||||
titre.fr: vente de biens, restauration ou hébergement
|
||||
entreprise . activité principale:
|
||||
titre.en: '[automatic] main activity'
|
||||
titre.fr: activité principale
|
||||
entreprise . association non lucrative:
|
||||
description.en: The company is a non-profit organisation
|
||||
description.fr: L'entreprise est une association non lucrative
|
||||
|
@ -7345,9 +7709,6 @@ entreprise . catégorie juridique . EI . auto-entrepreneur:
|
|||
question.fr: Êtes-vous auto-entrepreneur ?
|
||||
titre.en: '[automatic] auto-entrepreneur'
|
||||
titre.fr: auto-entrepreneur
|
||||
entreprise . catégorie juridique . EI . imposition entreprise:
|
||||
titre.en: '[automatic] taxation company'
|
||||
titre.fr: imposition entreprise
|
||||
entreprise . catégorie juridique . EI . responsabilité limité:
|
||||
question.en: '[automatic] Is your business an EIRL?'
|
||||
question.fr: Votre entreprise est-elle une EIRL ?
|
||||
|
@ -7357,6 +7718,11 @@ entreprise . catégorie juridique . SARL:
|
|||
titre.en: '[automatic] EURL or SARL'
|
||||
titre.fr: EURL ou SARL
|
||||
entreprise . catégorie juridique . SARL . unipersonnelle:
|
||||
description.en: '[automatic] An EURL is a company with only one partner. This
|
||||
means that you are the sole owner of the company.'
|
||||
description.fr:
|
||||
Une EURL est une entreprise avec un seul associé. Cela signifie
|
||||
que vous êtes le seul et unique propriétaire de l'entreprise.
|
||||
question.en: '[automatic] Is your company an EURL?'
|
||||
question.fr: Votre entreprise est-elle une EURL ?
|
||||
titre.en: '[automatic] EURL'
|
||||
|
@ -7858,27 +8224,67 @@ entreprise . exonérée de TVA:
|
|||
titre.en: '[automatic] VAT-exempt'
|
||||
titre.fr: exonérée de TVA
|
||||
entreprise . imposition:
|
||||
description.en: >
|
||||
[automatic] Indicate whether the taxation system of the income related to
|
||||
the self-employed activity is :
|
||||
|
||||
- Income tax: the company's profits are taxed directly to the self-employed person, at the progressive income tax rate.
|
||||
|
||||
- corporate tax: the company's profits are taxed in the name of the company, at the corporate tax rate.
|
||||
description.fr: >
|
||||
Indiquez si le régime d’imposition des revenus liés à l’activité
|
||||
indépendante relèvent :
|
||||
|
||||
- de l’impôt sur le revenu : les bénéfices de l’entreprise sont imposés directement auprès du travailleur indépendant, au barème progressif de l’impôt sur le revenu.
|
||||
|
||||
- de l’impôt sur les sociétés : les bénéfices de l’entreprise sont imposés au nom de la société, au taux de l’impôt sur les sociétés.
|
||||
question.en: '[automatic] How is the company taxed?'
|
||||
question.fr: Comment l'entreprise est-elle imposée ?
|
||||
question.en: "[automatic] What is your company's **type of taxation**?"
|
||||
question.fr: Quel est le **type d'imposition** de votre entreprise ?
|
||||
titre.en: '[automatic] taxation'
|
||||
titre.fr: imposition
|
||||
entreprise . imposition . IR:
|
||||
titre.en: '[automatic] Income tax'
|
||||
titre.fr: Impôt sur le revenu
|
||||
description.en: >
|
||||
[automatic] The result of your company is taxed at the income tax, like the
|
||||
other incomes of your household.
|
||||
|
||||
your household income.
|
||||
|
||||
|
||||
The result is determined when you fill in the **tax form** (also called
|
||||
|
||||
income tax return). This is done by the accountant.
|
||||
|
||||
|
||||
If your company makes money, the result is called **profit**. It is added to the other
|
||||
|
||||
It is added to other taxable income (if any): **your income tax is higher**.
|
||||
|
||||
|
||||
If your business loses money, the result is called a **deficit**. It reduces the amount of
|
||||
|
||||
your household taxable income: **Your income tax is lower**.
|
||||
|
||||
|
||||
With income tax, there is no tax difference between your household income and your business income.
|
||||
|
||||
your business. This means that the amount you pay yourself from your business bank account
|
||||
|
||||
to your personal bank account does not change the company's result.
|
||||
description.fr: >
|
||||
Le résultat de votre entreprise est imposé à l'impôt sur le revenu, comme
|
||||
les autres revenus de
|
||||
|
||||
votre foyer.
|
||||
|
||||
|
||||
Le résultat est déterminé lors du remplissage de la **liasse fiscale** (aussi appelée
|
||||
|
||||
déclaration de résultat). C'est le comptable qui s'en charge.
|
||||
|
||||
|
||||
Si votre entreprise gagne de l'argent, le résultat est appelé **bénéfice**. Il est ajouté aux autres
|
||||
|
||||
revenus imposables (s'ils existent) : **votre impôt sur le revenu est plus élevé**.
|
||||
|
||||
|
||||
Si votre entreprise perd de l'argent, le résultat est appelé **déficit**. Il vient réduire le montant du
|
||||
|
||||
revenu imposable de votre ménage : **votre impôt sur le revenu est moins élevé**.
|
||||
|
||||
|
||||
Avec l'imposition sur le revenu, il n'y a pas de différence fiscale entre les revenus de votre foyer et ceux de
|
||||
|
||||
votre entreprise. Cela veut dire que le montant que vous vous versez depuis le compte bancaire professionnel
|
||||
|
||||
vers votre compte bancaire personnel ne change pas le résultat de l'entreprise.
|
||||
titre.en: '[automatic] Income tax (IR)'
|
||||
titre.fr: Impôt sur le revenu (IR)
|
||||
entreprise . imposition . IR . information sur le report de déficit:
|
||||
description.en: >
|
||||
[automatic] When your taxable income is negative, it reduces the taxable
|
||||
|
@ -7947,13 +8353,89 @@ entreprise . imposition . IR . micro-fiscal . revenu abattu:
|
|||
Il lui suffit de porter dans la déclaration complémentaire de revenu (n°2042-C Pro) le montant annuel du chiffre d'affaires brut (BIC) ou des recettes (BNC).
|
||||
titre.en: '[automatic] flat-rate micro-tax deduction'
|
||||
titre.fr: abattement forfaitaire micro-fiscal
|
||||
entreprise . imposition . IR . type de bénéfices:
|
||||
question.en: "[automatic] What is your company's **type of profit**?"
|
||||
question.fr: Quel est le **type de bénéfices** de votre entreprise ?
|
||||
titre.en: '[automatic] type of benefits'
|
||||
titre.fr: type de bénéfices
|
||||
entreprise . imposition . IR . type de bénéfices . BA:
|
||||
titre.en: '[automatic] BA'
|
||||
titre.fr: BA
|
||||
entreprise . imposition . IR . type de bénéfices . BA possible:
|
||||
titre.en: '[automatic] BA possible'
|
||||
titre.fr: BA possible
|
||||
entreprise . imposition . IR . type de bénéfices . BIC:
|
||||
titre.en: '[automatic] BIC'
|
||||
titre.fr: BIC
|
||||
entreprise . imposition . IR . type de bénéfices . BIC et BNC possibles:
|
||||
titre.en: '[automatic] BIC and BNC possible'
|
||||
titre.fr: BIC et BNC possibles
|
||||
entreprise . imposition . IR . type de bénéfices . BNC:
|
||||
titre.en: '[automatic] BNC'
|
||||
titre.fr: BNC
|
||||
entreprise . imposition . IS:
|
||||
titre.en: '[automatic] Corporate income tax'
|
||||
titre.fr: Impôt sur les sociétés
|
||||
entreprise . imposition . IS . impôt sur les sociétés:
|
||||
titre.en: '[automatic] corporate tax'
|
||||
titre.fr: impôt sur les sociétés
|
||||
entreprise . imposition . IS . impôt sur les sociétés . contribution sociale:
|
||||
description.en: >-
|
||||
[automatic]
|
||||
|
||||
The **result** of your company is taxed at the **corporate tax**.
|
||||
|
||||
|
||||
If your company loses money, the result is called a **deficit**. It will not have to pay corporate
|
||||
|
||||
corporate income tax.
|
||||
|
||||
|
||||
If your company makes money, the result is called **profit**. It will be taxed at a
|
||||
|
||||
**fixed rate**.
|
||||
|
||||
|
||||
The taxable result is determined when filling out the **tax return** (also called
|
||||
|
||||
income tax return). This is done by the accountant.
|
||||
|
||||
|
||||
|
||||
Please note: there are **two ways of remunerating yourself** with a company that pays corporate income tax:
|
||||
- You can pay yourself a remuneration as a director during the year. This remuneration is
|
||||
deducted (subtracted) from the result to calculate the taxable profit of your company. On the other hand, this
|
||||
remuneration is added to the taxable income of your household for the calculation of the income tax.
|
||||
- You can also pay yourself dividends from previous years' profits. You will have to pay
|
||||
a fixed tax on these dividends: this is called the "flat tax".
|
||||
|
||||
In all cases, you will have to pay social security contributions on the income you receive.
|
||||
description.fr: >-
|
||||
|
||||
Le **résultat** de votre entreprise est imposé à l'**impôt sur les sociétés**.
|
||||
|
||||
|
||||
Si votre entreprise perd de l'argent, le résultat est appelé **déficit**. Elle n'aura pas à payer d'impôt
|
||||
|
||||
sur les sociétés.
|
||||
|
||||
|
||||
Si votre entreprise gagne de l'argent, le résultat est appelé **bénéfice**. Il sera imposé à un
|
||||
|
||||
**taux fixe**.
|
||||
|
||||
|
||||
Le résultat imposable est déterminé lors du remplissage de la **liasse fiscale** (aussi appelée
|
||||
|
||||
déclaration de résultat). C'est le comptable qui s'en charge.
|
||||
|
||||
|
||||
|
||||
À noter : il existe **deux façons de se rémunérer** avec une entreprise à l'impôt sur les sociétés :
|
||||
- Vous pouvez vous verser une rémunération en tant que dirigeant pendant l'année. Cette rémunération est
|
||||
déduite (soustraite) du résultat pour calculer le bénéfice imposable de votre entreprise. En revanche, cette
|
||||
rémunération est ajoutée aux revenus imposables de votre foyer pour le calcul de l'impôt sur le revenu.
|
||||
- Vous pouvez aussi vous verser des dividendes à partir des bénéfices des années précédentes. Vous aurez à payer
|
||||
un impôt fixe sur ces derniers : c'est ce que l'on appelle la "flat tax".
|
||||
|
||||
Dans tous les cas, vous aurez à payer des **cotisations sociales** sur les revenus que vous touchez.
|
||||
titre.en: '[automatic] Corporate tax (IS)'
|
||||
titre.fr: Impôt sur les sociétés (IS)
|
||||
entreprise . imposition . IS . contribution sociale:
|
||||
description.en: >
|
||||
[automatic] The social contribution on profits is a separate tax from the
|
||||
corporate tax. Its amount is not deductible from the results.
|
||||
|
@ -7968,26 +8450,6 @@ entreprise . imposition . IS . impôt sur les sociétés . contribution sociale:
|
|||
L’assiette bénéficie d’un abattement important, et seules les entreprises réalisant plus de 2,3 millions d’euros de bénéfices sont concernées par cette contribution.
|
||||
titre.en: '[automatic] social contribution'
|
||||
titre.fr: contribution sociale
|
||||
entreprise . imposition . IS . impôt sur les sociétés . plafond taux réduit 1:
|
||||
titre.en: '[automatic] ceiling reduced rate 1'
|
||||
titre.fr: plafond taux réduit 1
|
||||
entreprise . imposition . IS . impôt sur les sociétés . plafond taux réduit 2:
|
||||
titre.en: '[automatic] ceiling reduced rate 2'
|
||||
titre.fr: plafond taux réduit 2
|
||||
entreprise . imposition . IS . impôt sur les sociétés . prorata temporis:
|
||||
description.en: >
|
||||
[automatic] When the duration of the financial year is not equal to one
|
||||
year, the ceilings used in the
|
||||
|
||||
the ceilings used in the corporate tax schedule.
|
||||
description.fr: |
|
||||
Lorsque la durée de l’exercice n'est pas égale à un an, on pro-ratise les
|
||||
plafonds utilisés dans le barème de l'impôt sur les sociétés.
|
||||
titre.en: '[automatic] prorata temporis'
|
||||
titre.fr: prorata temporis
|
||||
entreprise . imposition . IS . impôt sur les sociétés . éligible taux réduit:
|
||||
titre.en: '[automatic] eligible for reduced rate'
|
||||
titre.fr: éligible taux réduit
|
||||
entreprise . imposition . IS . information sur le report de déficit:
|
||||
description.en: >
|
||||
[automatic] Losses incurred during a fiscal year can be carried forward to
|
||||
|
@ -7999,6 +8461,20 @@ entreprise . imposition . IS . information sur le report de déficit:
|
|||
(report en arrière).
|
||||
titre.en: '[automatic] information on deficit carryover'
|
||||
titre.fr: information sur le report de déficit
|
||||
entreprise . imposition . IS . montant:
|
||||
titre.en: '[automatic] amount'
|
||||
titre.fr: montant
|
||||
entreprise . imposition . IS . prorata temporis:
|
||||
description.en: >
|
||||
[automatic] When the duration of the financial year is not equal to one
|
||||
year, the ceilings used in the
|
||||
|
||||
the ceilings used in the corporate tax schedule.
|
||||
description.fr: |
|
||||
Lorsque la durée de l’exercice n'est pas égale à un an, on pro-ratise les
|
||||
plafonds utilisés dans le barème de l'impôt sur les sociétés.
|
||||
titre.en: '[automatic] prorata temporis'
|
||||
titre.fr: prorata temporis
|
||||
entreprise . imposition . IS . résultat imposable:
|
||||
résumé.en: '[automatic] Taxable for corporate income tax purposes'
|
||||
résumé.fr: Imposable à l'impôt sur les sociétés
|
||||
|
@ -8009,6 +8485,26 @@ entreprise . imposition . IS . résultat net:
|
|||
résumé.fr: Après déduction des charges et de l'impôt sur les société
|
||||
titre.en: '[automatic] net result'
|
||||
titre.fr: résultat net
|
||||
entreprise . imposition . IS . éligible taux réduit:
|
||||
titre.en: '[automatic] eligible for reduced rate'
|
||||
titre.fr: éligible taux réduit
|
||||
entreprise . imposition . régime:
|
||||
question.en: "[automatic] What is your company's **tax regime**?"
|
||||
question.fr: Quel est le **régime d'imposition** de votre entreprise ?
|
||||
titre.en: '[automatic] diet'
|
||||
titre.fr: régime
|
||||
entreprise . imposition . régime . déclaration contrôlée:
|
||||
titre.en: '[automatic] controlled declaration'
|
||||
titre.fr: déclaration contrôlée
|
||||
entreprise . imposition . régime . micro-entreprise:
|
||||
titre.en: '[automatic] Micro-enterprise regime'
|
||||
titre.fr: Régime de la micro-entreprise
|
||||
entreprise . imposition . régime . réel normal:
|
||||
titre.en: '[automatic] Normal real tax system'
|
||||
titre.fr: Régime réel normal d'imposition
|
||||
entreprise . imposition . régime . réel simplifié:
|
||||
titre.en: '[automatic] Simplified real tax system'
|
||||
titre.fr: Régime réel simplifié d'imposition
|
||||
entreprise . nom:
|
||||
titre.en: '[automatic] name'
|
||||
titre.fr: nom
|
||||
|
|
|
@ -35,6 +35,8 @@
|
|||
<0>You are not concerned by the exemption of Covid contributions for the
|
||||
self-employed.</0>
|
||||
A quoi servent mes cotisations ?: What's included in my contributions?
|
||||
Accompagnement activé: Accompaniment activated
|
||||
Accompagnement désactivé: Accompaniment deactivated
|
||||
Accueil: Home
|
||||
"Activité exercée en ": "Activity carried out in "
|
||||
Afficher la description publicodes: Display publicodes description
|
||||
|
@ -114,6 +116,7 @@ En incluant l'indemnité de chômage partiel: Including short-time working allow
|
|||
En savoir plus: Learn more
|
||||
En-dessous de: Below
|
||||
Entreprise Individuelle: Sole Proprietorship
|
||||
Entreprise créée le <2><0></0></2> et domiciliée à <6><0></0></6>: Company created on <2><0></0></2> and domiciled in <6><0></0></6>
|
||||
Entrez des mots clefs ici: Enter keywords
|
||||
Entrée: Enter
|
||||
Envoyer: Send
|
||||
|
@ -152,7 +155,9 @@ Liste des statuts juridiques: List of legal statutes
|
|||
Ma situation: My situation
|
||||
Mensuel: Monthly
|
||||
Mes réponses: My answers
|
||||
Mode accompagnement: Accompanying mode
|
||||
Modifier: Modify
|
||||
Modifier l'entreprise: Modify the company
|
||||
Modifier mes réponses: Change my answers
|
||||
Mois non concerné: Month not concerned
|
||||
Mon entreprise: My company
|
||||
|
@ -344,6 +349,461 @@ assistant-DRI:
|
|||
concern you with the amount to fill in</0><1>An estimate of the social
|
||||
security contributions to be paid to the Urssaf in 2022</1></1></0><1>My
|
||||
company</1>
|
||||
imposition:
|
||||
intro: <0>In this step, we will determine the <2>declarations that concern
|
||||
you</2> and the <5>list of boxes that you will have to fill in</5>.</0>
|
||||
mode-accompagnement:
|
||||
"0": <
|
||||
"1": "0"
|
||||
"10": n
|
||||
"100": o
|
||||
"101": m
|
||||
"102": p
|
||||
"103": a
|
||||
"104": n
|
||||
"105": y
|
||||
"106": .
|
||||
"107": " "
|
||||
"108": Y
|
||||
"109": o
|
||||
"11": t
|
||||
"110": u
|
||||
"111": " "
|
||||
"112": m
|
||||
"113": a
|
||||
"114": y
|
||||
"115": " "
|
||||
"116": h
|
||||
"117": a
|
||||
"118": v
|
||||
"119": e
|
||||
"12": " "
|
||||
"120": " "
|
||||
"121": a
|
||||
"122": " "
|
||||
"123": g
|
||||
"124": o
|
||||
"125": o
|
||||
"126": d
|
||||
"127": " "
|
||||
"128": k
|
||||
"129": n
|
||||
"13": i
|
||||
"130": o
|
||||
"131": w
|
||||
"132": l
|
||||
"133": e
|
||||
"134": d
|
||||
"135": g
|
||||
"136": e
|
||||
"137": " "
|
||||
"138": o
|
||||
"139": f
|
||||
"14": n
|
||||
"140": " "
|
||||
"141": t
|
||||
"142": h
|
||||
"143": e
|
||||
"144": " "
|
||||
"145": a
|
||||
"146": s
|
||||
"147": s
|
||||
"148": o
|
||||
"149": c
|
||||
"15": " "
|
||||
"150": i
|
||||
"151": a
|
||||
"152": t
|
||||
"153": e
|
||||
"154": d
|
||||
"155": " "
|
||||
"156": c
|
||||
"157": o
|
||||
"158": n
|
||||
"159": c
|
||||
"16": s
|
||||
"160": e
|
||||
"161": p
|
||||
"162": t
|
||||
"163": s
|
||||
"164": " "
|
||||
"165": (
|
||||
"166": f
|
||||
"167": o
|
||||
"168": r
|
||||
"169": " "
|
||||
"17": u
|
||||
"170": e
|
||||
"171": x
|
||||
"172": a
|
||||
"173": m
|
||||
"174": p
|
||||
"175": l
|
||||
"176": e
|
||||
"177": ":"
|
||||
"178": " "
|
||||
"179": I
|
||||
"18": p
|
||||
"180": S
|
||||
"181": /
|
||||
"182": I
|
||||
"183": R
|
||||
"184": ","
|
||||
"185": " "
|
||||
"186": B
|
||||
"187": I
|
||||
"188": C
|
||||
"189": /
|
||||
"19": p
|
||||
"190": B
|
||||
"191": N
|
||||
"192": C
|
||||
"193": ","
|
||||
"194": " "
|
||||
"195": t
|
||||
"196": a
|
||||
"197": x
|
||||
"198": " "
|
||||
"199": r
|
||||
"2": ">"
|
||||
"20": o
|
||||
"200": e
|
||||
"201": t
|
||||
"202": u
|
||||
"203": r
|
||||
"204": n
|
||||
"205": ","
|
||||
"206": " "
|
||||
"207": e
|
||||
"208": t
|
||||
"209": c
|
||||
"21": r
|
||||
"210": .
|
||||
"211": )
|
||||
"212": .
|
||||
"213": " "
|
||||
"214": W
|
||||
"215": e
|
||||
"216": " "
|
||||
"217": w
|
||||
"218": i
|
||||
"219": l
|
||||
"22": t
|
||||
"220": l
|
||||
"221": " "
|
||||
"222": g
|
||||
"223": e
|
||||
"224": t
|
||||
"225": " "
|
||||
"226": s
|
||||
"227": t
|
||||
"228": r
|
||||
"229": a
|
||||
"23": " "
|
||||
"230": i
|
||||
"231": g
|
||||
"232": h
|
||||
"233": t
|
||||
"234": " "
|
||||
"235": t
|
||||
"236": o
|
||||
"237": " "
|
||||
"238": t
|
||||
"239": h
|
||||
"24": m
|
||||
"240": e
|
||||
"241": " "
|
||||
"242": p
|
||||
"243": o
|
||||
"244": i
|
||||
"245": n
|
||||
"246": t
|
||||
"247": " "
|
||||
"248": b
|
||||
"249": y
|
||||
"25": o
|
||||
"250": " "
|
||||
"251": a
|
||||
"252": s
|
||||
"253": k
|
||||
"254": i
|
||||
"255": n
|
||||
"256": g
|
||||
"257": " "
|
||||
"258": y
|
||||
"259": o
|
||||
"26": d
|
||||
"260": u
|
||||
"261": " "
|
||||
"262": s
|
||||
"263": i
|
||||
"264": m
|
||||
"265": p
|
||||
"266": l
|
||||
"267": e
|
||||
"268": " "
|
||||
"269": a
|
||||
"27": e
|
||||
"270": n
|
||||
"271": d
|
||||
"272": " "
|
||||
"273": p
|
||||
"274": r
|
||||
"275": e
|
||||
"276": c
|
||||
"277": i
|
||||
"278": s
|
||||
"279": e
|
||||
"28": <
|
||||
"280": " "
|
||||
"281": q
|
||||
"282": u
|
||||
"283": e
|
||||
"284": s
|
||||
"285": t
|
||||
"286": i
|
||||
"287": o
|
||||
"288": n
|
||||
"289": s
|
||||
"29": /
|
||||
"290": " "
|
||||
"291": t
|
||||
"292": o
|
||||
"293": " "
|
||||
"294": s
|
||||
"295": a
|
||||
"296": v
|
||||
"297": e
|
||||
"298": " "
|
||||
"299": y
|
||||
"3": A
|
||||
"30": "0"
|
||||
"300": o
|
||||
"301": u
|
||||
"302": " "
|
||||
"303": t
|
||||
"304": i
|
||||
"305": m
|
||||
"306": e
|
||||
"307": .
|
||||
"308": " "
|
||||
"309": I
|
||||
"31": ">"
|
||||
"310": f
|
||||
"311": " "
|
||||
"312": y
|
||||
"313": o
|
||||
"314": u
|
||||
"315": " "
|
||||
"316": w
|
||||
"317": i
|
||||
"318": s
|
||||
"319": h
|
||||
"32": <
|
||||
"320": " "
|
||||
"321": t
|
||||
"322": o
|
||||
"323": " "
|
||||
"324": b
|
||||
"325": e
|
||||
"326": " "
|
||||
"327": a
|
||||
"328": c
|
||||
"329": c
|
||||
"33": "1"
|
||||
"330": o
|
||||
"331": m
|
||||
"332": p
|
||||
"333": a
|
||||
"334": n
|
||||
"335": i
|
||||
"336": e
|
||||
"337": d
|
||||
"338": " "
|
||||
"339": t
|
||||
"34": ">"
|
||||
"340": o
|
||||
"341": " "
|
||||
"342": a
|
||||
"343": n
|
||||
"344": s
|
||||
"345": w
|
||||
"346": e
|
||||
"347": r
|
||||
"348": " "
|
||||
"349": t
|
||||
"35": T
|
||||
"350": h
|
||||
"351": e
|
||||
"352": " "
|
||||
"353": q
|
||||
"354": u
|
||||
"355": e
|
||||
"356": s
|
||||
"357": t
|
||||
"358": i
|
||||
"359": o
|
||||
"36": h
|
||||
"360": n
|
||||
"361": s
|
||||
"362": ","
|
||||
"363": " "
|
||||
"364": y
|
||||
"365": o
|
||||
"366": u
|
||||
"367": " "
|
||||
"368": c
|
||||
"369": a
|
||||
"37": i
|
||||
"370": n
|
||||
"371": " "
|
||||
"372": c
|
||||
"373": h
|
||||
"374": a
|
||||
"375": n
|
||||
"376": g
|
||||
"377": e
|
||||
"378": " "
|
||||
"379": m
|
||||
"38": s
|
||||
"380": o
|
||||
"381": d
|
||||
"382": e
|
||||
"383": " "
|
||||
"384": a
|
||||
"385": t
|
||||
"386": " "
|
||||
"387": a
|
||||
"388": n
|
||||
"389": y
|
||||
"39": " "
|
||||
"390": " "
|
||||
"391": t
|
||||
"392": i
|
||||
"393": m
|
||||
"394": e
|
||||
"395": " "
|
||||
"396": b
|
||||
"397": y
|
||||
"398": " "
|
||||
"399": u
|
||||
"4": s
|
||||
"40": i
|
||||
"400": s
|
||||
"401": i
|
||||
"402": n
|
||||
"403": g
|
||||
"404": " "
|
||||
"405": t
|
||||
"406": h
|
||||
"407": e
|
||||
"408": " "
|
||||
"409": s
|
||||
"41": s
|
||||
"410": w
|
||||
"411": i
|
||||
"412": t
|
||||
"413": c
|
||||
"414": h
|
||||
"415": " "
|
||||
"416": b
|
||||
"417": e
|
||||
"418": l
|
||||
"419": o
|
||||
"42": " "
|
||||
"420": w
|
||||
"421": .
|
||||
"422": <
|
||||
"423": /
|
||||
"424": "1"
|
||||
"425": ">"
|
||||
"43": y
|
||||
"44": o
|
||||
"45": u
|
||||
"46": r
|
||||
"47": " "
|
||||
"48": "{"
|
||||
"49": "{"
|
||||
"5": s
|
||||
"50": o
|
||||
"51": r
|
||||
"52": d
|
||||
"53": i
|
||||
"54": n
|
||||
"55": a
|
||||
"56": l
|
||||
"57": " "
|
||||
"58": "}"
|
||||
"59": "}"
|
||||
"6": i
|
||||
"60": " "
|
||||
"61": t
|
||||
"62": a
|
||||
"63": x
|
||||
"64": " "
|
||||
"65": r
|
||||
"66": e
|
||||
"67": t
|
||||
"68": u
|
||||
"69": r
|
||||
"7": s
|
||||
"70": n
|
||||
"71": " "
|
||||
"72": s
|
||||
"73": i
|
||||
"74": n
|
||||
"75": c
|
||||
"76": e
|
||||
"77": " "
|
||||
"78": t
|
||||
"79": h
|
||||
"8": t
|
||||
"80": e
|
||||
"81": " "
|
||||
"82": c
|
||||
"83": r
|
||||
"84": e
|
||||
"85": a
|
||||
"86": t
|
||||
"87": i
|
||||
"88": o
|
||||
"89": n
|
||||
"9": a
|
||||
"90": " "
|
||||
"91": o
|
||||
"92": f
|
||||
"93": " "
|
||||
"94": y
|
||||
"95": o
|
||||
"96": u
|
||||
"97": r
|
||||
"98": " "
|
||||
"99": c
|
||||
activé: "<0>Perhaps everything is not yet clear to you. We will guide you step
|
||||
by step by asking you simple questions. Each time, we will give you
|
||||
hints on how to find the information to answer them.</0><1>We will also
|
||||
explain all the key notions related to your declaration (for example:
|
||||
IS/IR, BIC, BNC, tax return, etc.).</1><2>You can change the mode at any
|
||||
time by using the switch below. </2>"
|
||||
désactivé: "<0>You may have a good knowledge of the related concepts (for
|
||||
example: IS/IR, BIC/BNC, tax returns, etc.). We will get straight to the
|
||||
point by asking you <2>simple and precise questions</2> to save you
|
||||
time. </0><1>If you wish to be further assisted in answering the
|
||||
questions, you can <1>change mode</1> at any time by using the switch
|
||||
below.</1>"
|
||||
nombre-déclarations: This is your {{nthDeclaration}} tax return since the
|
||||
creation of your company.
|
||||
titre: Assistant in support mode
|
||||
intro: <0><0>We help you to fill in your tax <2>return</2> on
|
||||
<5>impot.gouv.fr</5>.<7></7></0><1> Answer a few questions, at the end you
|
||||
will have :</1><2><0>The forms that concern you</0><1>The list of the boxes
|
||||
that concern you with the amount to be filled</1><2>An estimate of the
|
||||
social security contributions to be paid to the Urssaf in 2022</2></2></0>
|
||||
precision: <0>A few details before continuing</0><1>To file your income tax
|
||||
return, you will have to log on to <2>impot.gouv.fr</2> from <5>April 8,
|
||||
2022</5>.</1><2>If you have your accountant complete your income tax return,
|
||||
this wizard can still be useful to know the <2>amount of social security
|
||||
contributions to be paid in 2022</2></2>
|
||||
associés:
|
||||
choix1: Alone
|
||||
choix2: Several partners
|
||||
|
@ -1189,10 +1649,16 @@ pages:
|
|||
declaration_charges_sociales_indépendant:
|
||||
meta:
|
||||
description: Calculate the amount of social security contributions to be
|
||||
reported on your 2021 income tax return.
|
||||
reported on your 2021 income tax return
|
||||
title: Determination of deductible social charges
|
||||
shortname: Determination of deductible social charges
|
||||
title: Assistance in determining deductible social charges
|
||||
declaration_revenu_indépendant:
|
||||
meta:
|
||||
description: Find out which amounts to fill in and get an estimate of your 2022 dues
|
||||
title: Income tax return assistant for self-employed people
|
||||
shortname: Income Tax Wizard
|
||||
title: Income tax return assistant for self-employed people
|
||||
demande-mobilité:
|
||||
meta:
|
||||
description: Interactive form to be filled in if you work abroad
|
||||
|
@ -1966,6 +2432,8 @@ une de ces conditions: one of these applies
|
|||
À quoi servent mes cotisations ?: How are my contributions distributed?
|
||||
Échap: Esc
|
||||
Économie collaborative: Collaborative Economy
|
||||
Étape complétée: Step completed
|
||||
Étape non complétée: Step not completed
|
||||
État: State
|
||||
Êtes vous satisfait de ce guide ?: Are you satisfied with this guide?
|
||||
Êtes vous satisfait de cet assistant ?: Are you satisfied with this assistant?
|
||||
|
|
|
@ -39,6 +39,8 @@
|
|||
<0>Vous n'êtes pas concerné par l'exonération de cotisations Covid pour les indépendants.</0>:
|
||||
<0>Vous n'êtes pas concerné par l'exonération de cotisations Covid pour les
|
||||
indépendants.</0>
|
||||
Accompagnement activé: Accompagnement activé
|
||||
Accompagnement désactivé: Accompagnement désactivé
|
||||
"Activité exercée en ": "Activité exercée en "
|
||||
Assimilé salarié: Assimilé salarié
|
||||
Assistants à la déclaration de revenu 2021 des indépendants: Assistants à la déclaration de revenu 2021 des indépendants
|
||||
|
@ -78,6 +80,7 @@ Découvrir: Découvrir
|
|||
"Eligibilité LFSS : ": "Eligibilité LFSS : "
|
||||
En savoir plus: En savoir plus
|
||||
Entreprise Individuelle: Entreprise Individuelle
|
||||
Entreprise créée le <2><0></0></2> et domiciliée à <6><0></0></6>: Entreprise créée le <2><0></0></2> et domiciliée à <6><0></0></6>
|
||||
Exonérations: Exonérations
|
||||
Explorez notre documentation: Explorez notre documentation
|
||||
ExportSimulation:
|
||||
|
@ -98,7 +101,9 @@ Liste des intégrations: Liste des intégrations
|
|||
Liste des statuts juridiques: Liste des statuts juridiques
|
||||
Ma situation: Ma situation
|
||||
Mes réponses: Mes réponses
|
||||
Mode accompagnement: Mode accompagnement
|
||||
Modifier: Modifier
|
||||
Modifier l'entreprise: Modifier l'entreprise
|
||||
Mois non concerné: Mois non concerné
|
||||
Mon entreprise: Mon entreprise
|
||||
Montant de l'impôt sur les sociétés: Montant de l'impôt sur les sociétés
|
||||
|
@ -231,6 +236,37 @@ assistant-DRI:
|
|||
cases qui vous concernent avec le montant à remplir</0><1>Une estimation des
|
||||
cotisations sociales à payer à l'Urssaf en 2022</1></1></0><1>Mon
|
||||
entreprise</1>
|
||||
imposition:
|
||||
intro: <0>Dans cette étape, nous allons déterminer les <2>déclarations qui vous
|
||||
concernent</2> et la <5>liste des cases que vous aurez à remplir</5>.</0>
|
||||
mode-accompagnement:
|
||||
activé: "<0>Tout n'est peut-être pas encore très clair pour vous. Nous allons
|
||||
vous guider pas à pas en vous posant des questions simples. À chaque
|
||||
fois, nous vous donnerons des pistes sur comment trouver les
|
||||
informations pour y répondre.</0><1>Nous vous expliquerons aussi toutes
|
||||
les notions clés reliées à votre déclaration (par exemple : IS/IR, BIC,
|
||||
BNC, liasse fiscale, etc.)</1><2>Vous pouvez changer de mode à tout
|
||||
moment en utilisant l'interrupteur ci-dessous. </2>"
|
||||
désactivé: "<0>Vous avez peut-être une bonne connaissance des notions associées
|
||||
(par exemple : IS/IR, BIC/BNC, liasse fiscale, etc.). Nous irons droit
|
||||
au but en vous posant des <2>questions simples et précises</2> pour vous
|
||||
faire gagner du temps. </0><1>Si vous souhaitez être davantage
|
||||
accompagné pour répondre aux questions, vous pouvez <1>changer de
|
||||
mode</1> à tout moment en utilisant l'interrupteur ci-dessous.</1>"
|
||||
nombre-déclarations: C'est votre {{nthDeclaration}} déclaration de revenu depuis
|
||||
la création de votre entreprise.
|
||||
intro: <0><0>Nous vous accompagnons pour remplir votre <2>déclaration de
|
||||
revenu</2> sur <5>impot.gouv.fr</5>.<7></7></0><1> Répondez à quelques
|
||||
questions, à la fin vous aurez :</1><2><0>Les formulaires qui vous
|
||||
concernent</0><1>La liste des cases qui vous concernent avec le montant à
|
||||
remplir</1><2>Une estimation des cotisations sociales à payer à l'Urssaf en
|
||||
2022</2></2></0>
|
||||
precision: <0>Quelques précisions avant de continuer</0><1>Pour faire votre
|
||||
déclaration de revenu, il faudra vous connecter sur <2>impot.gouv.fr</2> à
|
||||
partir du <5>8 avril 2022</5>.</1><2>Si vous faites remplir votre
|
||||
déclaration de revenu par votre expert-comptable, cet assistant peut quand
|
||||
même vous être utile pour connaître le <2>montant des cotisations sociales à
|
||||
payer en 2022</2></2>
|
||||
associés:
|
||||
choix1: Seul
|
||||
choix2: Plusieurs personnes
|
||||
|
@ -944,10 +980,17 @@ pages:
|
|||
declaration_charges_sociales_indépendant:
|
||||
meta:
|
||||
description: Calculez le montant des cotisations et contributions sociales à
|
||||
reporter dans votre déclaration de revenu 2021.
|
||||
reporter dans votre déclaration de revenu 2021
|
||||
title: Détermination des charges sociales déductibles
|
||||
shortname: Détermination des charges sociales déductibles
|
||||
title: Assistant à la détermination des charges sociales déductibles
|
||||
declaration_revenu_indépendant:
|
||||
meta:
|
||||
description: Découvrez quels montants remplir dans quelles cases, et obtenez une
|
||||
estimation des cotisations à payer en 2022
|
||||
title: Assistant à la déclaration de revenu pour les indépendants
|
||||
shortname: Assistant déclaration de revenu
|
||||
title: Assistant à la déclaration de revenu pour les indépendants
|
||||
demande-mobilité:
|
||||
meta:
|
||||
description: Formulaire interactif à compléter en cas d'exercice d'une activité
|
||||
|
@ -1581,6 +1624,8 @@ trouver:
|
|||
seront automatiquement disponibles pour la suite du parcours sur le site.
|
||||
titre: Retrouver mon entreprise
|
||||
À quoi servent mes cotisations ?: À quoi servent mes cotisations ?
|
||||
Étape complétée: Étape complétée
|
||||
Étape non complétée: Étape non complétée
|
||||
Êtes vous satisfait de ce guide ?: Êtes vous satisfait de ce guide ?
|
||||
Êtes vous satisfait de cet assistant ?: Êtes vous satisfait de cet assistant ?
|
||||
économieCollaborative:
|
||||
|
|
|
@ -1,94 +0,0 @@
|
|||
import { resetCompany } from '@/actions/companyActions'
|
||||
import { useSetEntreprise } from '@/actions/companyStatusActions'
|
||||
import { CompanyDetails } from '@/components/company/Details'
|
||||
import { CompanySearchField } from '@/components/company/SearchField'
|
||||
import {
|
||||
Condition,
|
||||
WhenAlreadyDefined,
|
||||
WhenNotAlreadyDefined,
|
||||
} from '@/components/EngineValue'
|
||||
import PageHeader from '@/components/PageHeader'
|
||||
import { SitePathsContext } from '@/components/utils/SitePathsContext'
|
||||
import { Message } from '@/design-system'
|
||||
import { Button } from '@/design-system/buttons'
|
||||
import { Spacing } from '@/design-system/layout'
|
||||
import { Strong } from '@/design-system/typography'
|
||||
import { H2, H3 } from '@/design-system/typography/heading'
|
||||
import { Link } from '@/design-system/typography/link'
|
||||
import { Li, Ul } from '@/design-system/typography/list'
|
||||
import { Body, Intro } from '@/design-system/typography/paragraphs'
|
||||
import { Grid } from '@mui/material'
|
||||
import { useContext } from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { useDispatch } from 'react-redux'
|
||||
import illustration from './undraw_fill_in_mie5.svg'
|
||||
|
||||
export default function AideDéclarationIndépendant() {
|
||||
const setEntreprise = useSetEntreprise()
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
const dispatch = useDispatch()
|
||||
|
||||
return (
|
||||
<>
|
||||
<Trans i18nKey="assistant-DRI.description">
|
||||
<PageHeader picture={illustration}>
|
||||
<Intro>
|
||||
Cet outil vous aidera à remplir votre{' '}
|
||||
<Strong>déclaration de revenu</Strong> sur impot.gouv.fr. Vous aurez
|
||||
à la fin :
|
||||
</Intro>
|
||||
<Ul size="XL">
|
||||
<Li>
|
||||
La liste des cases qui vous concernent avec le montant à remplir
|
||||
</Li>
|
||||
<Li>
|
||||
Une estimation des cotisations sociales à payer à l'Urssaf en 2022
|
||||
</Li>
|
||||
</Ul>
|
||||
</PageHeader>
|
||||
<H2>Mon entreprise</H2>
|
||||
</Trans>
|
||||
<Grid container>
|
||||
<Grid item lg={8}>
|
||||
<WhenNotAlreadyDefined dottedName="entreprise . SIREN">
|
||||
<Body>
|
||||
Cherchez avec votre nom, le nom de votre entreprise, le SIREN ou
|
||||
le SIRET
|
||||
</Body>
|
||||
<CompanySearchField onSubmit={setEntreprise} />
|
||||
</WhenNotAlreadyDefined>
|
||||
<WhenAlreadyDefined dottedName="entreprise . SIREN">
|
||||
<CompanyDetails />
|
||||
<Button onPress={() => dispatch(resetCompany())}>
|
||||
<Trans>Modifier</Trans>
|
||||
</Button>
|
||||
</WhenAlreadyDefined>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Condition expression="entreprise . catégorie juridique . SAS">
|
||||
<Spacing md />
|
||||
<Message type="info">
|
||||
<H3>Cet assistant ne gère pas le cas des dirigeants de SAS(U)</H3>
|
||||
<Body>
|
||||
Nous sommes désolés. Si vous rencontrez des difficultés à remplir
|
||||
votre déclaration, rapprochez-vous de votre comptable. Si vous êtes
|
||||
sans comptable, vous pouvez contacter le service des impôts.
|
||||
</Body>
|
||||
<Body>
|
||||
Si vous souhaitez que cet assistant à la déclaration gère votre cas
|
||||
dans le futur, laissez-nous message en cliquant sur le bouton "Faire
|
||||
une suggestion" en bas de la page.
|
||||
</Body>
|
||||
<Body>
|
||||
Ce site propose d'autres outils qui pourraient vous intéresser (par
|
||||
exemple un simulateur de revenu net après impôt).
|
||||
</Body>
|
||||
<Link to={sitePaths.gérer.index}>
|
||||
Découvrir les outils pour mon entreprise
|
||||
</Link>
|
||||
<Spacing md />
|
||||
</Message>
|
||||
</Condition>
|
||||
</>
|
||||
)
|
||||
}
|
Before Width: | Height: | Size: 10 KiB |
|
@ -4,7 +4,7 @@ import { useEffect } from 'react'
|
|||
import { Helmet } from 'react-helmet-async'
|
||||
import { Route, Switch } from 'react-router-dom'
|
||||
import useSimulatorsData from '../Simulateurs/metadata'
|
||||
import SimulateurPage from '../Simulateurs/Page'
|
||||
import SimulateurPage from '../../components/PageData'
|
||||
import IframeFooter from './IframeFooter'
|
||||
|
||||
export default function Iframes() {
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import { resetCompany } from '@/actions/companyActions'
|
||||
import { useSetEntreprise } from '@/actions/companyStatusActions'
|
||||
import {
|
||||
FabriqueSocialEntreprise,
|
||||
searchDenominationOrSiren,
|
||||
|
@ -13,6 +12,7 @@ import AnswerGroup from '@/design-system/answer-group'
|
|||
import { Button } from '@/design-system/buttons'
|
||||
import { Spacing } from '@/design-system/layout'
|
||||
import { H3 } from '@/design-system/typography/heading'
|
||||
import { useSetEntreprise } from '@/hooks/useSetEntreprise'
|
||||
import { RootState } from '@/reducers/rootReducer'
|
||||
import { getCookieValue } from '@/storage/readCookie'
|
||||
import { Grid } from '@mui/material'
|
||||
|
|
|
@ -91,7 +91,6 @@ const DividendesSimulationGoals = () => (
|
|||
<Condition expression="entreprise . imposition = 'IS'">
|
||||
<SimulationGoal
|
||||
appear={false}
|
||||
alwaysShow
|
||||
dottedName="bénéficiaire . dividendes . bruts"
|
||||
/>
|
||||
|
||||
|
@ -105,7 +104,6 @@ const DividendesSimulationGoals = () => (
|
|||
<Condition expression="oui">
|
||||
<SimulationGoal
|
||||
appear={false}
|
||||
alwaysShow
|
||||
dottedName="bénéficiaire . dividendes . nets d'impôt"
|
||||
/>
|
||||
</Condition>
|
||||
|
|
|
@ -98,6 +98,7 @@ export default function Simulateurs() {
|
|||
</Trans>
|
||||
</H3>
|
||||
<Grid container spacing={3}>
|
||||
<SimulateurCard {...simulators['déclaration-revenu-indépendant']} />
|
||||
<SimulateurCard
|
||||
{...simulators['déclaration-charges-sociales-indépendant']}
|
||||
/>
|
||||
|
|
|
@ -18,8 +18,7 @@ const ISConfig = {
|
|||
'unité par défaut': '€/an',
|
||||
situation: {
|
||||
'entreprise . imposition': "'IS'",
|
||||
'entreprise . imposition . IS . impôt sur les sociétés . éligible taux réduit':
|
||||
'oui',
|
||||
'entreprise . imposition . IS . éligible taux réduit': 'oui',
|
||||
"entreprise . chiffre d'affaires . franchise de TVA": 'non',
|
||||
},
|
||||
} as SimulationConfig
|
||||
|
@ -106,7 +105,7 @@ function Explanations() {
|
|||
<ExplanationsContainer>
|
||||
<Intro>
|
||||
<Value
|
||||
expression="entreprise . imposition . IS . impôt sur les sociétés"
|
||||
expression="entreprise . imposition . IS . montant"
|
||||
displayedUnit="€"
|
||||
className="payslip__total"
|
||||
/>
|
||||
|
|
|
@ -78,7 +78,6 @@ function IndépendantSimulationGoals({
|
|||
<Condition expression="entreprise . imposition . IR . micro-fiscal = non">
|
||||
<SimulationGoal
|
||||
appear={false}
|
||||
alwaysShow
|
||||
dottedName="entreprise . chiffre d'affaires"
|
||||
/>
|
||||
</Condition>
|
||||
|
@ -103,7 +102,6 @@ function IndépendantSimulationGoals({
|
|||
<SimulationGoal
|
||||
small
|
||||
editable={false}
|
||||
alwaysShow
|
||||
dottedName="dirigeant . indépendant . cotisations et contributions"
|
||||
/>
|
||||
<Condition expression="entreprise . imposition . IR . micro-fiscal">
|
||||
|
|
|
@ -5,11 +5,11 @@ import { SitePathsContext } from '@/components/utils/SitePathsContext'
|
|||
import { H2 } from '@/design-system/typography/heading'
|
||||
import { useContext } from 'react'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import { FAQAutoEntrepreneurArticle } from '../../../pages/Creer/CreationChecklist'
|
||||
import { GuideURSSAFCard } from '../cards/GuideURSSAFCard'
|
||||
import { IframeIntegrationCard } from '../cards/IframeIntegrationCard'
|
||||
import { SimulatorRessourceCard } from '../cards/SimulatorRessourceCard'
|
||||
import { ExtractFromSimuData } from '../metadata'
|
||||
import { FAQAutoEntrepreneurArticle } from '@/pages/Creer/CreationChecklist'
|
||||
import { GuideURSSAFCard } from '@/pages/Simulateurs/cards/GuideURSSAFCard'
|
||||
import { SimulatorRessourceCard } from '@/pages/Simulateurs/cards/SimulatorRessourceCard'
|
||||
import { IframeIntegrationCard } from '@/pages/Simulateurs/cards/IframeIntegrationCard'
|
||||
import { ExtractFromSimuData } from '@/pages/Simulateurs/metadata'
|
||||
|
||||
interface NextStepsProps {
|
||||
iframePath: ExtractFromSimuData<'iframePath'>
|
|
@ -8,7 +8,7 @@ import { Trans } from 'react-i18next'
|
|||
import { Route, Switch, useLocation } from 'react-router-dom'
|
||||
import Home from './Home'
|
||||
import useSimulatorsData from './metadata'
|
||||
import SimulateurPage from './Page'
|
||||
import SimulateurPage from '../../components/PageData'
|
||||
|
||||
export default function Simulateurs() {
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
|
|
|
@ -350,18 +350,18 @@ const metadataSrc = (t: TFunction<'translation', string>) => {
|
|||
chapter1: 'gerer',
|
||||
chapter2: 'declaration_charges_sociales_independant',
|
||||
},
|
||||
icône: '✍️',
|
||||
icône: '📑',
|
||||
meta: {
|
||||
description: t(
|
||||
'pages.gérer.declaration_charges_sociales_indépendant.meta.description',
|
||||
'Calculez le montant des cotisations et contributions sociales à reporter dans votre déclaration de revenu 2021.'
|
||||
'Calculez le montant des cotisations et contributions sociales à reporter dans votre déclaration de revenu 2021'
|
||||
),
|
||||
title: t(
|
||||
'pages.gérer.declaration_charges_sociales_indépendant.meta.title',
|
||||
'Détermination des charges sociales déductibles'
|
||||
),
|
||||
},
|
||||
pathId: 'gérer.déclarationIndépendant',
|
||||
pathId: 'gérer.déclaration-charges-sociales-indépendant',
|
||||
shortName: t(
|
||||
'pages.gérer.declaration_charges_sociales_indépendant.shortname',
|
||||
'Détermination des charges sociales déductibles'
|
||||
|
@ -372,6 +372,33 @@ const metadataSrc = (t: TFunction<'translation', string>) => {
|
|||
'Assistant à la détermination des charges sociales déductibles'
|
||||
),
|
||||
},
|
||||
'déclaration-revenu-indépendant': {
|
||||
tracking: {
|
||||
chapter1: 'gerer',
|
||||
chapter2: 'declaration_revenu_independant',
|
||||
},
|
||||
icône: '✍️',
|
||||
meta: {
|
||||
description: t(
|
||||
'pages.gérer.declaration_revenu_indépendant.meta.description',
|
||||
'Découvrez quels montants remplir dans quelles cases, et obtenez une estimation des cotisations à payer en 2022'
|
||||
),
|
||||
title: t(
|
||||
'pages.gérer.declaration_revenu_indépendant.meta.title',
|
||||
'Assistant à la déclaration de revenu pour les indépendants'
|
||||
),
|
||||
},
|
||||
pathId: 'gérer.déclarationIndépendant.index',
|
||||
shortName: t(
|
||||
'pages.gérer.declaration_revenu_indépendant.shortname',
|
||||
'Assistant déclaration de revenu'
|
||||
),
|
||||
iframePath: 'déclaration-revenu-indépendant',
|
||||
title: t(
|
||||
'pages.gérer.declaration_revenu_indépendant.title',
|
||||
'Assistant à la déclaration de revenu pour les indépendants'
|
||||
),
|
||||
},
|
||||
'demande-mobilité': {
|
||||
tracking: {
|
||||
chapter1: 'gerer',
|
||||
|
|
|
@ -1,16 +1,20 @@
|
|||
import { PlacesDesEntreprisesButton } from '@/components/PlaceDesEntreprises'
|
||||
import RuleLink from '@/components/RuleLink'
|
||||
import Emoji from '@/components/utils/Emoji'
|
||||
import { SitePathsContext } from '@/components/utils/SitePathsContext'
|
||||
import { Strong } from '@/design-system/typography'
|
||||
import { H2 } from '@/design-system/typography/heading'
|
||||
import { Link } from '@/design-system/typography/link'
|
||||
import { Li, Ul } from '@/design-system/typography/list'
|
||||
import { Body } from '@/design-system/typography/paragraphs'
|
||||
import { SimulationConfig } from '@/reducers/rootReducer'
|
||||
import React, { createContext, useContext, useMemo } from 'react'
|
||||
import { TFunction, Trans, useTranslation } from 'react-i18next'
|
||||
import { constructLocalizedSitePath, SitePathsType } from '../../sitePaths'
|
||||
import Créer from '../Creer/Home'
|
||||
import AideDéclarationIndépendant from '../Gerer/AideDéclarationIndépendant/PreviousVersion'
|
||||
import FormulaireMobilitéIndépendant from '../Gerer/DemandeMobilite'
|
||||
import DéclarationRevenuIndépendant from '../gerer/declaration-revenu-independants'
|
||||
import DéclarationChargeSocialeIndépendant from '../gerer/declaration-charges-sociales-independant'
|
||||
import FormulaireMobilitéIndépendant from '../gerer/demande-mobilité'
|
||||
import AidesEmbauche from './AidesEmbauche'
|
||||
import ArtisteAuteur from './ArtisteAuteur'
|
||||
import AutoEntrepreneur from './AutoEntrepreneur'
|
||||
|
@ -43,9 +47,6 @@ import PAMCHome from './PAMCHome'
|
|||
import SalariéSimulation from './Salarié'
|
||||
import { SASUSimulation } from './SASU'
|
||||
import SchemeComparaisonPage from './SchemeComparaison'
|
||||
import { Li, Ul } from '@/design-system/typography/list'
|
||||
import { Strong } from '@/design-system/typography'
|
||||
import { PlacesDesEntreprisesButton } from '@/components/PlaceDesEntreprises'
|
||||
|
||||
interface SimulatorsDataParams {
|
||||
t?: TFunction<'translation', string>
|
||||
|
@ -501,8 +502,13 @@ function getSimulatorsData({
|
|||
},
|
||||
'déclaration-charges-sociales-indépendant': {
|
||||
...pureSimulatorsData['déclaration-charges-sociales-indépendant'],
|
||||
component: AideDéclarationIndépendant,
|
||||
path: sitePaths.gérer.déclarationIndépendant,
|
||||
component: DéclarationChargeSocialeIndépendant,
|
||||
path: sitePaths.gérer['déclaration-charges-sociales-indépendant'],
|
||||
},
|
||||
'déclaration-revenu-indépendant': {
|
||||
...pureSimulatorsData['déclaration-revenu-indépendant'],
|
||||
component: DéclarationRevenuIndépendant,
|
||||
path: sitePaths.gérer.déclarationIndépendant.index,
|
||||
},
|
||||
'demande-mobilité': {
|
||||
...pureSimulatorsData['demande-mobilité'],
|
||||
|
|
|
@ -14,7 +14,7 @@ export function DeclarationIndedependantsCard() {
|
|||
'Déclaration de revenus (indépendants)'
|
||||
)}
|
||||
ctaLabel={t('gérer.choix.déclaration.cta', 'Remplir ma déclaration')}
|
||||
to={sitePaths.gérer.déclarationIndépendant}
|
||||
to={sitePaths.gérer.déclarationIndépendant.index}
|
||||
>
|
||||
<Trans i18nKey="gérer.choix.déclaration.body">
|
||||
Calculez facilement les montants des charges sociales à reporter dans
|
|
@ -1,19 +1,22 @@
|
|||
import { updateSituation } from '@/actions/actions'
|
||||
import { ExplicableRule } from '@/components/conversation/Explicable'
|
||||
import RuleInput from '@/components/conversation/RuleInput'
|
||||
import { FromTop } from '@/components/ui/animate'
|
||||
import { FadeIn } from '@/components/ui/animate'
|
||||
import { EngineContext } from '@/components/utils/EngineContext'
|
||||
import { Markdown } from '@/components/utils/markdown'
|
||||
import { useNextQuestions } from '@/components/utils/useNextQuestion'
|
||||
import { Spacing } from '@/design-system/layout'
|
||||
import { H3 } from '@/design-system/typography/heading'
|
||||
import { Intro, SmallBody } from '@/design-system/typography/paragraphs'
|
||||
import { situationSelector } from '@/selectors/simulationSelectors'
|
||||
import { evaluateQuestion } from '@/utils'
|
||||
import {
|
||||
situationSelector,
|
||||
targetUnitSelector,
|
||||
} from '@/selectors/simulationSelectors'
|
||||
import { useSSRSafeId } from '@react-aria/ssr'
|
||||
import { DottedName } from 'modele-social'
|
||||
import { RuleNode } from 'publicodes'
|
||||
import { useCallback, useContext } from 'react'
|
||||
import { useDispatch, useSelector } from 'react-redux'
|
||||
import { Question } from './PreviousVersion'
|
||||
import styled from 'styled-components'
|
||||
|
||||
type SubSectionProp = {
|
||||
dottedName: DottedName
|
||||
|
@ -63,8 +66,9 @@ type SimpleFieldProps = {
|
|||
|
||||
export function SimpleField({
|
||||
dottedName,
|
||||
question,
|
||||
summary,
|
||||
showSuggestions,
|
||||
showSuggestions = false,
|
||||
}: SimpleFieldProps) {
|
||||
const dispatch = useDispatch()
|
||||
const engine = useContext(EngineContext)
|
||||
|
@ -72,35 +76,47 @@ export function SimpleField({
|
|||
const rule = engine.getRule(dottedName)
|
||||
|
||||
const dispatchValue = useCallback(
|
||||
(value, dottedName) => {
|
||||
(value, dottedName: DottedName) => {
|
||||
dispatch(updateSituation(dottedName, value))
|
||||
},
|
||||
[dispatch]
|
||||
)
|
||||
|
||||
const displayedQuestion = question ?? rule.rawNode.question
|
||||
const labelId = useSSRSafeId()
|
||||
const targetUnit = useSelector(targetUnitSelector)
|
||||
if (evaluation.nodeValue === null) {
|
||||
return null
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
<FromTop>
|
||||
<Question>
|
||||
<Intro>
|
||||
{evaluateQuestion(engine, rule)}
|
||||
<ExplicableRule dottedName={dottedName} />
|
||||
</Intro>
|
||||
<SmallBody>{summary ?? rule.rawNode.résumé}</SmallBody>
|
||||
|
||||
<RuleInput
|
||||
dottedName={dottedName}
|
||||
onChange={dispatchValue}
|
||||
showSuggestions={showSuggestions}
|
||||
displayedUnit=""
|
||||
/>
|
||||
</Question>
|
||||
</FromTop>
|
||||
<Spacing md />
|
||||
</div>
|
||||
<FadeIn>
|
||||
<StyledQuestion id={labelId}>
|
||||
{displayedQuestion && (
|
||||
<Markdown components={{ p: Intro }}>{displayedQuestion}</Markdown>
|
||||
)}
|
||||
<ExplicableRule dottedName={dottedName} />
|
||||
</StyledQuestion>
|
||||
{summary && <SmallBody>{summary ?? rule.rawNode.résumé}</SmallBody>}
|
||||
<RuleInput
|
||||
dottedName={dottedName}
|
||||
displayedUnit={targetUnit}
|
||||
aria-labelledby={displayedQuestion ? labelId : undefined}
|
||||
label={
|
||||
!displayedQuestion
|
||||
? rule.title +
|
||||
(rule.rawNode.résumé ? ` – ${rule.rawNode.résumé}` : '')
|
||||
: undefined
|
||||
}
|
||||
onChange={dispatchValue}
|
||||
showSuggestions={showSuggestions}
|
||||
/>
|
||||
</FadeIn>
|
||||
)
|
||||
}
|
||||
|
||||
const StyledQuestion = styled.div`
|
||||
display: inline-flex;
|
||||
align-items: baseline;
|
||||
margin-bottom: -0.75rem;
|
||||
`
|
Before Width: | Height: | Size: 733 B After Width: | Height: | Size: 733 B |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
@ -42,8 +42,8 @@ export default function ResultatsSimples() {
|
|||
</Body>
|
||||
{(
|
||||
[
|
||||
'déclaration indépendants . résultat simple . cotisations obligatoires',
|
||||
'déclaration indépendants . résultat simple . total charges sociales déductible',
|
||||
'déclaration charge sociales . résultat simple . cotisations obligatoires',
|
||||
'déclaration charge sociales . résultat simple . total charges sociales déductible',
|
||||
] as const
|
||||
).map((dottedName) => {
|
||||
const r = engine.getRule(dottedName)
|
||||
|
@ -58,7 +58,7 @@ export default function ResultatsSimples() {
|
|||
<Condition
|
||||
expression={{
|
||||
'toutes ces conditions': [
|
||||
'déclaration indépendants . cotisations payées version simple = non',
|
||||
'déclaration charge sociales . cotisations payées version simple = non',
|
||||
'entreprise . imposition . IR . micro-fiscal = non',
|
||||
],
|
||||
}}
|
||||
|
@ -87,7 +87,7 @@ export default function ResultatsSimples() {
|
|||
<Condition
|
||||
expression={{
|
||||
'toutes ces conditions': [
|
||||
'déclaration indépendants . cotisations payées version simple = non',
|
||||
'déclaration charge sociales . cotisations payées version simple = non',
|
||||
'entreprise . imposition . IR . micro-fiscal = non',
|
||||
],
|
||||
}}
|
||||
|
@ -98,11 +98,11 @@ export default function ResultatsSimples() {
|
|||
<Grid container spacing={2}>
|
||||
{(
|
||||
[
|
||||
'déclaration indépendants . réduction covid . total',
|
||||
'déclaration indépendants . résultat simple . revenu net fiscal',
|
||||
'déclaration indépendants . résultat simple . CSG déductible',
|
||||
'déclaration indépendants . résultat simple . CFP',
|
||||
'déclaration indépendants . résultat simple . assiette sociale',
|
||||
'déclaration charge sociales . réduction covid . total',
|
||||
'déclaration charge sociales . résultat simple . revenu net fiscal',
|
||||
'déclaration charge sociales . résultat simple . CSG déductible',
|
||||
'déclaration charge sociales . résultat simple . CFP',
|
||||
'déclaration charge sociales . résultat simple . assiette sociale',
|
||||
] as const
|
||||
).map((dottedName) => {
|
||||
const r = engine.getRule(dottedName)
|
|
@ -1,5 +1,5 @@
|
|||
objectifs:
|
||||
- déclaration indépendants . cotisations obligatoires déductibles
|
||||
- déclaration charge sociales . cotisations obligatoires déductibles
|
||||
- dirigeant . rémunération . totale
|
||||
- dirigeant . rémunération . nette
|
||||
|
||||
|
@ -10,4 +10,4 @@ situation:
|
|||
dirigeant . indépendant . PL . CIPAV: non # TODO En attendant la transitivité des remplacements
|
||||
impôt: non
|
||||
|
||||
unité par défaut: '€/an'
|
||||
unité par défaut: '€'
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
|
@ -18,15 +18,14 @@ import { Trans } from 'react-i18next'
|
|||
import { useDispatch, useSelector } from 'react-redux'
|
||||
import styled from 'styled-components'
|
||||
import { TrackPage } from '../../../ATInternetTracking'
|
||||
import simulationConfig from './config.yaml'
|
||||
import { ExplicationsResultatFiscal } from './ExplicationResultatFiscal'
|
||||
import { SimpleField, SubSection } from './Fields'
|
||||
import ResultatsSimples from './RésultatSimple'
|
||||
import illustration from './undraw_fill_in_mie5.svg'
|
||||
import simulationConfig from './_config.yaml'
|
||||
import { ExplicationsResultatFiscal } from './_components/ExplicationResultatFiscal'
|
||||
import { SimpleField, SubSection } from '../_components/Fields'
|
||||
import ResultatsSimples from './_components/RésultatSimple'
|
||||
import illustration from './_undraw_fill_in_mie5.svg'
|
||||
|
||||
export default function AideDéclarationIndépendant() {
|
||||
useSimulationConfig(simulationConfig)
|
||||
|
||||
const situation = useSelector(situationSelector)
|
||||
|
||||
return (
|
||||
|
@ -86,7 +85,7 @@ export default function AideDéclarationIndépendant() {
|
|||
<FromTop>
|
||||
<Grid container>
|
||||
<Grid item xs={12} sm={10} md={9} lg={8}>
|
||||
<Condition expression="déclaration indépendants . comptabilité . engagement">
|
||||
<Condition expression="déclaration charge sociales . comptabilité . engagement">
|
||||
<Trans i18nKey="aide-déclaration-indépendant.entreprise.titre">
|
||||
<H2>Entreprise et activité</H2>
|
||||
</Trans>
|
||||
|
@ -105,7 +104,7 @@ export default function AideDéclarationIndépendant() {
|
|||
</SmallBody>
|
||||
</Condition>
|
||||
|
||||
<SubSection dottedName="déclaration indépendants . nature de l'activité" />
|
||||
<SubSection dottedName="déclaration charge sociales . nature de l'activité" />
|
||||
{/* PLNR */}
|
||||
<SimpleField dottedName="entreprise . activité . débit de tabac" />
|
||||
<SimpleField dottedName="dirigeant . indépendant . cotisations et contributions . déduction tabac" />
|
||||
|
@ -123,9 +122,9 @@ export default function AideDéclarationIndépendant() {
|
|||
<H2>
|
||||
<Trans>Exonérations</Trans>
|
||||
</H2>
|
||||
<SubSection dottedName="déclaration indépendants . réduction covid" />
|
||||
<SubSection dottedName="déclaration charge sociales . réduction covid" />
|
||||
<H3>Autres exonérations</H3>
|
||||
<SimpleField dottedName="déclaration indépendants . ACRE" />
|
||||
<SimpleField dottedName="déclaration charge sociales . ACRE" />
|
||||
<SimpleField dottedName="établissement . ZFU" />
|
||||
<Condition expression="établissement . ZFU">
|
||||
<SimpleField dottedName="entreprise . effectif . seuil" />
|
||||
|
@ -147,9 +146,9 @@ export default function AideDéclarationIndépendant() {
|
|||
</Condition>
|
||||
</Condition>
|
||||
|
||||
<Condition expression="déclaration indépendants . cotisations payées">
|
||||
<SubSection dottedName="déclaration indépendants . cotisations payées" />
|
||||
<SimpleField dottedName="déclaration indépendants . nature de l'activité" />
|
||||
<Condition expression="déclaration charge sociales . cotisations payées">
|
||||
<SubSection dottedName="déclaration charge sociales . cotisations payées" />
|
||||
<SimpleField dottedName="déclaration charge sociales . nature de l'activité" />
|
||||
<SimpleField dottedName="dirigeant . indépendant . conjoint collaborateur" />
|
||||
<SubSection dottedName="dirigeant . indépendant . cotisations facultatives" />
|
||||
{/* We can't use a subsection here cause revenu étrangers is not missing when CSG is replaced */}
|
||||
|
@ -162,15 +161,15 @@ export default function AideDéclarationIndépendant() {
|
|||
</Condition>
|
||||
</Condition>
|
||||
|
||||
<Condition expression="déclaration indépendants . cotisations payées version simple">
|
||||
<SimpleField dottedName="déclaration indépendants . cotisations payées version simple . cotisations sociales" />
|
||||
<SimpleField dottedName="déclaration indépendants . cotisations payées version simple . CSG déductible et CFP" />
|
||||
<Condition expression="déclaration charge sociales . cotisations payées version simple">
|
||||
<SimpleField dottedName="déclaration charge sociales . cotisations payées version simple . cotisations sociales" />
|
||||
<SimpleField dottedName="déclaration charge sociales . cotisations payées version simple . CSG déductible et CFP" />
|
||||
</Condition>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</FromTop>
|
||||
|
||||
<WhenAlreadyDefined dottedName="déclaration indépendants . résultat simple . cotisations obligatoires">
|
||||
<WhenAlreadyDefined dottedName="déclaration charge sociales . résultat simple . cotisations obligatoires">
|
||||
<ResultatsSimples />
|
||||
</WhenAlreadyDefined>
|
||||
</>
|
||||
|
@ -193,12 +192,12 @@ function ImpositionSection() {
|
|||
<SimpleField dottedName="entreprise . imposition" />
|
||||
|
||||
<WhenAlreadyDefined dottedName="entreprise . imposition">
|
||||
{/* <WhenApplicable dottedName="déclaration indépendants . comptabilité"> */}
|
||||
<SimpleField dottedName="déclaration indépendants . comptabilité" />
|
||||
{/* <WhenApplicable dottedName="déclaration charge sociales . comptabilité"> */}
|
||||
<SimpleField dottedName="déclaration charge sociales . comptabilité" />
|
||||
{/* </WhenApplicable> */}
|
||||
<Condition
|
||||
expression={
|
||||
'déclaration indépendants . cotisations payées version simple = non'
|
||||
'déclaration charge sociales . cotisations payées version simple = non'
|
||||
}
|
||||
>
|
||||
<FromTop key={situation['entreprise . imposition']}>
|
|
@ -0,0 +1,28 @@
|
|||
import { SmallBody } from '@/design-system/typography/paragraphs'
|
||||
import React from 'react'
|
||||
import styled from 'styled-components'
|
||||
|
||||
export default function FormulaireTitle({
|
||||
formulaire,
|
||||
children,
|
||||
}: {
|
||||
formulaire: string
|
||||
children: React.ReactNode
|
||||
}) {
|
||||
return (
|
||||
<StyledLiasseTitle>
|
||||
{children}
|
||||
<StyledFormulaireReference>{formulaire}</StyledFormulaireReference>
|
||||
</StyledLiasseTitle>
|
||||
)
|
||||
}
|
||||
|
||||
const StyledFormulaireReference = styled(SmallBody)`
|
||||
margin-bottom: -1.5rem;
|
||||
`
|
||||
const StyledLiasseTitle = styled.header`
|
||||
display: flex;
|
||||
margin-bottom: -1rem;
|
||||
|
||||
flex-direction: column-reverse;
|
||||
`
|
|
@ -0,0 +1,128 @@
|
|||
import { updateSituation } from '@/actions/actions'
|
||||
import { useEngine } from '@/components/utils/EngineContext'
|
||||
import { Message } from '@/design-system'
|
||||
import { Spacing } from '@/design-system/layout'
|
||||
import { Switch } from '@/design-system/switch'
|
||||
import { Strong } from '@/design-system/typography'
|
||||
import { H3 } from '@/design-system/typography/heading'
|
||||
import { Body, SmallBody } from '@/design-system/typography/paragraphs'
|
||||
import { useOrdinal } from '@/hooks/useOrdinal'
|
||||
import { isEmpty } from 'ramda'
|
||||
import { useCallback } from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { useDispatch } from 'react-redux'
|
||||
import styled, { css } from 'styled-components'
|
||||
|
||||
export default function ModeAccompagnement() {
|
||||
const engine = useEngine()
|
||||
|
||||
const declarationNumber = engine.evaluate('DRI . nombre de déclarations')
|
||||
.nodeValue as number
|
||||
|
||||
const defaultAccompagnementMode = engine.evaluate(
|
||||
'DRI . accompagnement imposition par défaut'
|
||||
).nodeValue as boolean
|
||||
|
||||
const isSelected = engine.evaluate('DRI . accompagnement imposition')
|
||||
.nodeValue as boolean
|
||||
|
||||
const dispatch = useDispatch()
|
||||
const imposition = engine.evaluate('entreprise . imposition')
|
||||
if (isSelected && !isEmpty(imposition.missingVariables)) {
|
||||
dispatch(
|
||||
updateSituation(
|
||||
'entreprise . imposition',
|
||||
`'${imposition.nodeValue as string}'`
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
const updateSelected = useCallback(
|
||||
(isSelected: boolean) =>
|
||||
dispatch(
|
||||
updateSituation(
|
||||
'DRI . accompagnement imposition',
|
||||
isSelected ? 'oui' : 'non'
|
||||
)
|
||||
),
|
||||
[dispatch]
|
||||
)
|
||||
|
||||
return (
|
||||
<Message>
|
||||
<H3>{engine.getRule('DRI . accompagnement imposition').title}</H3>
|
||||
<Body>
|
||||
<Strong>
|
||||
<Trans i18nKey="assistant-DRI.imposition.mode-accompagnement.nombre-déclarations">
|
||||
C'est votre {{ nthDeclaration: useOrdinal(declarationNumber) }}{' '}
|
||||
déclaration de revenu depuis la création de votre entreprise.
|
||||
</Trans>
|
||||
</Strong>{' '}
|
||||
</Body>
|
||||
{defaultAccompagnementMode ? (
|
||||
<Trans i18nKey="assistant-DRI.imposition.mode-accompagnement.activé">
|
||||
<Body>
|
||||
Tout n'est peut-être pas encore très clair pour vous. Nous allons
|
||||
vous guider pas à pas en vous posant des questions simples. À chaque
|
||||
fois, nous vous donnerons des pistes sur comment trouver les
|
||||
informations pour y répondre.
|
||||
</Body>
|
||||
<Body>
|
||||
Nous vous expliquerons aussi toutes les notions clés reliées à votre
|
||||
déclaration (par exemple : IS/IR, BIC, BNC, liasse fiscale, etc.)
|
||||
</Body>
|
||||
<Body>
|
||||
Vous pouvez changer de mode à tout moment en utilisant
|
||||
l'interrupteur ci-dessous.{' '}
|
||||
</Body>
|
||||
</Trans>
|
||||
) : (
|
||||
<Trans i18nKey="assistant-DRI.imposition.mode-accompagnement.désactivé">
|
||||
<Body>
|
||||
Vous avez peut-être une bonne connaissance des notions associées
|
||||
(par exemple : IS/IR, BIC/BNC, liasse fiscale, etc.). Nous irons
|
||||
droit au but en vous posant des{' '}
|
||||
<Strong>questions simples et précises</Strong> pour vous faire
|
||||
gagner du temps.{' '}
|
||||
</Body>
|
||||
<Body>
|
||||
Si vous souhaitez être davantage accompagné pour répondre aux
|
||||
questions, vous pouvez <Strong>changer de mode</Strong> à tout
|
||||
moment en utilisant l'interrupteur ci-dessous.
|
||||
</Body>
|
||||
</Trans>
|
||||
)}
|
||||
<Spacing xs />
|
||||
<AccompagnementSwitch>
|
||||
<Switch onChange={updateSelected} defaultSelected={isSelected}>
|
||||
<Strong>
|
||||
<Trans>Mode accompagnement</Trans>
|
||||
</Strong>
|
||||
</Switch>
|
||||
<SmallBody>
|
||||
{isSelected ? (
|
||||
<Trans>Accompagnement activé</Trans>
|
||||
) : (
|
||||
<Trans>Accompagnement désactivé</Trans>
|
||||
)}
|
||||
</SmallBody>
|
||||
</AccompagnementSwitch>
|
||||
</Message>
|
||||
)
|
||||
}
|
||||
|
||||
const AccompagnementSwitch = styled.div`
|
||||
${({ theme }) => css`
|
||||
background-color: ${theme.colors.extended.grey[100]};
|
||||
padding: ${theme.spacings.md};
|
||||
padding-bottom: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border-radius: ${theme.box.borderRadius};
|
||||
width: fit-content;
|
||||
margin-bottom: ${theme.spacings.md};
|
||||
* {
|
||||
color: ${theme.colors.bases.primary[800]};
|
||||
}
|
||||
`}
|
||||
`
|
|
@ -0,0 +1,22 @@
|
|||
import { DottedName } from '@/../../modele-social'
|
||||
import { useEngine } from '@/components/utils/EngineContext'
|
||||
import { isEmpty } from 'ramda'
|
||||
|
||||
export function useProgress(objectifs: DottedName[]): number {
|
||||
const engine = useEngine()
|
||||
const evaluatedObjectifs = objectifs.map((dottedName) => ({
|
||||
...engine.evaluate(dottedName),
|
||||
dottedName,
|
||||
}))
|
||||
const objectifsApplicables = evaluatedObjectifs.filter(
|
||||
(objectif) => objectif.nodeValue !== null
|
||||
)
|
||||
const objectifsRemplis = objectifsApplicables.filter((objectif) =>
|
||||
isEmpty(objectif.missingVariables)
|
||||
)
|
||||
if (!objectifsApplicables.length) {
|
||||
return 0
|
||||
}
|
||||
|
||||
return objectifsRemplis.length / objectifsApplicables.length
|
||||
}
|
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 36 KiB |
|
@ -0,0 +1,14 @@
|
|||
objectifs:
|
||||
- DRI . cotisations
|
||||
|
||||
questions:
|
||||
liste noire:
|
||||
- dirigeant . indépendant . cotisations facultatives
|
||||
liste:
|
||||
- DRI . cotisations
|
||||
- ''
|
||||
|
||||
unité par défaut: '€'
|
||||
|
||||
situation:
|
||||
DRI: oui
|
|
@ -0,0 +1,105 @@
|
|||
import Conversation from '@/components/conversation/Conversation'
|
||||
import Value, { WhenAlreadyDefined } from '@/components/EngineValue'
|
||||
import { FromBottom, FromTop } from '@/components/ui/animate'
|
||||
import Progress from '@/components/ui/Progress'
|
||||
import { useSimulationProgress } from '@/components/utils/useNextQuestion'
|
||||
import { Message } from '@/design-system'
|
||||
import { Container, Spacing } from '@/design-system/layout'
|
||||
import { Strong } from '@/design-system/typography'
|
||||
import { H2 } from '@/design-system/typography/heading'
|
||||
import { Body, Intro } from '@/design-system/typography/paragraphs'
|
||||
import { Grid } from '@mui/material'
|
||||
|
||||
export default function Cotisations() {
|
||||
const progress = useSimulationProgress()
|
||||
|
||||
return (
|
||||
<FromTop>
|
||||
<Grid container item lg={10} xl={8}>
|
||||
<Intro>
|
||||
En 2022, vous paierez des <Strong>cotisations sociales</Strong> à
|
||||
l'Urssaf. Voici comment elles seront calculées :
|
||||
</Intro>
|
||||
</Grid>
|
||||
<Container
|
||||
darkMode
|
||||
backgroundColor={(theme) => theme.colors.bases.primary[600]}
|
||||
>
|
||||
<Grid
|
||||
container
|
||||
columnSpacing={4}
|
||||
rowSpacing={2}
|
||||
justifyContent="center"
|
||||
>
|
||||
<Grid item md={6} sm={12}>
|
||||
<H2>Cotisations provisionnelles</H2>
|
||||
<Intro>
|
||||
<Value expression="dirigeant . indépendant . cotisations et contributions" />
|
||||
</Intro>
|
||||
<Body>
|
||||
En 2022, vous allez payer chaque mois une{' '}
|
||||
<Strong>avance sur le montant des cotisations</Strong> que vous
|
||||
devrez . C'est ce que l'on appelle{' '}
|
||||
<Strong>les cotisations provisionnelles</Strong>. Elles sont
|
||||
calculées à partir de votre revenu de 2021 (déclaré en 2022).
|
||||
</Body>
|
||||
<Body>
|
||||
Ces cotisations seront <Strong>régularisées en 2023</Strong>, une
|
||||
fois que l'Urssaf connaîtra votre revenu réel de 2022.
|
||||
</Body>
|
||||
</Grid>
|
||||
<Grid item md={6} sm={12}>
|
||||
<H2>Régularisation des cotisations</H2>
|
||||
<Intro>
|
||||
<Value expression="DRI . cotisations . régularisation" />
|
||||
</Intro>
|
||||
<Body>
|
||||
C'est la différence entre les cotisations provisionnelles payées
|
||||
en 2021 et le montant que vous deviez effectivement payer.
|
||||
</Body>
|
||||
<Body>
|
||||
Ce dernier est calculé à partir de votre revenu de 2021 (déclaré
|
||||
en 2022).
|
||||
</Body>
|
||||
</Grid>
|
||||
<Grid item lg={10} xl={8}>
|
||||
<Spacing md />
|
||||
<Intro as="h2">
|
||||
Améliorez votre estimation en répondant aux questions suivantes
|
||||
pour l'année 2021
|
||||
</Intro>
|
||||
</Grid>
|
||||
<Grid item lg={10} xl={8}>
|
||||
<Message border={false}>
|
||||
<div
|
||||
css={`
|
||||
margin: -0.75rem 0;
|
||||
`}
|
||||
>
|
||||
<Conversation />
|
||||
</div>
|
||||
</Message>
|
||||
</Grid>
|
||||
<Grid item lg={10} xl={8}>
|
||||
<WhenAlreadyDefined dottedName="DRI . cotisations">
|
||||
<FromBottom>
|
||||
<Message icon type="success" border={false}>
|
||||
<Intro>
|
||||
En 2022, vous devrez payer à l'Urssaf{' '}
|
||||
<Strong>
|
||||
{' '}
|
||||
<Value expression="DRI . cotisations" />
|
||||
</Strong>{' '}
|
||||
de cotisations sociales.
|
||||
</Intro>
|
||||
</Message>
|
||||
</FromBottom>
|
||||
</WhenAlreadyDefined>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Spacing md />
|
||||
</Container>
|
||||
<Progress progress={progress} />
|
||||
</FromTop>
|
||||
)
|
||||
}
|
|
@ -0,0 +1,382 @@
|
|||
import { DottedName } from '@/../../modele-social'
|
||||
import Value, { Condition } from '@/components/EngineValue'
|
||||
import { FromTop } from '@/components/ui/animate'
|
||||
import { useEngine } from '@/components/utils/EngineContext'
|
||||
import { Markdown } from '@/components/utils/markdown'
|
||||
import { SitePathsContext } from '@/components/utils/SitePathsContext'
|
||||
import { Message } from '@/design-system'
|
||||
import Accordion from '@/design-system/accordion'
|
||||
import AnswerGroup from '@/design-system/answer-group'
|
||||
import { Button } from '@/design-system/buttons'
|
||||
import { Container, Spacing } from '@/design-system/layout'
|
||||
import { Strong } from '@/design-system/typography'
|
||||
import { H2, H3, H4 } from '@/design-system/typography/heading'
|
||||
import { Link } from '@/design-system/typography/link'
|
||||
import { Li, Ol } from '@/design-system/typography/list'
|
||||
import { Body, Intro, SmallBody } from '@/design-system/typography/paragraphs'
|
||||
import { Grid } from '@mui/material'
|
||||
import { Item } from '@react-stately/collections'
|
||||
import { RuleNode } from 'publicodes'
|
||||
import { useContext, useMemo } from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import styled, { css } from 'styled-components'
|
||||
import { SimpleField } from '../_components/Fields'
|
||||
import { useProgress } from './_components/hooks'
|
||||
|
||||
export function useObjectifs(): Array<DottedName> {
|
||||
return useLiasseFiscaleFields()
|
||||
.filter(
|
||||
([, rule]) =>
|
||||
rule.rawNode.meta?.facultatif !== 'oui' &&
|
||||
rule.rawNode.meta?.section !== 'oui'
|
||||
)
|
||||
.map(([dottedName]) => dottedName)
|
||||
}
|
||||
|
||||
export default function Déclaration() {
|
||||
const engine = useEngine()
|
||||
const liasseDottedName = (
|
||||
[
|
||||
'DRI . liasse . réel simplifié',
|
||||
'DRI . liasse . réel normal',
|
||||
'DRI . liasse . déclaration contrôlée',
|
||||
] as const
|
||||
).find((dottedName) => engine.evaluate(dottedName).nodeValue !== null)
|
||||
if (!liasseDottedName) {
|
||||
return null // TODO : micro-fiscal
|
||||
}
|
||||
const liasse = engine.getRule(liasseDottedName)
|
||||
|
||||
return (
|
||||
<>
|
||||
<Grid container>
|
||||
<Grid item lg={10} xl={8}>
|
||||
<FromTop>
|
||||
<H2>Aide au remplissage de la déclaration de revenu</H2>
|
||||
<Trans i18nKey="assistant-DRI.imposition.intro">
|
||||
<Intro>
|
||||
Nous allons maintenant vous indiquer comment remplir votre
|
||||
déclaration de revenu personnelle à partir de la déclaration de
|
||||
résultat de votre entreprise.
|
||||
</Intro>
|
||||
</Trans>
|
||||
<H3>Où trouver la déclaration de résultat de l'entreprise ?</H3>
|
||||
|
||||
<Body>
|
||||
C'est le comptable qui se charge de remplir la déclaration de
|
||||
résultat. Il s'occupe également de la transmettre aux impôts en
|
||||
début d'année.
|
||||
</Body>
|
||||
|
||||
<Accordion>
|
||||
<Item
|
||||
title="Récupérer le formulaire complété sur « impot.gouv.fr »"
|
||||
key="impot.gouv.fr"
|
||||
hasChildItems={false}
|
||||
>
|
||||
<Body>
|
||||
Si le formulaire de déclaration de résultat de votre
|
||||
entreprise a déjà été envoyé aux impôts, vous pouvez y accéder
|
||||
en suivant ces étapes :{' '}
|
||||
</Body>
|
||||
<Ol>
|
||||
<Li>
|
||||
Connectez-vous à votre espace professionnel sur{' '}
|
||||
<Link
|
||||
href="https://cfspro.impots.gouv.fr/mire/accueil.do"
|
||||
title="Accéder à mon espace professionnel"
|
||||
>
|
||||
impot.gouv.fr
|
||||
</Link>
|
||||
</Li>
|
||||
<Li>
|
||||
Dans le menu « <Strong>consulter</Strong> »,
|
||||
cliquez sur « <Strong>compte fiscal</Strong> »
|
||||
</Li>
|
||||
<Li>
|
||||
Dans le menu « <Strong>Accès par impôt</Strong> »,
|
||||
allez sur «
|
||||
<Strong>
|
||||
<Condition expression="entreprise . imposition . IR . type de bénéfices . BNC">
|
||||
Bénéfices non commerciaux
|
||||
</Condition>
|
||||
<Condition expression="entreprise . imposition . IR . type de bénéfices . BIC">
|
||||
Bénéfices industriels et commerciaux
|
||||
</Condition>
|
||||
<Condition expression="entreprise . imposition . IS">
|
||||
Impôt sur les sociétés
|
||||
</Condition>
|
||||
</Strong>
|
||||
», puis sur «
|
||||
<Strong>Déclarations</Strong> »
|
||||
</Li>
|
||||
<Li>
|
||||
Cliquez sur la première ligne{' '}
|
||||
<Strong>« Exercice clos le 31/12/2021 »</Strong>
|
||||
</Li>
|
||||
<Li>
|
||||
Cliquez sur la <Strong>date en gras</Strong> dans la colonne
|
||||
« date de dépôt »
|
||||
</Li>
|
||||
</Ol>
|
||||
<Spacing md />
|
||||
<Message type="info" icon border={false}>
|
||||
Si votre déclaration n'est pas présente, ou si vous n'avez pas
|
||||
accès à votre espace professionnel sur impot.gouv.fr, vous
|
||||
pouvez demander à votre comptable.
|
||||
</Message>
|
||||
</Item>
|
||||
|
||||
<Item
|
||||
title="Demander à mon comptable la liste des cases"
|
||||
key="comptable"
|
||||
hasChildItems={false}
|
||||
>
|
||||
<Body>
|
||||
Si le formulaire de déclaration de résultat de votre
|
||||
entreprise n'apparaît pas encore sur le site des impôts, vous
|
||||
pouvez demander directement à votre comptable les montants
|
||||
nécessaire.
|
||||
</Body>
|
||||
<Body>Voici un modèle de message à transmettre :</Body>
|
||||
<Message type="secondary">
|
||||
<Markdown>{ModeleMessageComptable}</Markdown>
|
||||
</Message>
|
||||
<Button light size="XS">
|
||||
Copier le message
|
||||
</Button>
|
||||
</Item>
|
||||
</Accordion>
|
||||
<H2>{liasse.title}</H2>
|
||||
<Body>
|
||||
Pour connaître les cases à remplir dans votre déclaration de
|
||||
revenu personnelle, copiez les montant renseignés dans la
|
||||
déclaration de résultat de votre entreprise dans le formulaire
|
||||
suivant.
|
||||
</Body>
|
||||
</FromTop>
|
||||
</Grid>
|
||||
<LiasseFiscale />
|
||||
</Grid>
|
||||
<Spacing xxl />
|
||||
<ResultSection />
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
const ModeleMessageComptable = `
|
||||
Bonjour,
|
||||
|
||||
Je souhaite procéder à la déclaration de mes revenus
|
||||
d'indépendant sur impot.gouv.fr. J'aurais besoin pour cela des
|
||||
informations suivantes contenues dans les cases suivantes de
|
||||
la déclaration de résultat de l'entreprise :
|
||||
|
||||
Case BV BT, BK, BZ, ...
|
||||
|
||||
Je vous remercie de m'envoyer ces informations ou directement
|
||||
un exemplaire de la déclaration déjà remplie.
|
||||
|
||||
Bien à vous,`
|
||||
|
||||
function useLiasseFiscaleFields(): Array<[DottedName, RuleNode]> {
|
||||
const engine = useEngine()
|
||||
const fields = useMemo(
|
||||
() =>
|
||||
(Object.entries(engine.getParsedRules()) as Array<[DottedName, RuleNode]>)
|
||||
.filter(([dottedName]) =>
|
||||
dottedName.match(/DRI \. liasse \. .* \. .*$/)
|
||||
)
|
||||
.filter(
|
||||
([dottedName]) => engine.evaluate(dottedName).nodeValue !== null
|
||||
),
|
||||
[engine.parsedSituation]
|
||||
)
|
||||
|
||||
return fields
|
||||
}
|
||||
|
||||
function LiasseFiscale() {
|
||||
const fields = useLiasseFiscaleFields()
|
||||
|
||||
return (
|
||||
<>
|
||||
{fields.map(([dottedName, rule]) =>
|
||||
rule.rawNode.meta?.section === 'oui' ? (
|
||||
<Grid xs={12}>
|
||||
<H3
|
||||
css={`
|
||||
margin-bottom: 0rem;
|
||||
`}
|
||||
>
|
||||
{rule.title}
|
||||
</H3>
|
||||
</Grid>
|
||||
) : (
|
||||
<Grid md={4} sm={6} xs={12}>
|
||||
<SimpleField dottedName={dottedName} />
|
||||
</Grid>
|
||||
)
|
||||
)}
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
function useDéclarationRevenuFields() {
|
||||
const engine = useEngine()
|
||||
const fields = useMemo(
|
||||
() =>
|
||||
Object.entries(engine.getParsedRules())
|
||||
.filter(([, rule]) => rule.rawNode.meta?.affichage !== 'non')
|
||||
.filter(([dottedName]) =>
|
||||
dottedName.startsWith('DRI . déclaration revenus')
|
||||
)
|
||||
.filter(
|
||||
([dottedName]) => engine.evaluate(dottedName).nodeValue != null
|
||||
),
|
||||
[engine.parsedSituation]
|
||||
)
|
||||
|
||||
return fields
|
||||
}
|
||||
|
||||
function ResultSection() {
|
||||
const objectifs = useObjectifs()
|
||||
const fields = useDéclarationRevenuFields()
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
|
||||
const isLiasseFiscaleCompleted = useProgress(objectifs) === 1
|
||||
if (!isLiasseFiscaleCompleted) {
|
||||
return null
|
||||
}
|
||||
|
||||
return (
|
||||
<Container
|
||||
darkMode
|
||||
backgroundColor={(theme) => theme.colors.bases.primary[600]}
|
||||
>
|
||||
<FromTop>
|
||||
<H2>Votre déclaration de revenu</H2>
|
||||
<Grid
|
||||
container
|
||||
spacing={3}
|
||||
alignItems="stretch"
|
||||
flexWrap={'wrap-reverse'}
|
||||
>
|
||||
<Grid item lg={8} xl={7}>
|
||||
<Message border={false}>
|
||||
<Grid
|
||||
container
|
||||
alignItems="flex-end"
|
||||
justifyContent={'space-between'}
|
||||
>
|
||||
{fields.map(([dottedName, rule]) =>
|
||||
rule.rawNode.meta?.section === 'oui' ? (
|
||||
<Grid xs={12}>
|
||||
{rule.dottedName.split(' . ').length === 3 ? (
|
||||
<H3>{rule.title}</H3>
|
||||
) : (
|
||||
<H4
|
||||
css={`
|
||||
margin-top: 0rem;
|
||||
`}
|
||||
>
|
||||
{rule.title}
|
||||
</H4>
|
||||
)}
|
||||
</Grid>
|
||||
) : (
|
||||
<>
|
||||
<Grid item xs={12} sm={8} md={9}>
|
||||
<Body>
|
||||
{rule.title} <em>{rule.rawNode.note}</em>
|
||||
</Body>
|
||||
</Grid>
|
||||
<Grid item xs="auto">
|
||||
<Body>
|
||||
<Strong>
|
||||
{
|
||||
(rule.rawNode.meta?.cases.défaut ??
|
||||
rule.rawNode.meta?.cases ??
|
||||
[])[0]
|
||||
}
|
||||
</Strong>
|
||||
<StyledCase>
|
||||
<Value expression={dottedName} linkToRule={false} />
|
||||
</StyledCase>
|
||||
</Body>
|
||||
</Grid>
|
||||
</>
|
||||
)
|
||||
)}
|
||||
</Grid>
|
||||
<Spacing lg />
|
||||
|
||||
<AnswerGroup justifyContent={'center'}>
|
||||
<Button size="XS" light isDisabled>
|
||||
Imprimer ou sauvegarder en PDF
|
||||
</Button>
|
||||
<Button size="XS" light isDisabled>
|
||||
Obtenir un lien de partage
|
||||
</Button>
|
||||
</AnswerGroup>
|
||||
<Spacing xl />
|
||||
|
||||
<Grid
|
||||
xs={12}
|
||||
css={`
|
||||
text-align: center;
|
||||
`}
|
||||
item
|
||||
>
|
||||
<Button
|
||||
size="XL"
|
||||
to={sitePaths.gérer.déclarationIndépendant.cotisations}
|
||||
>
|
||||
Continuer vers l'estimation des cotisations pour 2022
|
||||
</Button>
|
||||
</Grid>
|
||||
<Spacing md />
|
||||
</Message>
|
||||
</Grid>
|
||||
|
||||
<Grid item lg={4} xl={5}>
|
||||
<div
|
||||
css={`
|
||||
position: sticky !important;
|
||||
top: 1rem;
|
||||
padding-bottom: 0.001rem;
|
||||
`}
|
||||
>
|
||||
<Message type="info" border={false}>
|
||||
<Body>Ces informations sont fournies à titre indicatif.</Body>
|
||||
<SmallBody>
|
||||
Vous restez entièrement responsable d'éventuels oublis ou
|
||||
inexactitudes dans votre déclaration.
|
||||
</SmallBody>
|
||||
<SmallBody>
|
||||
En cas de doutes, rapprochez-vous de votre comptable.
|
||||
</SmallBody>
|
||||
</Message>
|
||||
</div>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Spacing xl />
|
||||
</FromTop>
|
||||
</Container>
|
||||
)
|
||||
}
|
||||
|
||||
const StyledCase = styled.span`
|
||||
border: 1px solid ${({ theme }) => theme.colors.bases.primary[800]};
|
||||
border-top: none;
|
||||
background-color: white;
|
||||
padding: ${({ theme }) =>
|
||||
css`
|
||||
${theme.spacings.xxs} ${theme.spacings.sm}
|
||||
`};
|
||||
display: inline-block;
|
||||
width: 5.5rem;
|
||||
text-align: right;
|
||||
margin-left: ${({ theme }) => theme.spacings.sm};
|
||||
`
|
|
@ -0,0 +1,169 @@
|
|||
import { DottedName } from '@/../../modele-social'
|
||||
import { resetCompany } from '@/actions/companyActions'
|
||||
import { useSetEntreprise } from '@/hooks/useSetEntreprise'
|
||||
import { CompanyDetails } from '@/components/company/Details'
|
||||
import { CompanySearchField } from '@/components/company/SearchField'
|
||||
import {
|
||||
WhenAlreadyDefined,
|
||||
WhenApplicable,
|
||||
WhenNotAlreadyDefined,
|
||||
} from '@/components/EngineValue'
|
||||
import { FromBottom, FromTop } from '@/components/ui/animate'
|
||||
import { useEngine } from '@/components/utils/EngineContext'
|
||||
import { Markdown } from '@/components/utils/markdown'
|
||||
import { SitePathsContext } from '@/components/utils/SitePathsContext'
|
||||
import { Message } from '@/design-system'
|
||||
import { Button } from '@/design-system/buttons'
|
||||
import { Spacing } from '@/design-system/layout'
|
||||
import { Strong } from '@/design-system/typography'
|
||||
import { H3 } from '@/design-system/typography/heading'
|
||||
import { Link } from '@/design-system/typography/link'
|
||||
import { Body, Intro, SmallBody } from '@/design-system/typography/paragraphs'
|
||||
import { Grid } from '@mui/material'
|
||||
import { useContext } from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { useDispatch } from 'react-redux'
|
||||
import { SimpleField } from '../_components/Fields'
|
||||
import { useProgress } from './_components/hooks'
|
||||
import notHandled from './_components/undraw_access_denied_re_awnf.svg'
|
||||
|
||||
export const OBJECTIFS: DottedName[] = [
|
||||
'entreprise . SIREN',
|
||||
'entreprise . catégorie juridique . EI . auto-entrepreneur',
|
||||
'entreprise . catégorie juridique . SARL . unipersonnelle',
|
||||
]
|
||||
|
||||
export default function Accueil() {
|
||||
const setEntreprise = useSetEntreprise()
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
const dispatch = useDispatch()
|
||||
const engine = useEngine()
|
||||
const progress = useProgress(OBJECTIFS)
|
||||
const showGoToNextStep =
|
||||
progress === 1 && engine.evaluate('DRI . cas exclus').nodeValue === null
|
||||
|
||||
return (
|
||||
<>
|
||||
<Grid container>
|
||||
<Grid item lg={10} xl={8}>
|
||||
<Intro>
|
||||
La première étape est de <Strong>trouver votre entreprise</Strong>.
|
||||
Nous utiliserons les informations disponibles ouvertement sur
|
||||
l'INSEE pour mieux vous guider par la suite.
|
||||
</Intro>
|
||||
|
||||
<WhenNotAlreadyDefined dottedName="entreprise . SIREN">
|
||||
<Body>
|
||||
Vous pouvez rechercher avec votre nom, le nom de votre entreprise,
|
||||
le SIREN ou le SIRET
|
||||
</Body>
|
||||
<CompanySearchField onSubmit={setEntreprise} />
|
||||
</WhenNotAlreadyDefined>
|
||||
<WhenAlreadyDefined dottedName="entreprise . SIREN">
|
||||
<FromBottom>
|
||||
<CompanyDetails />
|
||||
</FromBottom>
|
||||
|
||||
<Button size="XS" light onPress={() => dispatch(resetCompany())}>
|
||||
<Trans>Modifier l'entreprise</Trans>
|
||||
</Button>
|
||||
</WhenAlreadyDefined>
|
||||
|
||||
<SimpleField dottedName="entreprise . catégorie juridique . EI . auto-entrepreneur" />
|
||||
<SimpleField dottedName="entreprise . catégorie juridique . SARL . unipersonnelle" />
|
||||
|
||||
<Spacing xxl />
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Grid container>
|
||||
<Grid item lg={10} xl={8}>
|
||||
<WhenApplicable dottedName="DRI . cas exclus">
|
||||
<FromTop>
|
||||
<Message type="info">
|
||||
<Grid
|
||||
container
|
||||
justifyContent="center"
|
||||
spacing={3}
|
||||
alignItems="center"
|
||||
>
|
||||
<Grid
|
||||
item
|
||||
xs={6}
|
||||
md={3}
|
||||
sx={{ order: { md: 0, xs: 1, sm: 1 } }}
|
||||
>
|
||||
<img
|
||||
src={notHandled}
|
||||
alt=""
|
||||
css={`
|
||||
width: 100%;
|
||||
padding: 1rem;
|
||||
`}
|
||||
/>
|
||||
</Grid>
|
||||
<Grid item md={9}>
|
||||
<Markdown>
|
||||
{engine.evaluate('DRI . cas exclus').nodeValue as string}
|
||||
</Markdown>
|
||||
</Grid>
|
||||
<Grid item lg={2} />
|
||||
<Grid item md="auto">
|
||||
<Button color="tertiary" to={sitePaths.gérer.index}>
|
||||
Découvrir les simulateur et assistant pour mon entreprise
|
||||
</Button>
|
||||
</Grid>
|
||||
<Grid item>
|
||||
<SmallBody>
|
||||
Si vous souhaitez que cet assistant à la déclaration gère
|
||||
votre cas dans le futur, laissez-nous message en cliquant
|
||||
sur le bouton "Faire une suggestion" en bas de la page.
|
||||
</SmallBody>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Message>
|
||||
</FromTop>
|
||||
</WhenApplicable>
|
||||
{showGoToNextStep && (
|
||||
<FromTop>
|
||||
<Message border={false}>
|
||||
<Trans i18nKey="assistant-DRI.precision">
|
||||
<H3>Quelques précisions avant de continuer</H3>
|
||||
<Body>
|
||||
Pour faire votre déclaration de revenu, il faudra vous
|
||||
connecter sur{' '}
|
||||
<Link href="https://www.impots.gouv.fr/accueil">
|
||||
impot.gouv.fr
|
||||
</Link>{' '}
|
||||
à partir du <Strong>8 avril 2022</Strong>.
|
||||
</Body>
|
||||
<Body>
|
||||
Si vous faites remplir votre déclaration de revenu par votre
|
||||
expert-comptable, cet assistant peut quand même vous être
|
||||
utile pour connaître le{' '}
|
||||
<Strong>
|
||||
montant des cotisations sociales à payer en 2022
|
||||
</Strong>
|
||||
</Body>
|
||||
</Trans>
|
||||
<div
|
||||
css={`
|
||||
text-align: center;
|
||||
`}
|
||||
>
|
||||
<Spacing lg />
|
||||
<Button
|
||||
size="XL"
|
||||
to={sitePaths.gérer.déclarationIndépendant.imposition}
|
||||
>
|
||||
Continuer avec cette entreprise
|
||||
</Button>
|
||||
<Spacing lg />
|
||||
</div>
|
||||
</Message>
|
||||
</FromTop>
|
||||
)}
|
||||
</Grid>
|
||||
</Grid>
|
||||
</>
|
||||
)
|
||||
}
|
|
@ -0,0 +1,378 @@
|
|||
import { DottedName } from '@/../../modele-social'
|
||||
import { Condition, WhenApplicable } from '@/components/EngineValue'
|
||||
import { FromTop } from '@/components/ui/animate'
|
||||
import { useEngine } from '@/components/utils/EngineContext'
|
||||
import { Markdown } from '@/components/utils/markdown'
|
||||
import { SitePathsContext } from '@/components/utils/SitePathsContext'
|
||||
import { Message } from '@/design-system'
|
||||
import Accordion from '@/design-system/accordion'
|
||||
import { Button } from '@/design-system/buttons'
|
||||
import { Container, Spacing } from '@/design-system/layout'
|
||||
import PopoverWithTrigger from '@/design-system/popover/PopoverWithTrigger'
|
||||
import { Strong } from '@/design-system/typography'
|
||||
import { H2, H3 } from '@/design-system/typography/heading'
|
||||
import { Link } from '@/design-system/typography/link'
|
||||
import { Body, Intro, SmallBody } from '@/design-system/typography/paragraphs'
|
||||
import { Grid } from '@mui/material'
|
||||
import { Item } from '@react-stately/collections'
|
||||
import { formatValue } from 'publicodes'
|
||||
import { useContext } from 'react'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import { SimpleField } from '../_components/Fields'
|
||||
import FormulaireTitle from './_components/FormulaireTitle'
|
||||
import { useProgress } from './_components/hooks'
|
||||
import ModeAccompagnement from './_components/ModeAccompagnement'
|
||||
|
||||
export const OBJECTIFS: Array<DottedName> = [
|
||||
'entreprise . imposition',
|
||||
'entreprise . imposition . IR . type de bénéfices',
|
||||
'entreprise . imposition . régime',
|
||||
]
|
||||
export default function Imposition() {
|
||||
const progress = useProgress(OBJECTIFS)
|
||||
const engine = useEngine()
|
||||
const { t } = useTranslation()
|
||||
|
||||
return (
|
||||
<>
|
||||
<Grid container>
|
||||
<Grid item lg={10} xl={8}>
|
||||
<Trans i18nKey="assistant-DRI.imposition.intro">
|
||||
<Intro>
|
||||
Dans cette étape, nous allons déterminer les{' '}
|
||||
<Strong>déclarations qui vous concernent</Strong> et la{' '}
|
||||
<Strong>liste des cases que vous aurez à remplir</Strong>.
|
||||
</Intro>
|
||||
</Trans>
|
||||
<ModeAccompagnement />
|
||||
<Condition expression="DRI . accompagnement imposition">
|
||||
<FromTop>
|
||||
<H2>Type d'imposition</H2>
|
||||
<Markdown components={{ p: Intro }}>
|
||||
{formatValue(
|
||||
engine.evaluate('DRI . accompagnement imposition . type')
|
||||
)}
|
||||
</Markdown>
|
||||
<Accordion>
|
||||
<Item
|
||||
key="explications"
|
||||
title={t("Qu'est ce que ça veut dire ?")}
|
||||
hasChildItems={false}
|
||||
>
|
||||
<Condition expression="entreprise . imposition . IR">
|
||||
<Markdown>
|
||||
{engine.getRule('entreprise . imposition . IR').rawNode
|
||||
.description ?? ''}
|
||||
</Markdown>
|
||||
</Condition>
|
||||
<Condition expression="entreprise . imposition . IS">
|
||||
<Markdown>
|
||||
{engine.getRule('entreprise . imposition . IS').rawNode
|
||||
.description ?? ''}
|
||||
</Markdown>
|
||||
</Condition>
|
||||
</Item>
|
||||
<Item
|
||||
key="exceptions"
|
||||
title={t(
|
||||
"Dans quels cas mon entreprise n'est pas imposée à l'impôt sur le revenu ?"
|
||||
)}
|
||||
hasChildItems={false}
|
||||
>
|
||||
<Markdown>
|
||||
{formatValue(
|
||||
engine.evaluate(
|
||||
'DRI . accompagnement imposition . type . exceptions'
|
||||
)
|
||||
)}
|
||||
</Markdown>
|
||||
</Item>
|
||||
</Accordion>
|
||||
<ModifyInformation dottedName="entreprise . imposition">
|
||||
Modifier le type d'imposition
|
||||
</ModifyInformation>
|
||||
<Condition expression="entreprise . imposition . IR">
|
||||
<H2>Type de bénéfice</H2>
|
||||
<Markdown components={{ p: Intro }}>
|
||||
{formatValue(
|
||||
engine.evaluate(
|
||||
'DRI . accompagnement imposition . bénéfice'
|
||||
)
|
||||
)}
|
||||
</Markdown>
|
||||
<Accordion>
|
||||
<Item
|
||||
key="explications"
|
||||
title={t("Qu'est ce que ça veut dire ?")}
|
||||
hasChildItems={false}
|
||||
>
|
||||
<Markdown>
|
||||
{formatValue(
|
||||
engine.evaluate(
|
||||
'DRI . accompagnement imposition . bénéfice . explications'
|
||||
)
|
||||
)}
|
||||
</Markdown>
|
||||
</Item>
|
||||
{engine.evaluate(
|
||||
'DRI . accompagnement imposition . bénéfice . exceptions'
|
||||
).nodeValue !== null ? (
|
||||
<Item
|
||||
key="exceptions"
|
||||
title={t(
|
||||
'Dans quels cas mes bénéfices ne sont pas de type BNC ?'
|
||||
)}
|
||||
hasChildItems={false}
|
||||
>
|
||||
<Markdown>
|
||||
{formatValue(
|
||||
engine.evaluate(
|
||||
'DRI . accompagnement imposition . bénéfice . exceptions'
|
||||
)
|
||||
)}
|
||||
</Markdown>
|
||||
</Item>
|
||||
) : (
|
||||
(null as any) // Problem with AriaAccordionProps type
|
||||
)}
|
||||
</Accordion>
|
||||
<WhenApplicable dottedName="DRI . accompagnement imposition . bénéfice . exceptions">
|
||||
<ModifyInformation dottedName="entreprise . imposition . IR . type de bénéfices">
|
||||
Modifier le type de bénéfice
|
||||
</ModifyInformation>
|
||||
</WhenApplicable>
|
||||
</Condition>
|
||||
<H2>Régime d'imposition</H2>
|
||||
<Intro>
|
||||
Il est possible de retrouver le régime d'imposition de votre
|
||||
entreprise avec le <Strong>memento fiscal</Strong>. C'est un
|
||||
document envoyé par le service des impôts qui résume la
|
||||
situation de votre entreprise.
|
||||
</Intro>
|
||||
<Message type="info" icon>
|
||||
<Body>
|
||||
<Body></Body>
|
||||
Si vous ne retrouvez pas ce document, ou si il n'est plus à
|
||||
jour, vous pouvez{' '}
|
||||
<Strong>contacter le service des impôt</Strong> pour qu'il
|
||||
vous transmette à nouveau ces informations.
|
||||
</Body>
|
||||
<Body>
|
||||
<Link href="https://www.impots.gouv.fr/contacts">
|
||||
Contacter le service des impôts
|
||||
</Link>
|
||||
</Body>
|
||||
<SmallBody>
|
||||
Vous pouvez également vous rapprocher de votre comptable pour
|
||||
avoir cette information.
|
||||
</SmallBody>
|
||||
</Message>
|
||||
|
||||
<SimpleField dottedName="DRI . accompagnement imposition . régime memento fiscal" />
|
||||
<Spacing lg />
|
||||
|
||||
<WhenApplicable dottedName="DRI . accompagnement imposition . régime">
|
||||
<Markdown components={{ p: Intro }}>
|
||||
{formatValue(
|
||||
engine.evaluate('DRI . accompagnement imposition . régime')
|
||||
)}
|
||||
</Markdown>
|
||||
<Accordion>
|
||||
<Item
|
||||
key="explications"
|
||||
title={t("Qu'est ce que ça veut dire ?")}
|
||||
hasChildItems={false}
|
||||
>
|
||||
<Markdown>
|
||||
{formatValue(
|
||||
engine.evaluate(
|
||||
'DRI . accompagnement imposition . explications'
|
||||
)
|
||||
)}
|
||||
</Markdown>
|
||||
</Item>
|
||||
</Accordion>
|
||||
</WhenApplicable>
|
||||
</FromTop>
|
||||
</Condition>
|
||||
<Condition expression="DRI . accompagnement imposition = non">
|
||||
<FromTop>
|
||||
{OBJECTIFS.map((dottedName) => (
|
||||
<SimpleField key={dottedName} dottedName={dottedName} />
|
||||
))}
|
||||
</FromTop>
|
||||
</Condition>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Spacing xl />
|
||||
{progress === 1 && <ResultSection />}
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
function ModifyInformation(props: {
|
||||
dottedName: DottedName
|
||||
children: React.ReactNode
|
||||
}) {
|
||||
return (
|
||||
<PopoverWithTrigger
|
||||
trigger={(buttonProps) => (
|
||||
<Button light {...buttonProps}>
|
||||
{props.children}
|
||||
</Button>
|
||||
)}
|
||||
small
|
||||
>
|
||||
{(close) => (
|
||||
<>
|
||||
<SimpleField dottedName={props.dottedName} />
|
||||
<Spacing lg />
|
||||
<Button onPress={close}>Continuer</Button>
|
||||
<Spacing md />
|
||||
</>
|
||||
)}
|
||||
</PopoverWithTrigger>
|
||||
)
|
||||
}
|
||||
|
||||
function ResultSection() {
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
|
||||
return (
|
||||
<FromTop>
|
||||
<Container
|
||||
darkMode
|
||||
backgroundColor={(theme) => theme.colors.bases.primary[600]}
|
||||
>
|
||||
<H2>Vos déclarations fiscales</H2>
|
||||
<Grid container spacing={4}>
|
||||
<Grid item lg={6}>
|
||||
<H3>Pour vous</H3>
|
||||
<Message border={false}>
|
||||
<FormulaireTitle formulaire="Formulaire 2042">
|
||||
<H3>Déclaration de revenus</H3>
|
||||
</FormulaireTitle>
|
||||
<Body>
|
||||
C'est la déclaration de revenu qui est effectuée chaque année
|
||||
sur{' '}
|
||||
<Link href="https://www.impots.gouv.fr/accueil">
|
||||
impot.gouv.fr
|
||||
</Link>
|
||||
. Elle est utilisée pour calculer{' '}
|
||||
<Strong>
|
||||
le montant de votre impôt et de vos cotisations sociales
|
||||
</Strong>
|
||||
.
|
||||
</Body>
|
||||
<Body>
|
||||
Vous pouvez demander à votre comptable de s'en charger, mais ce
|
||||
n'est pas automatique.
|
||||
</Body>
|
||||
<Body>
|
||||
En tant qu'indépendant vous aurez à remplir une section spéciale
|
||||
sur le montant des cotisations.
|
||||
</Body>
|
||||
<Spacing md />
|
||||
<div
|
||||
css={`
|
||||
text-align: center;
|
||||
`}
|
||||
>
|
||||
<Button to={sitePaths.gérer.déclarationIndépendant.déclaration}>
|
||||
Continuer vers l'aide au remplissage
|
||||
</Button>
|
||||
</div>
|
||||
<Spacing sm />
|
||||
|
||||
<SmallBody>
|
||||
Je connais déjà les cases et montants à remplir :{' '}
|
||||
<Link to={sitePaths.index} isDisabled>
|
||||
accéder directement à l'estimation de mes cotisations en 2022.
|
||||
</Link>
|
||||
</SmallBody>
|
||||
<Spacing md />
|
||||
</Message>
|
||||
</Grid>
|
||||
<Grid item lg={6}>
|
||||
<H3>Pour votre entreprise</H3>
|
||||
<WhenApplicable dottedName="DRI . liasse">
|
||||
<Message border={false}>
|
||||
<LiasseFiscaleTitle />
|
||||
<Body>
|
||||
C'est le formulaire qui permet de déclarer le{' '}
|
||||
<Strong>résultat détaillé</Strong> de votre entreprise.
|
||||
</Body>
|
||||
<Condition expression="entreprise . imposition . IS">
|
||||
<Body>
|
||||
Il permet de calculer le montant de l'impôt sur les
|
||||
sociétés.
|
||||
</Body>
|
||||
</Condition>
|
||||
<Body>
|
||||
Si vous avez un comptable, il se chargera de la remplir et de
|
||||
l'envoyer à l'administration fiscale.
|
||||
</Body>
|
||||
|
||||
<Body>
|
||||
Si vous n'avez pas de comptable, nous mettons à votre
|
||||
disposition un assistant pour{' '}
|
||||
<Strong>
|
||||
calculer le montant de vos charges sociales déductibles
|
||||
</Strong>
|
||||
.
|
||||
</Body>
|
||||
|
||||
<Body
|
||||
css={`
|
||||
text-align: center;
|
||||
`}
|
||||
>
|
||||
<Button
|
||||
light
|
||||
size="XS"
|
||||
to={
|
||||
sitePaths.gérer[
|
||||
'déclaration-charges-sociales-indépendant'
|
||||
]
|
||||
}
|
||||
>
|
||||
Accéder à l'assistant
|
||||
</Button>
|
||||
</Body>
|
||||
</Message>
|
||||
</WhenApplicable>
|
||||
|
||||
<Condition expression="entreprise . imposition . régime . micro-entreprise">
|
||||
<Message border={false} icon type="info">
|
||||
Comme vous êtes au régime micro-fiscal, il n'y a pas de
|
||||
formulaire de déclaration spécifique
|
||||
</Message>
|
||||
</Condition>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Spacing lg />
|
||||
</Container>
|
||||
</FromTop>
|
||||
)
|
||||
}
|
||||
|
||||
function LiasseFiscaleTitle() {
|
||||
const engine = useEngine()
|
||||
const liasseDottedName = (
|
||||
[
|
||||
'DRI . liasse . réel simplifié',
|
||||
'DRI . liasse . réel normal',
|
||||
'DRI . liasse . déclaration contrôlée',
|
||||
] as const
|
||||
).find((dottedName) => engine.evaluate(dottedName).nodeValue !== null)
|
||||
if (!liasseDottedName) {
|
||||
return null
|
||||
}
|
||||
const liasse = engine.getRule(liasseDottedName)
|
||||
|
||||
return (
|
||||
<FormulaireTitle formulaire={liasse.rawNode.meta?.formulaire ?? ''}>
|
||||
<H3>{liasse.title}</H3>
|
||||
</FormulaireTitle>
|
||||
)
|
||||
}
|