pull/2494/head
Jérémy Rialland 2023-01-18 18:03:31 +01:00 committed by Johan Girod
parent aab2bfd60e
commit 1328f2f805
33 changed files with 845 additions and 299 deletions

View File

@ -531,7 +531,7 @@ exports[`e2e test mon-entreprise api > Test evaluate micro entreprise 2`] = `
"evaluate": [
{
"missingVariables": [
"entreprise . activité . mixte",
"entreprise . activités . revenus mixtes",
],
"nodeValue": 8904,
"traversedVariables": [
@ -563,7 +563,7 @@ exports[`e2e test mon-entreprise api > Test evaluate micro entreprise 2`] = `
"dirigeant . auto-entrepreneur . cotisations et contributions . cotisations . taux vente restauration hébergement",
"entreprise . chiffre d'affaires . vente restauration hébergement",
"dirigeant . indépendant . PL",
"entreprise . activité . mixte",
"entreprise . activités . revenus mixtes",
"entreprise . imposition . régime . micro-entreprise",
"entreprise . imposition . IS",
"DRI . accompagnement imposition . régime memento fiscal . RSI",
@ -572,7 +572,7 @@ exports[`e2e test mon-entreprise api > Test evaluate micro entreprise 2`] = `
"DRI . accompagnement imposition . régime memento fiscal . DECC",
"DRI . accompagnement imposition . régime memento fiscal . SPECIAL",
"DRI . accompagnement imposition . régime memento fiscal . MICROE",
"entreprise . activité . service ou vente",
"entreprise . activités . service ou vente",
"dirigeant . auto-entrepreneur . cotisations et contributions . cotisations . taux service BIC",
"entreprise . chiffre d'affaires . service BIC",
"dirigeant . auto-entrepreneur . cotisations et contributions . cotisations . taux service BNC",
@ -596,7 +596,7 @@ exports[`e2e test mon-entreprise api > Test evaluate micro entreprise 2`] = `
},
{
"missingVariables": [
"entreprise . activité . mixte",
"entreprise . activités . revenus mixtes",
"établissement . commune . département",
"établissement . commune . département . outre-mer",
],
@ -654,7 +654,7 @@ exports[`e2e test mon-entreprise api > Test evaluate micro entreprise 2`] = `
},
{
"missingVariables": [
"entreprise . activité . mixte",
"entreprise . activités . revenus mixtes",
"établissement . commune . département",
"établissement . commune . département . outre-mer",
],
@ -692,7 +692,7 @@ exports[`e2e test mon-entreprise api > Test evaluate micro entreprise 2`] = `
"dirigeant . auto-entrepreneur . cotisations et contributions . cotisations . taux vente restauration hébergement",
"entreprise . chiffre d'affaires . vente restauration hébergement",
"dirigeant . indépendant . PL",
"entreprise . activité . mixte",
"entreprise . activités . revenus mixtes",
"entreprise . imposition . régime . micro-entreprise",
"entreprise . imposition . IS",
"DRI . accompagnement imposition . régime memento fiscal . RSI",
@ -701,7 +701,7 @@ exports[`e2e test mon-entreprise api > Test evaluate micro entreprise 2`] = `
"DRI . accompagnement imposition . régime memento fiscal . DECC",
"DRI . accompagnement imposition . régime memento fiscal . SPECIAL",
"DRI . accompagnement imposition . régime memento fiscal . MICROE",
"entreprise . activité . service ou vente",
"entreprise . activités . service ou vente",
"dirigeant . auto-entrepreneur . cotisations et contributions . cotisations . taux service BIC",
"entreprise . chiffre d'affaires . service BIC",
"dirigeant . auto-entrepreneur . cotisations et contributions . cotisations . taux service BNC",

View File

@ -78,8 +78,6 @@ lieu d'exercice . outre-mer:
début d'activité:
titre: Période de début dactivité
question: À quelle période avez-vous débuté votre activité ?
formulaire:
type: select
une possibilité:
choix obligatoire: oui
possibilités:

View File

@ -2,7 +2,7 @@ DRI:
experimental: oui
valeur: non
remplace:
- règle: entreprise . catégorie juridique . EI . auto-entrepreneur . défaut
- règle: entreprise . catégorie juridique . EI . auto-entrepreneur
par: non
DRI . cas exclus:

View File

@ -9,7 +9,7 @@ déclaration charge sociales:
par: ACRE
- # Par défaut on considère que l'entreprise est mixte et on affiche tous les champs
règle: entreprise . activité . mixte
règle: entreprise . activités . revenus mixtes
par: oui
déclaration charge sociales . comptabilité:

View File

@ -461,7 +461,7 @@ dirigeant . auto-entrepreneur . cotisations et contributions . cotisations:
description: |
Pour les professions libérales relevant de la CIPAV, le taux est le même quelle que soit la catégorie dimposition/activité (BIC ou BNC, service ou vente).
applicable si: affiliation CIPAV
rend non applicable: entreprise . activité . mixte
rend non applicable: entreprise . activités . revenus mixtes
produit:
assiette: entreprise . chiffre d'affaires
taux:
@ -973,7 +973,7 @@ dirigeant . indépendant . cotisations et contributions . PCV:
conventionnel.
dirigeant . indépendant . cotisations et contributions . déduction tabac:
applicable si: entreprise . activité . débit de tabac
applicable si: entreprise . activités . commerciale . débit de tabac
question: Quel est le montant des revenus issus de la vente de tabac que vous souhaitez exonérer de cotisation vieillesse ?
description: |
Si vous exercez une activité de débit de tabac simultanément à une activité commerciale, vous avez la possibilité dopter pour le calcul de votre cotisation dassurance vieillesse sur le seul revenu tiré de votre activité commerciale (en effet, les remises pour débit de tabac sont soumises par ailleurs à un prélèvement vieillesse particulier). Nous attirons cependant votre attention sur le fait quen cotisant sur une base moins importante, excluant les revenus de débit de tabac, vos droits à retraite pour lassurance vieillesse des commerçants en seront diminués.

View File

@ -1,6 +1,7 @@
entreprise . activité:
titre: activité principale
déprécié: oui
type: texte
références:
"Activité de votre entreprise : code APE, code NAF, qu'est-ce que c'est ?": https://www.economie.gouv.fr/entreprises/activite-entreprise-code-ape-code-naf
'À quoi correspond le code APE (code NAF) ?': https://entreprendre.service-public.fr/vosdroits/F33050
@ -8,7 +9,14 @@ entreprise . activité:
entreprise . activité . nature:
titre: nature de l'activité
question: Quelle est la nature de votre activité principale ?
description: Votre type d'activité va déterminer une grande partie des calculs de cotisations, contributions et impôt.
description: |
Votre type d'activité va déterminer une grande partie des calculs de cotisations, contributions et impôt.
### Pluri-activité
En cas d'activité multiples, m'activité principale est réputée être l'activité la plus ancienne.
Toutefois, à partir de la troisième année civile suivant celle au cours de laquelle la situation de pluriactivité a débuté, les personnes intéressées peuvent demander que l'activité qui a procuré le montant de chiffre d'affaires ou de recettes hors taxes le plus élevé sur les trois dernières années soit considérée comme leur activité principale.
par défaut: "'commerciale'"
formule:
une possibilité:
@ -22,53 +30,252 @@ entreprise . activité . nature:
Comment déterminer la nature de l'activité d'une entreprise ?: https://entreprendre.service-public.fr/vosdroits/F32887/personnalisation/resultat
Spécifiquement pour les auto-entrepreneurs: https://www.shine.fr/blog/categorie-activite-auto-entrepreneur
entreprise . activité . nature . libérale:
question: Votre activité est-elle une profession libérale ?
valeur: activité . nature = 'libérale'
description: |
Une activité libérale consiste en des prestations de services de nature principalement intellectuelles.
avec:
libérale:
valeur: activité . nature = 'libérale'
description: |
Une activité libérale consiste en des prestations de services de nature principalement intellectuelles.
Vous rendez un service payant.
Vous rendez un service payant.
Vous devez avoir un diplôme ou une qualification professionnelle dans le domaine.
Vous devez avoir un diplôme ou une qualification professionnelle dans le domaine.
références:
Comment savoir si votre entreprise est libérale ?: https://entreprendre.service-public.fr/vosdroits/F32887/personnalisation/resultat?lang=&quest0=1&quest=#fiche-item-aria-3situation1
fiche Wikipedia: https://fr.wikipedia.org/wiki/Profession_lib%C3%A9rale
liste des professions libérales: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/liste-professions-liberales
références:
Comment savoir si votre entreprise est libérale ?: https://entreprendre.service-public.fr/vosdroits/F32887/personnalisation/resultat?lang=&quest0=1&quest=#fiche-item-aria-3situation1
fiche Wikipedia: https://fr.wikipedia.org/wiki/Profession_lib%C3%A9rale
liste des professions libérales: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/liste-professions-liberales
entreprise . activité . nature . commerciale:
valeur: activité . nature = 'commerciale'
description: |
Votre activité est commerciale si vous êtes dans l'un des cas suivants :
commerciale:
valeur: activité . nature = 'commerciale'
description: |
Votre activité est commerciale si vous êtes dans l'un des cas suivants :
- Vous achetez des biens ou des marchandises pour les revendre dans un but lucratif : Qui rapporte de l'argent, du profit, des bénéfices
- Vous vendez des services dans les domaines de l'hôtellerie, la restauration, les transports, les spectacles, la sécurité, l'informatique, le design, etc.
- Vous avez une activité de location de biens, de marchandises ou de services
- Vous achetez des biens ou des marchandises pour les revendre dans un but lucratif : Qui rapporte de l'argent, du profit, des bénéfices
- Vous vendez des services dans les domaines de l'hôtellerie, la restauration, les transports, les spectacles, la sécurité, l'informatique, le design, etc.
- Vous avez une activité de location de biens, de marchandises ou de services
références:
Comment savoir si votre activité est commerciale: https://entreprendre.service-public.fr/vosdroits/F32887/personnalisation/resultat?lang=&quest0=1&quest=#fiche-item-aria-1situation1
références:
Comment savoir si votre activité est commerciale: https://entreprendre.service-public.fr/vosdroits/F32887/personnalisation/resultat?lang=&quest0=1&quest=#fiche-item-aria-1situation1
entreprise . activité . nature . artisanale:
valeur: activité . nature = 'artisanale'
description: |
Pour être artisan, vous devez répondre aux 3 critères suivants :
artisanale:
valeur: activité . nature = 'artisanale'
description: |
Pour être artisan, vous devez répondre aux 3 critères suivants :
- Votre activité doit faire partie de la liste officielle des métiers de l'artisanat ou de la liste officielle des métiers d'artisanat d'art
- Votre entreprise doit compter moins de 11 salariés à sa création
- Vous devez détenir un savoir-faire spécifique et le prouver par un diplôme (CAP, BEP, etc.) ou une qualification professionnelle
références:
Comment savoir si votre activité est artisanale ?: 'https://entreprendre.service-public.fr/vosdroits/F32887/personnalisation/resultat?lang=&quest0=1&quest=#fiche-item-aria-2situation1'
liste des activités artisanales: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/activites-artisanales-0
- Votre activité doit faire partie de la liste officielle des métiers de l'artisanat ou de la liste officielle des métiers d'artisanat d'art
- Votre entreprise doit compter moins de 11 salariés à sa création
- Vous devez détenir un savoir-faire spécifique et le prouver par un diplôme (CAP, BEP, etc.) ou une qualification professionnelle
références:
Comment savoir si votre activité est artisanale ?: 'https://entreprendre.service-public.fr/vosdroits/F32887/personnalisation/resultat?lang=&quest0=1&quest=#fiche-item-aria-2situation1'
liste des activités artisanales: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/activites-artisanales-0
entreprise . activité . service ou vente:
libérale . réglementée:
question: Est-ce une activité libérale réglementée ?
par défaut: non
description: |
Certaines professions libérales ont été classées dans le domaine libéral par la loi et leur titre est protégé. Leurs membres doivent respecter des règles déontologiques strictes et sont soumis au contrôle de leurs instances professionnelles (ordre, chambre, ou syndicat).
> Exemples de professions règlementées : architecte, avocat, infirmier, médecin...
Il s'agit des autres personnes qui pratiquent, une science ou un art et dont l'activité intellectuelle joue le principal rôle. Leurs recettes doivent représenter la rémunération d'un travail personnel, sans lien de subordination, tout en engageant leur responsabilité technique et morale.
> Exemples de professions non-règlementées : développeur, historien, urbaniste...
références:
Liste des activités libérales: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/liste-professions-liberales
## =======================
## | New activité modèle |
## =======================
entreprise . activités:
experimental: oui
non applicable si: mixte
titre: nature de l'activité
question: Quelle(s) sont les activité(s) de votre entreprise ?
description: |
Votre type d'activité va déterminer une grande partie des calculs de cotisations, contributions et impôt.
### Pluri-activité
Il est possible d'avoir plusieurs activités différente pour une même entreprise.
Par exemple, une boulangerie (activité artisanale) peut avoir un rayon épicerie (activité commerciale).
plusieurs possibilités:
- artisanale
- commerciale
- agricole
- libérale
références:
Vérifier la nature de son activité: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/verifier-nature-son-activite
Comment déterminer la nature de l'activité d'une entreprise ?: https://entreprendre.service-public.fr/vosdroits/F32887/personnalisation/resultat
Spécifiquement pour les auto-entrepreneurs: https://www.shine.fr/blog/categorie-activite-auto-entrepreneur
avec:
libérale:
par défaut:
variable manquante: entreprise . activités
valeur: non
question: Avez-vous une activité libérale ?
description: |
Une activité libérale consiste en des prestations de services de nature principalement intellectuelles.
Vous rendez un service payant.
Vous devez avoir un diplôme ou une qualification professionnelle dans le domaine.
références:
Comment savoir si votre entreprise est libérale ?: https://entreprendre.service-public.fr/vosdroits/F32887/personnalisation/resultat?lang=&quest0=1&quest=#fiche-item-aria-3situation1
fiche Wikipedia: https://fr.wikipedia.org/wiki/Profession_lib%C3%A9rale
liste des professions libérales: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/liste-professions-liberales
commerciale:
par défaut:
variable manquante: entreprise . activités
valeur: non
question: Avez-vous une activité commerciale ?
description: |
Votre activité est commerciale si vous êtes dans l'un des cas suivants :
- Vous achetez des biens ou des marchandises pour les revendre dans un but lucratif : Qui rapporte de l'argent, du profit, des bénéfices
- Vous vendez des services dans les domaines de l'hôtellerie, la restauration, les transports, les spectacles, la sécurité, l'informatique, le design, etc.
- Vous avez une activité de location de biens, de marchandises ou de services
références:
Comment savoir si votre activité est commerciale: https://entreprendre.service-public.fr/vosdroits/F32887/personnalisation/resultat?lang=&quest0=1&quest=#fiche-item-aria-1situation1
artisanale:
par défaut:
variable manquante: entreprise . activités
valeur: non
question: Avez-vous une activité artisanale ?
description: |
Pour être artisan, vous devez répondre aux 3 critères suivants :
- Votre activité doit faire partie de la liste officielle des métiers de l'artisanat ou de la liste officielle des métiers d'artisanat d'art
- Votre entreprise doit compter moins de 11 salariés à sa création
- Vous devez détenir un savoir-faire spécifique et le prouver par un diplôme (CAP, BEP, etc.) ou une qualification professionnelle
références:
Comment savoir si votre activité est artisanale ?: 'https://entreprendre.service-public.fr/vosdroits/F32887/personnalisation/resultat?lang=&quest0=1&quest=#fiche-item-aria-2situation1'
liste des activités artisanales: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/activites-artisanales-0
agricole:
non applicable si: catégorie juridique . EI . auto-entrepreneur
par défaut:
variable manquante: entreprise . activités
valeur: non
question: Avez-vous une activité agricole ?
description: |
Une activité est agricole si elle dépend du cycle biologique végétal ou animal dans le cadre d'une exploitation ou d'une production.
Ce critère est déterminant et s'applique quelle que soit la forme juridique de votre exploitation (entreprise individuelle, société, groupement agricole).
Il peut s'agir également d'une activité qui prolonge l'activité de production agricole. Ainsi les activités suivantes sont considérées comme agricoles :
- Activités de "tourisme à la ferme" (gîtes, chambres d'hôtes, tables d'hôtes, fermes auberges, etc.) ayant pour support l'exploitation agricole
- Activités de préparation et d'entraînement des chevaux et poneys domestiques en vue de leur exploitation : courses, concours, cours, etc.
- Production et commercialisation de biogaz, d'électricité et de chaleur par la méthanisation, lorsqu'elle est issue en majorité (plus de 50 %) de matières provenant d'exploitations agricoles
- Transformation et vente directe des produits issus
références:
Comment savoir si votre activité est agricole ?: 'https://entreprendre.service-public.fr/vosdroits/F32887/personnalisation/resultat?lang=&quest0=1&quest=#fiche-item-aria-4situation1'
libérale . réglementée:
question: Est-ce une activité libérale réglementée ?
par défaut: non
description: |
Certaines professions libérales ont été classées dans le domaine libéral par la loi et leur titre est protégé. Leurs membres doivent respecter des règles déontologiques strictes et sont soumis au contrôle de leurs instances professionnelles (ordre, chambre, ou syndicat).
> Exemples de professions règlementées : architecte, avocat, infirmier, médecin...
Il s'agit des autres personnes qui pratiquent, une science ou un art et dont l'activité intellectuelle joue le principal rôle. Leurs recettes doivent représenter la rémunération d'un travail personnel, sans lien de subordination, tout en engageant leur responsabilité technique et morale.
> Exemples de professions non-règlementées : développeur, historien, urbaniste...
références:
Liste des activités libérales: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/liste-professions-liberales
commerciale . agent commercial:
description: |
Lagent commercial négocie et/ou conclut des contrats de vente, dachat, de location ou de prestation de services pour le compte dun tiers (producteur, industriel, commerçant, etc.). Il sagit donc dun intermédiaire de commerce qui, contrairement au VRP (vendeur, représentant et placier), est un professionnel indépendant.
question: Exercez-vous votre activité en tant qu'agent commercial ?
par défaut: non
références:
'Devenir agent commercial : pourquoi et comment obtenir ce statut ?': https://www.economie.gouv.fr/entreprises/agent-commercial-immatriculation
'Agent commercial - Réglementation': https://bpifrance-creation.fr/activites-reglementees/agent-commercial
# entreprise . activités . principale:
# une possibilité:
# choix obligatoire: oui
# possibilités:
# - artisanale
# - commerciale
# - agricole
# - libérale
# variations:
# - si:
# toutes ces conditions:
# - activités . artisanale
# - activités . commerciale = non
# - activités . agricole = non
# - activités . libérale = non
# alors: "'artisanale'"
# - si:
# toutes ces conditions:
# - activités . commerciale
# - activités . artisanale = non
# - activités . agricole = non
# - activités . libérale = non
# alors: "'commerciale'"
# - si:
# toutes ces conditions:
# - activités . agricole
# - activités . artisanale = non
# - activités . commerciale = non
# - activités . libérale = non
# alors: "'agricole'"
# - si:
# toutes ces conditions:
# - activités . libérale
# - activités . agricole = non
# - activités . artisanale = non
# - activités . commerciale = non
# alors: "'libérale'"
# - sinon:
# variations:
# - si: activités . libérale
# par défaut: "'libérale'"
# - si: activités . agricole
# par défaut: "'agricole'"
# - si: activités . commerciale
# par défaut: "'artisanale'"
# - sinon:
# par défaut: "'commerciale'"
# références:
# Vérifier la nature de son activité: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/verifier-nature-son-activite
# Comment déterminer la nature de l'activité d'une entreprise ?: https://entreprendre.service-public.fr/vosdroits/F32887/personnalisation/resultat
# Spécifiquement pour les auto-entrepreneurs: https://www.shine.fr/blog/categorie-activite-auto-entrepreneur
# avec:
# artisanale:
# applicable si: activités . artisanale
# valeur: activités . principale = "'artisanale'"
# commerciale:
# applicable si: activités . commerciale
# valeur: activités . principale = "'commerciale'"
# agricole:
# applicable si: activités . agricole
# valeur: activités . principale = "'agricole'"
# libérale:
# applicable si: activités . libérale
# valeur: activités . principale = "'libérale'"
entreprise . activités . service ou vente:
experimental: oui
non applicable si: revenus mixtes
applicable si:
une de ces conditions:
- activité . nature = 'artisanale'
- activité . nature = 'commerciale'
question: Quelle est le type d'activité de l'entreprise ?
- activités . artisanale
- activités . commerciale
question: Quelle est le type d'activité principale de l'entreprise ?
formule:
une possibilité:
choix obligatoire: oui
@ -77,33 +284,37 @@ entreprise . activité . service ou vente:
- service
par défaut: "'vente'"
entreprise . activité . service ou vente . vente:
titre: vente de biens, restauration ou hébergement
description: |
Il sagit de toute opération comportant transfert de propriété d'un bien
corporel (c'est-à-dire un bien ayant une existence matérielle), ainsi que
toutes les activités de restauration et d'hébergement.
références:
page impots.gouv.fr: https://www.impots.gouv.fr/portail/professionnel/achatvente-de-biens
avec:
vente:
titre: vente de biens, restauration ou hébergement
description: |
Il sagit de toute opération comportant transfert de propriété d'un bien
corporel (c'est-à-dire un bien ayant une existence matérielle), ainsi que
toutes les activités de restauration et d'hébergement.
références:
page impots.gouv.fr: https://www.impots.gouv.fr/portail/professionnel/achatvente-de-biens
entreprise . activité . service ou vente . service:
titre: prestation de service
description: |
Il sagit de toute opération ne comportant pas de transfert de propriété de
biens corporels (c'est-à-dire ayant une existence matérielle).
service:
titre: prestation de service
description: |
Il sagit de toute opération ne comportant pas de transfert de propriété de
biens corporels (c'est-à-dire ayant une existence matérielle).
références:
page impots.gouv.fr: https://www.impots.gouv.fr/portail/professionnel/prestations-entre-assujettis
références:
page impots.gouv.fr: https://www.impots.gouv.fr/portail/professionnel/prestations-entre-assujettis
entreprise . activités . commerciale . débit de tabac:
experimental: oui
question: Exercez-vous une activité de vente de tabac ?
par défaut: non
entreprise . activité . mixte:
entreprise . activités . revenus mixtes:
experimental: oui
titre: Activités mixtes
applicable si: imposition . régime . micro-entreprise
question: Votre entreprise a-t-elle plusieurs types d'activités ?
question: Votre entreprise a-t-elle des activités avec des types de revenus différents ?
par défaut: non
description: |
Il est possible d'avoir plusieurs activités avec des types de revenus
différents pour une même entreprise.
Il est possible des activités avec des types de revenus différents pour une même entreprise.
Par exemple, une entreprise de plomberie qui facture l'achat et la pose d'un
robinet a une partie de son chiffre d'affaires en vente de materiel (le robinet)
@ -118,44 +329,25 @@ entreprise . activité . mixte:
Si votre entreprise a des activités correspondants à plusieurs catégories de
revenus, répondez oui à cette question.
entreprise . activité . mixte . proportions:
description: Part des différentes activités dans le chiffre d'affaires
titre: proportion activité
unité: '%'
somme:
- nom: service BIC
variations:
- si: activité . nature = 'libérale'
alors: 0%
- sinon: 50%
- nom: service BNC
variations:
- si: activité . nature = 'libérale'
alors: 2 / 3
- sinon: 0%
- nom: vente restauration hébergement
variations:
- si: activité . nature = 'libérale'
alors: 1 / 3
- sinon: 50%
note: Il appartient à l'utilisateur de bien vérifier que la somme des trois pourcentages renseignés vaut 100%.
entreprise . activité . nature . libérale . réglementée:
question: Est-ce une activité libérale réglementée ?
par défaut: non
description: |
Certaines professions libérales ont été classées dans le domaine libéral par la loi et leur titre est protégé. Leurs membres doivent respecter des règles déontologiques strictes et sont soumis au contrôle de leurs instances professionnelles (ordre, chambre, ou syndicat).
> Exemples de professions règlementées : architecte, avocat, infirmier, médecin...
Il s'agit des autres personnes qui pratiquent, une science ou un art et dont l'activité intellectuelle joue le principal rôle. Leurs recettes doivent représenter la rémunération d'un travail personnel, sans lien de subordination, tout en engageant leur responsabilité technique et morale.
> Exemples de professions non-règlementées : développeur, historien, urbaniste...
références:
Liste des activités libérales: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/liste-professions-liberales
entreprise . activité . débit de tabac:
experimental: oui
applicable si: activité . nature = 'commerciale'
question: Exercez-vous une activité de vente de tabac ?
par défaut: non
avec:
proportions:
description: Part des différentes activités dans le chiffre d'affaires
titre: proportion activité
unité: '%'
somme:
- nom: service BIC
variations:
- si: activité . nature . libérale
alors: 0%
- sinon: 50%
- nom: service BNC
variations:
- si: activité . nature . libérale
alors: 2 / 3
- sinon: 0%
- nom: vente restauration hébergement
variations:
- si: activité . nature . libérale
alors: 1 / 3
- sinon: 50%
note: Il appartient à l'utilisateur de bien vérifier que la somme des trois pourcentages renseignés vaut 100%.

View File

@ -1,45 +1,99 @@
entreprise . catégorie juridique:
description: |
Les catégories juridiques accessibles via l'API SIRENE
par défaut: non
question: Quelle est la catégorie juridique ?
# description: Les catégories juridiques accessibles via l'API SIRENE
# par défaut: non
note: On se base ici sur les catégories juridiques définies par l'INSEE
références:
liste des catégories juridique de l'INSEE: https://www.insee.fr/fr/information/2028129
une possibilité:
choix obligatoire: oui
possibilités:
- EI
- EI . auto-entrepreneur
- SARL
- SARL . unipersonnelle
- SA à conseil d'administration
- SA à directoire
- SNC
- SAS
- SAS . unipersonnelle
- SELARL
- SELAS
- autre personne morale immatriculée au RCS
- autre
références:
liste des catégories juridique de l'INSEE: https://www.insee.fr/fr/information/2028129
note: On se base ici sur les catégories juridiques définies par l'INSEE
meta:
affichage: radio
### (niveau 1 code 1) Entrepreneur individuel ###
entreprise . catégorie juridique . EI:
titre: 'EI ou EIRL'
valeur: catégorie juridique = 'EI'
titre: Entreprise Individuelle
valeur:
une de ces conditions:
- catégorie juridique = 'EI'
- catégorie juridique = 'EI . auto-entrepreneur'
entreprise . catégorie juridique . EI . auto-entrepreneur:
titre: Micro/Auto-Entrepreneur
question: Êtes-vous auto-entrepreneur ?
par défaut:
nom: défaut
valeur: oui
valeur: catégorie juridique = 'EI . auto-entrepreneur'
# par défaut:
# nom: défaut
# valeur: oui
remplace:
- règle: imposition . régime
par: "'micro-entreprise'"
- règle: entreprise . imposition
par: "'IR'"
### (niveau 1 code 5) Société commerciale ###
entreprise . catégorie juridique . SARL:
titre: 'EURL ou SARL'
valeur: catégorie juridique = 'SARL'
titre: Société À Responsabilité Limitée (SARL)
# titre: EURL ou SARL
valeur:
une de ces conditions:
- catégorie juridique = 'SARL'
- catégorie juridique = 'SARL . unipersonnelle'
entreprise . catégorie juridique . SARL . unipersonnelle:
titre: EURL
titre: Entreprise Unipersonnelle à Responsabilité Limitée (EURL ou SARL unipersonnelle)
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
# par défaut: oui
valeur: catégorie juridique = 'SARL . unipersonnelle'
entreprise . catégorie juridique . SA à conseil d'administration:
titre: Société Anonyme à conseil d'administration
valeur: catégorie juridique = 'SA à conseil d'administration'
entreprise . catégorie juridique . SA à directoire:
titre: Société Anonyme à directoire
valeur: catégorie juridique = 'SA à directoire'
entreprise . catégorie juridique . SNC:
titre: Société en Nom Collectif (SNC)
valeur: catégorie juridique = 'SNC'
entreprise . catégorie juridique . SAS:
titre: Société par Actions Simplifiée (SAS)
# titre: SASU ou SAS
valeur:
une de ces conditions:
- catégorie juridique = 'SAS'
- catégorie juridique = 'SAS . unipersonnelle'
entreprise . catégorie juridique . SAS . unipersonnelle:
titre: Société par Actions Simplifiée Unipersonnelle (SASU)
question: Votre entreprise est-elle une SASU ?
# par défaut: oui
valeur: catégorie juridique = 'SAS . unipersonnelle'
### (niveau 1 code 6) Autre personne morale immatriculée au RCS ###
entreprise . catégorie juridique . SELARL:
titre: Société d'Exercice Libéral A Responsabilité Limitée (SELARL)
valeur: catégorie juridique = 'SELARL'
remplace:
- règle: entreprise . activité . nature
@ -48,6 +102,7 @@ entreprise . catégorie juridique . SELARL:
par: oui
entreprise . catégorie juridique . SELAS:
titre: Société d'Exercice Libéral par Actions Simplifiées (SELAS)
valeur: catégorie juridique = 'SELAS'
remplace:
- règle: entreprise . activité . nature
@ -55,14 +110,9 @@ entreprise . catégorie juridique . SELAS:
- règle: entreprise . activité . nature . libérale . réglementée
par: oui
entreprise . catégorie juridique . SAS:
titre: 'SASU ou SAS'
valeur: catégorie juridique = 'SAS'
entreprise . catégorie juridique . SAS . unipersonnelle:
titre: 'SASU'
question: Votre entreprise est-elle une SASU ?
par défaut: oui
entreprise . catégorie juridique . autre personne morale immatriculée au RCS:
titre: autre personne morale immatriculée au RCS
valeur: catégorie juridique = 'autre personne morale immatriculée au RCS'
entreprise . catégorie juridique . autre:
valeur: catégorie juridique = 'autre'

View File

@ -0,0 +1,104 @@
entreprise . coût formalités . création:
titre: Coût de création d'une entreprise
somme:
- RCS . création
- CMA . création
- RSAC . création
entreprise . coût formalités . RCS:
titre: Les tarifs liés au Registre du commerce et des sociétés
avec:
création:
variations:
- si: catégorie juridique . EI . auto-entrepreneur
alors: 0
- si: catégorie juridique . EI
alors:
applicable si: activités . commerciale
valeur: 20.07
- si:
une de ces conditions:
- catégorie juridique . SARL
- catégorie juridique . SAS
# TODO ???
alors: 24.52
- sinon: 49.04
références:
Article A743-10 du Code de commerce: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000041675936
entreprise . coût formalités . CMA:
titre: Les tarifs liés au Chambre des Métiers et de l'Artisanat
applicable si: activités . artisanale
avec:
création:
variations:
- si: RCS . création > 0€
alors: 15
- sinon: 45
références:
Prestation délivrée par la chambre de métiers et de lartisanat: https://formalites.entreprises.gouv.fr/tarifs.php#art19
entreprise . coût formalités . RSAC:
titre: Les tarifs liés au Registre Spécial des Agents Commerciaux
applicable si: activités . commerciale . agent commercial
avec:
création: 6.69
entreprise . coût formalités . création . JAL:
titre: Les tarifs liés au Journal d'annonce légal
# Les JAL ont une logique qui dépend beaucoup du prestataire.
# Les montant forfaitaires existent dans la loi, mais aucun moyen de savoir si ils sont beaucoup utilisés.
# Peut-être mettre une fourchette dans un premier temps (comme sur service-public) ?
# Fun fact : la presse quotidienne régionale est financée à 50% par cette mane
entreprise . coût formalités . création . BODACC:
titre: Les tarifs liés au Bulletin officiel des annonces civiles et commerciales
#
# entreprise . coût formalités . création . x:
# RCS:
# Différence entre immatriculation principale et immatriculation par création d'une entreprise (39 vs 41) :
# la deuxième est une réduction de la formalité pour la création de société commerciale (pas concernée les sociétés agricole, SELARL, etc)
# Société civile, société agricole, SELARL, etc -> pas de réduction pour la création, seulement société commerciale et artisanale ;
# toute société doit être immatriculée au RCS
# Pas de JAL pour les sociétés agricoles ;
# Pas de frais de BODACC pour la création ;
# Pas de frais liés à l'INPI pour la création ;
# Uniquement frais de greffe + JAL ;
# coût HT ;
# Plus de déclarations d'affectation du patrimoine d'EIRL.
# Bénéficiaire effectif :
# montant à payer en plus ;
# détenir un pourcentage minimale de droit de vote ou de capital social de 25% ;
# ou si personne ne dépasse le seul, c'est le représentant ;
# Agents commerciaux :
# A la fois personne physique non immatriculé au RCS et société imatriculé au RCS
# Agents commerciaux :
# A la fois personne physique non immatriculé au RCS
entreprise . coût formalités . création . frais de transmissions:
# description:
# Frais de transmissions
# Désormais, tout est sur guichet unique, dématerialisé, donc pas de frais transmission possible
# Par contre, le greffe peut envoyer des pièces, facture débourt postaux, 0.97€ HT (à vérifier)
# Si RCS est un succès, le greffe doit vous envoyer des kbis, ces frais postaux sont inclus dans la prestation principale
# Demande de complément facturé en cas de pièce manquante chez le RCS mais pas chez les artisans.
# Auto-entreprise
# pas de frais de création
# plus de formation obligatoire
# frais d'immatriculation de cessation et radiation sont gratuit
# Mais
# frais de rejet en cas de mauvaise déclaration (3 €)
# normalement pas censé arrivé via le guichet unique
# mais ça peut arriver pour les micro entrepreneur réglementée (hors libérale)
# exemple : taxi
# Autre
# Double immatriculation possible (artisan + commerçant), dans ce cas, réduction artisan

View File

@ -86,13 +86,13 @@ entreprise . chiffre d'affaires . vente restauration hébergement:
question: Quel est le chiffre d'affaires issu de la vente de biens, restauration ou hébergement ?
unité: €/an
variations:
- si: activité . mixte
- si: activités . revenus mixtes
alors:
produit:
assiette: chiffre d'affaires
taux: activité . mixte . proportions . vente restauration hébergement
taux: activités . revenus mixtes . proportions . vente restauration hébergement
- sinon:
applicable si: activité . service ou vente = 'vente'
applicable si: activités . service ou vente = 'vente'
valeur: chiffre d'affaires
arrondi: oui
plancher: 0€/an
@ -132,13 +132,13 @@ entreprise . chiffre d'affaires . service BIC:
**Exemples** : transports, service à la personne, réparation etc.
par défaut: 0€/an
variations:
- si: activité . mixte
- si: activités . revenus mixtes
alors:
produit:
assiette: chiffre d'affaires
taux: activité . mixte . proportions . service BIC
taux: activités . revenus mixtes . proportions . service BIC
- sinon:
applicable si: activité . service ou vente = 'service'
applicable si: activités . service ou vente = 'service'
valeur: chiffre d'affaires
références:
service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F32919
@ -159,13 +159,13 @@ entreprise . chiffre d'affaires . service BNC:
Les revenus tirés de ce chiffre d'affaires sont imposable au régime BNC (bénéfices non commerciaux)
variations:
- si: activité . mixte
- si: activités . revenus mixtes
alors:
produit:
assiette: chiffre d'affaires
taux: activité . mixte . proportions . service BNC
taux: activités . revenus mixtes . proportions . service BNC
- sinon:
applicable si: activité . nature = 'libérale'
applicable si: activité . nature . libérale
valeur: chiffre d'affaires
références:
@ -411,7 +411,7 @@ entreprise . TVA:
**À noter** : il ne faut pas confondre l'exonération de TVA (qui dépend de votre activité) et le régime en franchise de base (qui dépend de votre chiffre d'affaires).
references:
références:
Les régimes d'imposition à la TVA: https://www.impots.gouv.fr/professionnel/les-regimes-dimposition-la-tva
Tout savoir sur la TVA: https://entreprendre.service-public.fr/vosdroits/N13445
Liste des activités exonérées (Article 61 du Code général des impôts): https://www.legifrance.gouv.fr/codes/id/LEGISCTA000006179649/

View File

@ -281,7 +281,7 @@ entreprise . imposition . régime . micro-entreprise . revenu abattu:
plancher:
nom: plancher abattement
variations:
- si: entreprise . activité . mixte
- si: entreprise . activités . revenus mixtes
alors: 610 €/an
- sinon: 305 €/an

View File

@ -2,7 +2,7 @@
dirigeant . indépendant . PL:
titre: Profession libérale
applicable si: entreprise . activité . nature = 'libérale'
rend non applicable: entreprise . activité . mixte
rend non applicable: entreprise . activités . revenus mixtes
formule: oui
dirigeant . indépendant . PL . métier:

View File

@ -500,7 +500,7 @@ salarié . cotisations . AGS:
Cette cotisations permet de garantir les salaires des employés en cas de difficultés de l'entreprise (sauvegarde, redressement, liquidation). Elle paie les salaires sur les 60 derniers jours de travail. Elle permet de payer des préavis et des indemnités de fin de contrat.
cotisation:
branche: assurance chômage
references:
références:
calcul: https://www.service-public.fr/professionnels-entreprises/vosdroits/F31409
produit:
assiette: cotisations . assiette

View File

@ -550,7 +550,7 @@ salarié . rémunération . frais professionnels . trajets domicile travail . tr
Remboursement des frais de transport: https://www.service-public.fr/particuliers/vosdroits/F19846/personnalisation/resultat?lang=&quest0=0
Prise en charge obligatoire des frais de transport public: https://www.urssaf.fr/portail/home/employeur/calculer-les-cotisations/les-elements-a-prendre-en-compte/les-frais-professionnels/les-frais-de-transport/trajet-domicilelieu-de-travail/prise-en-charge-obligatoire-des.html#FilAriane
suggestions:
Navigo: 75 €/mois
Navigo: 84.10 €/mois
Técély: 65 €/mois
RTM: 40 €/mois
Tisséo: 42.50 €/mois

View File

@ -17,11 +17,11 @@ import { FromTop } from './ui/animate'
import { useEngine } from './utils/EngineContext'
const proportions = {
'entreprise . activité . mixte . proportions . service BIC':
'entreprise . activités . revenus mixtes . proportions . service BIC':
"entreprise . chiffre d'affaires . service BIC",
'entreprise . activité . mixte . proportions . service BNC':
'entreprise . activités . revenus mixtes . proportions . service BNC':
"entreprise . chiffre d'affaires . service BNC",
'entreprise . activité . mixte . proportions . vente restauration hébergement':
'entreprise . activités . revenus mixtes . proportions . vente restauration hébergement':
"entreprise . chiffre d'affaires . vente restauration hébergement",
} as const
@ -52,10 +52,10 @@ export default function ChiffreAffairesActivitéMixte({
onUpdateSituation={clearChiffreAffaireMixte}
dottedName={dottedName}
/>
<WhenApplicable dottedName="entreprise . activité . mixte">
<WhenApplicable dottedName="entreprise . activités . revenus mixtes">
<FromTop>
<ActivitéMixte />
<Condition expression="entreprise . activité . mixte">
<Condition expression="entreprise . activités . revenus mixtes">
{Object.values(proportions).map((chiffreAffaires) => (
<SimulationGoal
small
@ -138,9 +138,10 @@ function useAdjustProportions(CADottedName: DottedName) {
function ActivitéMixte() {
const dispatch = useDispatch()
const situation = useSelector(situationSelector)
const rule = useEngine().getRule('entreprise . activité . mixte')
const rule = useEngine().getRule('entreprise . activités . revenus mixtes')
const defaultChecked =
useEngine().evaluate('entreprise . activité . mixte').nodeValue === true
useEngine().evaluate('entreprise . activités . revenus mixtes')
.nodeValue === true
const onMixteChecked = useCallback(
(checked: boolean) => {
dispatch(
@ -148,7 +149,9 @@ function ActivitéMixte() {
Object.values(proportions).reduce(
(acc, dottedName) => ({ ...acc, [dottedName]: undefined }),
{
'entreprise . activité . mixte': checked ? 'oui' : 'non',
'entreprise . activités . revenus mixtes': checked
? 'oui'
: 'non',
}
)
)

View File

@ -5,16 +5,7 @@ import {
RuleNode,
serializeEvaluation,
} from 'publicodes'
import {
Fragment,
Key,
createContext,
useCallback,
useContext,
useEffect,
useRef,
useState,
} from 'react'
import { Fragment, Key, useCallback, useEffect, useRef, useState } from 'react'
import { Trans, useTranslation } from 'react-i18next'
import styled from 'styled-components'
@ -58,12 +49,6 @@ export type Choice = RuleNode & {
canGiveUp?: boolean
}
// TODO : This is hacky, the logic to hide/disable some of the possible answer
// to a mutliple-choice question must be handled by Publicodes. We use a React
// context instead of passing down props to avoid polluting to much code with
// this undesirable option.
export const HiddenOptionContext = createContext<Array<DottedName>>([])
export function MultipleAnswerInput<Names extends string = DottedName>({
choice,
type = 'radio',
@ -162,89 +147,84 @@ function RadioChoice<Names extends string = DottedName>({
rootDottedName: Names
type: 'radio' | 'toggle'
}) {
const hiddenOptions = useContext(HiddenOptionContext)
const { t } = useTranslation()
return (
<>
{choice.children.map((node) => {
return (
<Fragment key={node.dottedName}>
{' '}
{hiddenOptions.includes(
node.dottedName as DottedName
) ? null : 'children' in node ? (
<div
role="group"
aria-labelledby={
node.dottedName.replace(/\s|\./g, '') + '-legend'
{choice.children.map((node) => (
<Fragment key={node.dottedName}>
{' '}
{'children' in node ? (
<div
role="group"
aria-labelledby={
node.dottedName.replace(/\s|\./g, '') + '-legend'
}
id={`radio-input-${node.dottedName.replace(
/\s|\./g,
''
)}-${rootDottedName.replace(/\s|\./g, '')}`}
css={`
margin-top: -1rem;
`}
>
<H4 as={H3} id={node.dottedName + '-legend'}>
{node.title}
</H4>
<Spacing lg />
<StyledSubRadioGroup>
<RadioChoice
// eslint-disable-next-line jsx-a11y/no-autofocus
autoFocus={autoFocus}
defaultValue={defaultValue}
choice={node}
rootDottedName={rootDottedName}
type={type}
/>
</StyledSubRadioGroup>
</div>
) : (
<span>
<Radio
// eslint-disable-next-line jsx-a11y/no-autofocus
autoFocus={
// Doit autoFocus si correspond à la valeur par défaut
(defaultValue &&
defaultValue ===
`'${relativeDottedName(
rootDottedName,
node.dottedName
)}'` &&
autoFocus) ||
// Sinon doit autoFocus automatiquement
autoFocus
}
id={`radio-input-${node.dottedName.replace(
value={`'${relativeDottedName(
rootDottedName,
node.dottedName
)}'`}
id={`radio-input-${relativeDottedName(
rootDottedName,
node.dottedName
).replace(/\s|\./g, '')}-${rootDottedName.replace(
/\s|\./g,
''
)}-${rootDottedName.replace(/\s|\./g, '')}`}
css={`
margin-top: -1rem;
`}
)}`}
>
<H4 as={H3} id={node.dottedName + '-legend'}>
{node.title}
</H4>
<Spacing lg />
<StyledSubRadioGroup>
<RadioChoice
// eslint-disable-next-line jsx-a11y/no-autofocus
autoFocus={autoFocus}
defaultValue={defaultValue}
choice={node}
rootDottedName={rootDottedName}
type={type}
/>
</StyledSubRadioGroup>
</div>
) : (
<span>
<Radio
// eslint-disable-next-line jsx-a11y/no-autofocus
autoFocus={
// Doit autoFocus si correspond à la valeur par défaut
(defaultValue &&
defaultValue ===
`'${relativeDottedName(
rootDottedName,
node.dottedName
)}'` &&
autoFocus) ||
// Sinon doit autoFocus automatiquement
autoFocus
}
value={`'${relativeDottedName(
rootDottedName,
node.dottedName
)}'`}
id={`radio-input-${relativeDottedName(
rootDottedName,
node.dottedName
).replace(/\s|\./g, '')}-${rootDottedName.replace(
/\s|\./g,
''
)}`}
>
{node.title}{' '}
{node.rawNode.icônes && <Emoji emoji={node.rawNode.icônes} />}
</Radio>{' '}
{type !== 'toggle' && (
<ExplicableRule
light
dottedName={node.dottedName as DottedName}
aria-label={`En savoir plus sur ${node.title}`}
/>
)}
</span>
)}
</Fragment>
)
})}
{node.title}{' '}
{node.rawNode.icônes && <Emoji emoji={node.rawNode.icônes} />}
</Radio>{' '}
{type !== 'toggle' && (
<ExplicableRule
light
dottedName={node.dottedName as DottedName}
aria-label={`En savoir plus sur ${node.title}`}
/>
)}
</span>
)}
</Fragment>
))}
{choice.canGiveUp && (
<>
<Radio value={'non'}>{t('Aucun')}</Radio>

View File

@ -50,11 +50,13 @@ export default function Conversation({
const dispatch = useDispatch()
const engine = useEngine()
const currentQuestion = useNextQuestions(engines)[0]
const situation = useSelector(situationSelector)
const currentQuestionIsAnswered = !(
currentQuestion in useMissingVariables({ engines: engines ?? [engine] })
)
const previousAnswers = useSelector(answeredQuestionsSelector)
const { t } = useTranslation()
useEffect(() => {
if (currentQuestion && !currentQuestionIsAnswered) {
@ -72,8 +74,11 @@ export default function Conversation({
dispatch(goToQuestion(previousAnswers.slice(-1)[0]))
}
const onChange = (value: PublicodesExpression | undefined) => {
dispatch(answerQuestion(currentQuestion, value))
const onChange = (
value: PublicodesExpression | undefined,
dottedName: DottedName
) => {
dispatch(answerQuestion(dottedName, value))
}
return (

View File

@ -0,0 +1,73 @@
import { DottedName } from 'modele-social'
import Engine, { PublicodesExpression, RuleNode } from 'publicodes'
import { Checkbox } from '@/design-system'
import { Emoji } from '@/design-system/emoji'
import { ExplicableRule } from './Explicable'
import { InputProps } from './RuleInput'
export function MultipleChoicesInput<Names extends string = DottedName>(
props: Omit<InputProps<Names>, 'onChange'> & {
choices: Array<RuleNode>
onChange: (value: PublicodesExpression, name: Names) => void
}
) {
const handleChange = (isSelected: boolean, dottedName: Names) => {
// As soon as one option is selected, all the others are not missing anymore
return props.choices.forEach((choice) => {
const value =
dottedName === choice.dottedName
? isSelected
: props.engine.evaluate(choice).nodeValue
props.onChange(value ? 'oui' : 'non', choice.dottedName)
})
}
return (
<>
{props.choices.map((node) => (
<>
<CheckBoxRule
key={node.dottedName}
node={node}
onChange={(isSelected) =>
handleChange(isSelected, node.dottedName as Names)
}
engine={props.engine}
/>
<br />
</>
))}
</>
)
}
type CheckBoxRuleProps = {
node: RuleNode
engine: Engine
onChange: (isSelected: boolean) => void
}
function CheckBoxRule({ node, engine, onChange }: CheckBoxRuleProps) {
const evaluation = engine.evaluate(node)
if (evaluation.nodeValue === null) {
return null
}
return (
<>
<Checkbox
defaultSelected={evaluation.nodeValue === true}
id={`checkbox-input-${node.dottedName.replace(/\s|\./g, '')}`}
label={node.title}
onChange={(isSelected) => onChange(isSelected)}
/>
{node.rawNode.icônes && <Emoji emoji={node.rawNode.icônes} />}{' '}
<ExplicableRule
light
dottedName={node.dottedName as DottedName}
aria-label={`En savoir plus sur ${node.title}`}
/>
</>
)
}

View File

@ -17,6 +17,7 @@ import { getMeta } from '@/utils'
import { Choice, MultipleAnswerInput, OuiNonInput } from './ChoicesInput'
import DateInput from './DateInput'
import { MultipleChoicesInput } from './MulipleChoicesInput'
import ParagrapheInput from './ParagrapheInput'
import TextInput from './TextInput'
import SelectPaysDétachement from './select/SelectPaysDétachement'
@ -53,13 +54,14 @@ type Props<Names extends string = DottedName> = Omit<
export type InputProps<Name extends string = string> = Omit<
Props<Name>,
'onChange'
'onChange' | 'engine'
> &
Pick<RuleNode, 'suggestions'> & {
question: RuleNode['rawNode']['question']
description: RuleNode['rawNode']['description']
value: EvaluatedNode['nodeValue']
onChange: (value: PublicodesExpression | undefined) => void
engine: Engine<Name>
}
export const binaryQuestion = [
@ -85,7 +87,7 @@ export default function RuleInput<Names extends string = DottedName>({
}: Props<Names>) {
const defaultEngine = useContext(EngineContext)
const engineValue = engine ?? defaultEngine
const engineValue = (engine ?? defaultEngine) as Engine<Names>
const rule = engineValue.getRule(dottedName)
const evaluation = engineValue.evaluate({ valeur: dottedName, ...modifiers })
@ -106,13 +108,24 @@ export default function RuleInput<Names extends string = DottedName>({
question: rule.rawNode.question,
suggestions: showSuggestions ? rule.suggestions : {},
autoFocus: shouldFocusField,
engine: engineValue,
...props,
// Les espaces ne sont pas autorisés dans un id, les points sont assimilés à une déclaration de class CSS par Cypress
id: props?.id?.replace(/\s|\./g, '') ?? dottedName.replace(/\s|\./g, ''),
}
const meta = getMeta<{ affichage?: string }>(rule.rawNode, {})
if (getVariant(engineValue.getRule(dottedName))) {
if (isMultiplePossibilities(engineValue, dottedName)) {
return (
<MultipleChoicesInput
{...commonProps}
choices={getMultiplePossibilitiesOptions(engineValue, dottedName)}
onChange={onChange}
/>
)
}
if (isOnePossibility(engineValue.getRule(dottedName))) {
const type =
inputType ??
(meta.affichage &&
@ -123,7 +136,7 @@ export default function RuleInput<Names extends string = DottedName>({
return (
<MultipleAnswerInput
{...commonProps}
choice={buildVariantTree(engineValue, dottedName)}
choice={getOnePossibilityOptions(engineValue, dottedName)}
type={type}
/>
)
@ -197,7 +210,7 @@ export default function RuleInput<Names extends string = DottedName>({
)
}
const getVariant = (node: RuleNode) =>
const isOnePossibility = (node: RuleNode) =>
reduceAST<false | (ASTNode & { nodeKind: 'une possibilité' })>(
(_, node) => {
if (node.nodeKind === 'une possibilité') {
@ -208,7 +221,7 @@ const getVariant = (node: RuleNode) =>
node
)
export const buildVariantTree = <Name extends string>(
export const getOnePossibilityOptions = <Name extends string>(
engine: Engine<Name>,
path: Name
): Choice => {
@ -216,7 +229,7 @@ export const buildVariantTree = <Name extends string>(
if (!node) {
throw new Error(`La règle ${path} est introuvable`)
}
const variant = getVariant(node)
const variant = isOnePossibility(node)
const canGiveUp =
variant &&
(!variant['choix obligatoire'] || variant['choix obligatoire'] === 'non')
@ -233,9 +246,33 @@ export const buildVariantTree = <Name extends string>(
)
.filter((node) => engine.evaluate(node).nodeValue !== null)
.map(({ dottedName }) =>
buildVariantTree(engine, dottedName as Name)
getOnePossibilityOptions(engine, dottedName as Name)
),
}
: null
) as Choice
}
type RuleWithMultiplePossibilities = RuleNode & {
rawNode: RuleNode['rawNode'] & {
'plusieurs possibilités'?: Array<string>
}
}
function isMultiplePossibilities<Name extends string>(
engine: Engine<Name>,
dottedName: Name
): boolean {
return !!(engine.getRule(dottedName) as RuleWithMultiplePossibilities)
.rawNode['plusieurs possibilités']
}
function getMultiplePossibilitiesOptions<Name extends string>(
engine: Engine<Name>,
dottedName: Name
): Array<RuleNode> {
return (
(engine.getRule(dottedName) as RuleWithMultiplePossibilities).rawNode[
'plusieurs possibilités'
] ?? []
).map((name) => engine.getRule(`${dottedName} . ${name}` as Name))
}

View File

@ -3969,7 +3969,7 @@ entreprise . activité . débit de tabac:
question.fr: Exercez-vous une activité de vente de tabac ?
titre.en: '[automatic] tobacco shop'
titre.fr: débit de tabac
entreprise . activité . mixte:
entreprise . activités . revenus mixtes:
description.en: >
[automatic] It is possible to have several activities with
different types of income for the same
@ -4028,7 +4028,7 @@ entreprise . activité . mixte:
question.fr: Votre entreprise a-t-elle plusieurs types d'activités ?
titre.en: '[automatic] Mixed activities'
titre.fr: Activités mixtes
entreprise . activité . mixte . proportions:
entreprise . activités . revenus mixtes . proportions:
description.en: '[automatic] Share of the different activities in the turnover'
description.fr: Part des différentes activités dans le chiffre d'affaires
note.en: '[automatic] It is up to the user to check that the sum of the three
@ -4147,12 +4147,12 @@ entreprise . activité . nature . libérale . réglementée:
question.fr: Est-ce une activité libérale réglementée ?
titre.en: '[automatic] regulated'
titre.fr: réglementée
entreprise . activité . service ou vente:
entreprise . activités . service ou vente:
question.en: '[automatic] What type of business is the company in?'
question.fr: Quelle est le type d'activité de l'entreprise ?
titre.en: '[automatic] service or sale'
titre.fr: service ou vente
entreprise . activité . service ou vente . service:
entreprise . activités . service ou vente . service:
description.en: >
[automatic] This is any transaction that does not involve the
transfer of ownership of tangible
@ -4163,7 +4163,7 @@ entreprise . activité . service ou vente . service:
biens corporels (c'est-à-dire ayant une existence matérielle).
titre.en: '[automatic] service delivery'
titre.fr: prestation de service
entreprise . activité . service ou vente . vente:
entreprise . activités . service ou vente . vente:
description.en: >
[automatic] It is any transaction involving the transfer of
ownership of a tangible asset (i.e., an asset with a physical existence), as

View File

@ -0,0 +1,43 @@
import Simulation, {
SimulationGoal,
SimulationGoals,
} from '@/components/Simulation'
export const CoutCreationEntreprise = () => {
return (
<>
{/* <Conversation engines={[engine]} /> */}
<Simulation showQuestionsFromBeginning>
{/* <SimulateurWarning simulateur="sasu" /> */}
<SimulationGoals
// toggles={<PeriodSwitch />}
legend=""
>
{/* <SimulationGoal dottedName="dirigeant . rémunération . totale" />
<SimulationGoal
editable={false}
small
dottedName="dirigeant . assimilé salarié . cotisations"
/>
<SimulationGoal dottedName="salarié . rémunération . net . à payer avant impôt" />
<SimulationGoal small editable={false} dottedName="impôt . montant" /> */}
{/* <SimulationGoal dottedName="coût création entreprise" /> */}
{/* <SimulationGoal dottedName="entreprise . activité . nature" /> */}
{/* <SimulationGoal dottedName="entreprise . activités . service ou vente" /> */}
<SimulationGoal
dottedName="entreprise . catégorie juridique"
editable={false}
/>
<SimulationGoal
dottedName="entreprise . activité . nature"
editable={false}
/>
<SimulationGoal
dottedName="entreprise . coût formalités . création"
editable={false}
/>
</SimulationGoals>
</Simulation>
</>
)
}

View File

@ -12,7 +12,6 @@ import Simulation, {
SimulationGoals,
} from '@/components/Simulation'
import StackedBarChart from '@/components/StackedBarChart'
import { HiddenOptionContext } from '@/components/conversation/ChoicesInput'
import Warning from '@/components/ui/WarningBlock'
import { useEngine } from '@/components/utils/EngineContext'
import { Radio, ToggleGroup } from '@/design-system/field'
@ -38,25 +37,23 @@ export default function DividendesSimulation() {
</Trans>
</Warning>
<Notifications />
<HiddenOptionContext.Provider value={['dirigeant . auto-entrepreneur']}>
<Simulation explanations={<DividendesExplanation />}>
<div
css={`
display: flex;
flex-wrap: wrap-reverse;
> * {
margin-top: 0.6rem;
}
justify-content: center;
<Simulation explanations={<DividendesExplanation />}>
<div
css={`
display: flex;
flex-wrap: wrap-reverse;
> * {
margin-top: 0.6rem;
}
justify-content: center;
@media (min-width: 590px) {
justify-content: space-between;
}
`}
></div>
<DividendesSimulationGoals />
</Simulation>
</HiddenOptionContext.Provider>
@media (min-width: 590px) {
justify-content: space-between;
}
`}
></div>
<DividendesSimulationGoals />
</Simulation>
</>
)
}

View File

@ -41,7 +41,7 @@ export const configAutoEntrepreneur: SimulationConfig = {
'liste noire': [
'entreprise . charges',
"entreprise . chiffre d'affaires",
'entreprise . activité . mixte',
'entreprise . activités . revenus mixtes',
],
},
'unité par défaut': '€/an',

View File

@ -32,7 +32,7 @@ export const configComparateurStatuts: SimulationConfig = {
},
'unité par défaut': '€/mois',
situation: {
'entreprise . activité . mixte': 'non',
'entreprise . activités . revenus mixtes': 'non',
salarié: 'non',
'salarié . cotisations . ATMP . taux fonctions support': 'oui',
"entreprise . chiffre d'affaires": '4000 €/mois',

View File

@ -53,7 +53,7 @@ export const configIndépendant: SimulationConfig = {
'dirigeant . indépendant . PL . CNAVPL . exonération incapacité',
'dirigeant . indépendant . cotisations et contributions . exonérations . pension invalidité',
'entreprise . salariés . effectif',
'entreprise . activité . débit de tabac',
'entreprise . activités . commerciale . débit de tabac',
],
},
'unité par défaut': '€/an',

View File

@ -789,6 +789,31 @@ const getMetadataSrc = (t: TFunction) => {
nextSteps: ['déclaration-charges-sociales-indépendant'],
},
'coût-création-entreprise': {
icône: '💰',
tracking: 'cout_création_entreprise',
iframePath: 'coût-création-entreprise',
pathId: 'simulateurs.coût-création-entreprise',
meta: {
title: t(
'pages.simulateurs.coût-création-entreprise.meta.title',
"Coût de création d'une entreprise"
),
description: t(
'pages.simulateurs.coût-création-entreprise.meta.description',
"Estimer les coûts lors de la création d'une entreprise"
),
},
shortName: t(
'pages.simulateurs.coût-création-entreprise.shortName',
"Coût de création d'une entreprise"
),
title: t(
'pages.simulateurs.coût-création-entreprise.title',
"Simulateur du coût de création d'une entreprise"
),
// nextSteps: ['déclaration-charges-sociales-indépendant'],
},
} as const
return data

View File

@ -62,6 +62,7 @@ import salaireBrutNetPreviewFR from './images/SalaireBrutNetPreviewFR.png'
import urlIllustrationNetBrutEn from './images/illustration-net-brut-en.png'
import urlIllustrationNetBrut from './images/illustration-net-brut.png'
import getData from './metadata-src.js'
import { coutCreationEntreprise } from './metadata/coutCreationEntreprise'
interface SimulatorsDataParams {
t: TFunction
@ -737,6 +738,10 @@ function getSimulatorsData({ t, sitePaths, language }: SimulatorsDataParams) {
path: sitePaths.simulateurs['exonération-covid'],
component: ExonérationCovid,
},
'coût-création-entreprise': coutCreationEntreprise(
pureSimulatorsData,
sitePaths
),
} as const
}

View File

@ -0,0 +1,32 @@
import { AbsoluteSitePaths } from '@/sitePaths'
import { CoutCreationEntreprise } from '../CoutCreationEntreprise'
import { SimulationConfig } from '../configs/types'
import { MetadataSrc } from '../metadata-src'
const config: SimulationConfig = {
'objectifs exclusifs': [],
objectifs: ['entreprise . coût formalités . création'],
questions: {},
// 'unité par défaut': '€/mois',
situation: {},
}
export const coutCreationEntreprise = (
pureSimulatorsData: MetadataSrc,
sitePaths: AbsoluteSitePaths
) => ({
...pureSimulatorsData['coût-création-entreprise'],
config,
meta: {
...pureSimulatorsData['coût-création-entreprise']?.meta,
// ogImage: ,
},
path: sitePaths.simulateurs['coût-création-entreprise'],
component: CoutCreationEntreprise,
seoExplanations: (
<>Vive le SEO</>
// <Trans i18nKey="pages.simulateurs.sasu.seo-explanation">
// </Trans>
),
})

View File

@ -135,7 +135,7 @@ export default function AideDéclarationIndépendant() {
<SubSection dottedName="déclaration charge sociales . nature de l'activité" />
{/* PLNR */}
<SimpleField dottedName="entreprise . activité . débit de tabac" />
<SimpleField dottedName="entreprise . activités . commerciale . débit de tabac" />
<SimpleField dottedName="dirigeant . indépendant . cotisations et contributions . déduction tabac" />
<SimpleField dottedName="dirigeant . indépendant . PL . régime général . taux spécifique retraite complémentaire" />

View File

@ -56,6 +56,7 @@ const rawSitePathsFr = {
},
simulateurs: {
index: 'simulateurs',
'coût-création-entreprise': 'coût-création-entreprise',
'auto-entrepreneur': 'auto-entrepreneur',
'entreprise-individuelle': 'entreprise-individuelle',
eirl: 'eirl',
@ -139,6 +140,7 @@ const rawSitePathsEn = {
},
simulateurs: {
index: 'calculators',
'coût-création-entreprise': 'coût-création-entreprise',
indépendant: 'independant',
'entreprise-individuelle': 'sole-proprietorship',
'auto-entrepreneur': 'auto-entrepreneur',

View File

@ -47,7 +47,7 @@ débit de tabac:
- <<: *base
déclaration charge sociales . nature de l'activité: "'commerciale'"
dirigeant . rémunération . totale: 50000 €/an
entreprise . activité . débit de tabac: oui
entreprise . activités . commerciale . débit de tabac: oui
dirigeant . indépendant . cotisations et contributions . déduction tabac: 30000 €/an
RSA:

View File

@ -27,9 +27,9 @@ it('calculate simulations-auto-entrepreneur', () => {
).toMatchInlineSnapshot(`
[
"dirigeant . auto-entrepreneur . impôt . versement libératoire",
"entreprise . activité . mixte",
"entreprise . activités . revenus mixtes",
"entreprise . activité . nature",
"entreprise . activité . service ou vente",
"entreprise . activités . service ou vente",
"entreprise . date de création",
"impôt . foyer fiscal . enfants à charge",
"impôt . foyer fiscal . revenu imposable . autres revenus imposables",

View File

@ -46,31 +46,31 @@ activités:
entreprise . activité . nature . libérale . réglementée: oui
- dirigeant . auto-entrepreneur . chiffre d'affaires: 20000 €/an
entreprise . activité . nature: "'artisanale'"
entreprise . activité . service ou vente: "'vente'"
entreprise . activités . service ou vente: "'vente'"
- dirigeant . auto-entrepreneur . chiffre d'affaires: 20000 €/an
entreprise . activité . nature: "'artisanale'"
entreprise . activité . service ou vente: "'service'"
entreprise . activités . service ou vente: "'service'"
- dirigeant . auto-entrepreneur . chiffre d'affaires: 20000 €/an
entreprise . activité . nature: "'commerciale'"
entreprise . activité . service ou vente: "'vente'"
entreprise . activités . service ou vente: "'vente'"
- dirigeant . auto-entrepreneur . chiffre d'affaires: 20000 €/an
entreprise . activité . nature: "'commerciale'"
entreprise . activité . service ou vente: "'service'"
entreprise . activités . service ou vente: "'service'"
activité mixte:
- dirigeant . auto-entrepreneur . chiffre d'affaires: 20000 €/an
entreprise . activité . mixte: oui
entreprise . activités . revenus mixtes: oui
- dirigeant . auto-entrepreneur . chiffre d'affaires: 20000 €/an
entreprise . activité . mixte: oui
entreprise . activités . revenus mixtes: oui
entreprise . activité . nature: "'libérale'"
- dirigeant . auto-entrepreneur . chiffre d'affaires: 20000 €/an
entreprise . activité . mixte: oui
entreprise . activités . revenus mixtes: oui
entreprise . activité . nature: "'artisanale'"
- entreprise . chiffre d'affaires . service BIC: 20000 €/an
entreprise . chiffre d'affaires . service BNC: 10000 €/an
entreprise . chiffre d'affaires . vente restauration hébergement: 15000 €/an
entreprise . activité . mixte . proportions . service BIC: 44.44%
entreprise . activité . mixte . proportions . service BNC: 22.22%
entreprise . activité . mixte . proportions . vente restauration hébergement: 33.33%
entreprise . activité . mixte: oui
entreprise . activités . revenus mixtes . proportions . service BIC: 44.44%
entreprise . activités . revenus mixtes . proportions . service BNC: 22.22%
entreprise . activités . revenus mixtes . proportions . vente restauration hébergement: 33.33%
entreprise . activités . revenus mixtes: oui
entreprise . activité . nature: "'commerciale'"

View File

@ -34,7 +34,7 @@ it('calculate simulations-indépendant', () => {
"dirigeant . indépendant . cotisations facultatives",
"dirigeant . indépendant . revenus étrangers",
"dirigeant . rémunération . net",
"entreprise . activité . débit de tabac",
"entreprise . activités . commerciale . débit de tabac",
"entreprise . activité . nature",
"entreprise . catégorie juridique",
"entreprise . charges",