From fa035b91da79e9d85ef9e6f5704e0c7ded28c81c Mon Sep 17 00:00:00 2001 From: Johan Girod Date: Wed, 9 Mar 2022 15:46:09 +0100 Subject: [PATCH] wip --- exoneration-covid/package.json | 2 +- modele-social/package.json | 2 +- "modele-social/r\303\250gles/dirigeant.yaml" | 44 +- .../entreprise-\303\251tablissement.yaml" | 933 ------------------ .../entreprise/statut-juridique.yaml" | 87 +- package.json | 4 +- site/source/actions/existingCompanyActions.ts | 20 +- site/source/components/SchemeComparaison.tsx | 6 +- .../components/utils/useSimulationConfig.ts | 40 +- .../config.yaml" | 2 +- site/source/pages/Gerer/Home.tsx | 177 ++-- .../Simulateurs/configs/artiste-auteur.yaml | 3 +- .../configs/auto-entrepreneur.yaml | 2 +- .../Simulateurs/configs/dirigeant-sasu.yaml | 2 +- .../pages/Simulateurs/configs/dividendes.yaml | 2 +- .../configs/ind\303\251pendant.yaml" | 2 +- .../configs/profession-lib\303\251rale.yaml" | 2 +- ...r\303\251mun\303\251ration-dirigeant.yaml" | 2 +- site/source/reducers/inFranceAppReducer.ts | 46 - .../regressions/simulations-dividendes.yaml | 20 +- .../simulations-salari\303\251.yaml" | 8 +- site/test/regressions/simulations.test.ts | 6 +- yarn.lock | 18 +- 23 files changed, 241 insertions(+), 1189 deletions(-) delete mode 100644 "modele-social/r\303\250gles/entreprise-\303\251tablissement.yaml" diff --git a/exoneration-covid/package.json b/exoneration-covid/package.json index 29dad19bee..f63bd6762d 100644 --- a/exoneration-covid/package.json +++ b/exoneration-covid/package.json @@ -27,7 +27,7 @@ "build": "node ../scripts/build-rules.js", "start": "onchange 'règles/**/*.yaml' -- yarn run build", "clean": "rimraf dist node_modules", - "postinstall": "yarn run build", + "prepack": "yarn run build", "up": "yarn version --minor && echo \"ℹ N'oubliez pas de poussez le tag git\"", "test": "node ../scripts/check-changelog.js" } diff --git a/modele-social/package.json b/modele-social/package.json index b71d132661..f385b4fd21 100644 --- a/modele-social/package.json +++ b/modele-social/package.json @@ -28,7 +28,7 @@ "build": "node ../scripts/build-rules.js", "start": "onchange 'règles/**/*.yaml' -- yarn run build", "clean": "rimraf dist node_modules", - "postinstall": "yarn run build", + "prepack": "yarn run build", "up": "yarn version --minor && echo \"ℹ N'oubliez pas de poussez le tag git\"", "test": "node ../scripts/check-changelog.js" } diff --git "a/modele-social/r\303\250gles/dirigeant.yaml" "b/modele-social/r\303\250gles/dirigeant.yaml" index d839babb46..d7f85dce86 100644 --- "a/modele-social/r\303\250gles/dirigeant.yaml" +++ "b/modele-social/r\303\250gles/dirigeant.yaml" @@ -1,13 +1,34 @@ dirigeant: - question: Quel est le régime social du dirigeant ? +dirigeant . minoritaire: + titre: Gérant minoritaire ou égalitaire + non applicable si: + - entreprise . catégories juridiques . EI + - entreprise . catégories juridiques . SARL . unipersonnelle + - entreprise . catégories juridiques . SAS . unipersonnelle par défaut: non - formule: - une possibilité: - choix obligatoire: oui - possibilités: - - auto-entrepreneur - - assimilé salarié - - indépendant + +dirigeant . régime social: + par défaut: non + variations: + - si: entreprise . auto-entrepreneur + alors: "'auto-entrepreneur'" + - si: + une de ces conditions: + - entreprise . catégories juridiques . EI + - entreprise . catégories juridiques . SARL + - entreprise . catégories juridiques . SELARL + non applicable si: dirigeant . minoritaire + alors: "'indépendant'" + - si: + une de ces conditions: + - entreprise . catégories juridiques . SAS + - entreprise . catégories juridiques . SELAS + - toutes ces conditions: + - dirigeant . minoritaire + - une de ces conditions: + - entreprise . catégories juridiques . SARL + - entreprise . catégories juridiques . SELARL + alors: "'assimilé salarié'" dirigeant . rémunération: oui dirigeant . rémunération . totale: @@ -81,7 +102,7 @@ dirigeant . rémunération . nette après impôt: dirigeant . assimilé salarié: description: | Certains dirigeants d'entreprise (c'est notamment le cas pour les SASU) sont considérés par la sécurité sociale comme assimilés aux salariés. Ils sont alors au régime général de la sécurité sociale, avec quelques contraintes cependant. Par exemple, ils ne cotisent pas au chômage, et n'y ont donc pas droit. - formule: dirigeant = 'assimilé salarié' + applicable si: régime social = 'assimilé salarié' remplace: - règle: contrat salarié par: "'CDI'" @@ -152,14 +173,13 @@ dirigeant . assimilé salarié . réduction ACRE . notification taux annuel: simulateur ne prends pas encore en compte le calcul de l'ACRE mois par mois. dirigeant . auto-entrepreneur: + applicable si: régime social = 'auto-entrepreneur' rend non applicable: contrat salarié remplace: - règle: entreprise . imposition par: "'IR'" - règle: entreprise . imposition . IR . micro-fiscal par: oui - - formule: dirigeant = 'auto-entrepreneur' icônes: 🚶 description: | L'auto-entreprise est une entreprise individuelle simplifiée. À l'origine connu sous l'appellation « auto-entrepreneur », le régime de « micro-entrepreneur » est un régime de travailleur indépendant créé pour simplifier la gestion administrative, notamment en remplaçant toutes les cotisations sociales par un prélèvement unique mensuel. @@ -496,8 +516,8 @@ dirigeant . auto-entrepreneur . chiffre d'affaires: - net de cotisations dirigeant . indépendant: + applicable si: régime social = 'indépendant' rend non applicable: contrat salarié - formule: dirigeant = 'indépendant' dirigeant . indépendant . revenu professionnel: description: rémunération du dirigeant au régime des indépendant diff --git "a/modele-social/r\303\250gles/entreprise-\303\251tablissement.yaml" "b/modele-social/r\303\250gles/entreprise-\303\251tablissement.yaml" deleted file mode 100644 index 1627c23c2f..0000000000 --- "a/modele-social/r\303\250gles/entreprise-\303\251tablissement.yaml" +++ /dev/null @@ -1,933 +0,0 @@ -entreprise: - description: | - Le contrat lie une entreprise, identifiée par un code SIREN, et un employé. - -entreprise . date de création: - question: Quelle est votre date de début d'activité ? - par défaut: 01/01/2021 - description: | - La date de début d'activité (ou date de création) est fixée lors de la - déclaration de votre entreprise. - - Vous pouvez [renseigner votre entreprise](/gérer), pour préremplir - automatiquement cette information. - - Si vous n'avez pas le jour exact, le mois suffit en général pour une bonne - approximation. - suggestions: - Début 2022: 01/01/2022 - Début 2021: 01/01/2021 - Il y a 10 ans: 01/01/2012 - type: date - -entreprise . date de création . contrôle date future: - type: notification - sévérité: avertissement - formule: date de création > 01/2025 - description: Nous ne pouvons voir aussi loin dans le futur - -entreprise . date de création . contrôle date passée: - type: notification - sévérité: avertissement - formule: date de création < 01/1900 - description: Il s'agit d'une très vieille entreprise ! Êtes-vous sûr de ne pas vous être trompé dans la saisie ? - -entreprise . durée d'activité: - formule: - durée: - depuis: date de création - -entreprise . durée d'activité . en fin d'année: - titre: durée d'activité à la fin de l'année - formule: - somme: - - durée: - depuis: date de création - jusqu'à: période . fin d'année - - 1 jour # Le mécanisme durée n'inclue pas le dernier jour - -entreprise . durée d'activité . en début d'année: - titre: durée d'activité au début de l'année - formule: - durée: - depuis: date de création - jusqu'à: période . début d'année - -entreprise . chiffre d'affaires: - question: Quel est votre chiffre d'affaires envisagé ? - - résumé: Montant total des recettes brutes (hors taxe) - unité: €/an - somme: - - dirigeant . rémunération . nette après impôt - - dirigeant . rémunération . impôt - - dirigeant . rémunération . cotisations - - charges - - applicable si: entreprise . imposition . IS - somme: - - imposition . IS . résultat net - - imposition . IS . impôt sur les sociétés - plancher: 0€/an - arrondi: oui - identifiant court: CA - -entreprise . chiffre d'affaires . vente restauration hébergement: - titre: Vente de biens, restauration, hébergement (BIC) - résumé: Chiffre d'affaires hors taxe - question: Quel est le chiffre d'affaires issu de la vente de biens, restauration ou hébergement ? - unité: €/an - variations: - - si: activité . mixte - alors: - produit: - assiette: chiffre d'affaires - taux: activité . mixte . proportions . vente restauration hébergement - - sinon: - applicable si: activité . service ou vente = 'vente' - valeur: chiffre d'affaires - arrondi: oui - plancher: 0€/an - description: | - ### Vente de biens - Il s’agit du chiffre d'affaires de toutes les opérations comportant - transfert de propriété d'un bien corporel, c'est-à-dire un bien ayant une - existence matérielle. - - ### Restauration et hébergement - Il s’agit du chiffre d'affaires de toutes les opérations de restauration - ou hébergement - - > Note : pour les locations meublées, seules les locations de meublé de tourisme classé et de chambre d’hôte entrent dans cette catégorie hébergement ; les autres locations meublées relèvent de la catégorie « Prestations de service BIC » - - Ces revenus sont imposables dans la catégorie des BIC - références: - service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F32919 - définition vente de bien (impots.gouv): https://www.impots.gouv.fr/portail/professionnel/achatvente-de-biens - -entreprise . chiffre d'affaires . service BIC: - unité: €/an - plancher: 0€/an - arrondi: oui - résumé: Chiffre d'affaires hors taxe - titre: Prestations de service commerciales ou artisanales (BIC) - question: Quel est le chiffre d'affaires issu de prestations de service commerciales ou artisanales ? - description: | - Il s’agit de toute opération ne comportant pas de transfert de propriété de - biens corporels (c'est-à-dire ayant une existence matérielle), dont - l'activité manuelle joue le principal rôle. - - Pour simplifier on pourrait dire que ce sont toutes les prestations de - services qui nécessite plus qu'un ordinateur pour être effectuées. - - **Exemples** : transports, service à la personne, réparation etc. - variations: - - si: activité . mixte - alors: - produit: - assiette: chiffre d'affaires - taux: activité . mixte . proportions . service BIC - - sinon: - applicable si: activité . service ou vente = 'service' - valeur: chiffre d'affaires - références: - service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F32919 - -entreprise . chiffre d'affaires . service BNC: - titre: Autres prestations de service et activités libérales (BNC) - résumé: Recettes hors taxes - question: Quelles sont les recettes issues de l’activité libérale ? - arrondi: oui - plancher: 0€/an - description: | - Ce sont toutes les opérations dont l'activité intellectuelle tient - un rôle essentiel. - - **Exemples** : conseil, accompagnement, traduction, développement, - formation, enseignement, sportif - - Les revenus tirés de ce chiffre d'affaires sont imposable au régime BNC (bénéfices non commerciaux) - variations: - - si: activité . mixte - alors: - produit: - assiette: chiffre d'affaires - taux: activité . mixte . proportions . service BNC - - sinon: - applicable si: activité = 'libérale' - valeur: chiffre d'affaires - - 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 . chiffre d'affaires . service: - titre: Chiffre d'affaires de prestation de service - description: | - Il s’agit de toute opération ne comportant pas de transfert de propriété de - biens corporels (c'est-à-dire ayant une existence matérielle) - unité: €/an - somme: - - service BIC - - service BNC - -entreprise . chiffre d'affaires . BIC: - description: | - Le chiffre d'affaires correspondant au revenus imposable au titre des bénéfice industriels et commerciaux (BIC ou micro-BIC). - unité: €/an - somme: - - service BIC - - vente restauration hébergement - -entreprise . chiffre d'affaires . franchise de TVA: oui - -entreprise . chiffre d'affaires . franchise de TVA . seuil vente: - variations: - - si: établissement . localisation . outre-mer . Guadeloupe Réunion Martinique - alors: 110000 €/an - - sinon: 94300 €/an - références: - Fiche service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F21746 - -entreprise . chiffre d'affaires . franchise de TVA . seuil service: - variations: - - si: établissement . localisation . outre-mer . Guadeloupe Réunion Martinique - alors: 60000 €/an - - si: dirigeant . indépendant . PL . métier = 'avocat' - alors: 44500 € - - sinon: 36500 €/an - références: - Fiche service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F21746 - -entreprise . chiffre d'affaires . franchise de TVA . dépassement: - type: notification - valeur: - une de ces conditions: - - chiffre d'affaires > seuil vente + seuil service - - vente restauration hébergement > seuil vente - - service > seuil service - résumé: | - Le seuil annuel de chiffre d'affaires pour la franchise de TVA est dépassé. - description: | - La franchise de TVA est un dispositif qui exonère les entreprises de la - déclaration et du paiement de la TVA. Il s'applique en dessous d'un seuil de - chiffre d'affaire annuel dépendant de l'activité. - - Le professionnel qui relève de ce dispositif facture ses prestations ou ses - ventes en hors taxe, et ne peut pas déduire la TVA de ses achats. - note: > - On prend compte ici des seuils majorés (qui s'appliquent si le seuil - "minoré" n'a pas été dépassé en année `n - 2`) - références: - Fiche service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F21746 - -entreprise . résultat fiscal: - unité: €/an - somme: - - chiffre d'affaires - - (- charges) - - (- charges . dirigeant) - -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. - formule: - une possibilité: - choix obligatoire: oui - possibilités: - - IR - - IS - par défaut: "'IR'" - -entreprise . imposition . IR: - valeur: imposition = 'IR' - titre: Impôt sur le revenu - -entreprise . imposition . IR . micro-fiscal: - rend non applicable: dirigeant . indépendant . cotisations facultatives - - question: Avez-vous opté pour le régime micro-fiscal ? - description: | - Avec le régime micro fiscal, les charges déductibles sont estimées forfaitairement,en fonction d’un pourcentage du chiffre d’affaires. Ce pourcentage dépend du type d’activité : 71% pour les activités de vente, restauration et hébergement (location de meublé de tourisme classé et chambre d’hôte), 50% pour les prestations de service commerciales ou artisanales, 34% pour les activités libérales. - - Cette option permet de simplifier votre comptabilité et peut être avantageuse en termes de revenu imposable et soumis à cotisations et contributions sociales dans le cas où vos charges de fonctionnement sont faibles. - par défaut: non - -entreprise . imposition . IR . micro-fiscal . revenu abattu: - remplace: résultat fiscal - résoudre la référence circulaire: oui - titre: abattement forfaitaire micro-fiscal - description: | - Le micro-entrepreneur est dispensé d'établir une déclaration professionnelle de bénéfices au titre des BNC ou BIC. - - 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). - somme: - - entreprise . chiffre d'affaires . vente restauration hébergement - - entreprise . chiffre d'affaires . service BIC - - entreprise . chiffre d'affaires . service BNC - abattement: - produit: - composantes: - - assiette: entreprise . chiffre d'affaires . vente restauration hébergement - taux: 71% - - assiette: entreprise . chiffre d'affaires . service BIC - taux: 50% - - assiette: entreprise . chiffre d'affaires . service BNC - taux: 34% - plancher: - variations: - - si: entreprise . activité . mixte - alors: 610 €/an - - sinon: 305 €/an - -entreprise . imposition . IR . micro-fiscal . alerte seuil dépassés: - type: notification - sévérité: avertissement - formule: chiffre d'affaires . seuil micro dépassé - description: Le seuil annuel de chiffre d'affaires pour le régime micro-fiscal est dépassé. [En savoir plus](/documentation/entreprise/chiffre-d'affaires/seuil-micro-dépassé) - -entreprise . chiffre d'affaires . seuil micro dépassé: - applicable si: imposition . IR - description: | - Le statut de micro-entreprise s'applique tant que le chiffre d'affaires annuel (effectivement encaissé au cours de l'année civile) ne dépasse pas les seuils du régime fiscal de la micro-entreprise. - - En cas de dépassement **sur deux années consécutives**, l'entreprise bascule automatiquement dans le régime de [l'entreprise individuelle](/simulateurs/indépendant). - - À la fin de la première année d'activité, le CA est proratisé par rapport à la durée d'activité. - - Exemple : - > Un contribuable crée une entreprise le 1er août et encaisse des recettes HT de `50 000 €` au cours des cinq mois d'activité de sa première année civile d'exploitation. - > Les recettes de cette première année civile sont ajustées *prorata temporis* pour les comparer au plafond : - > - > `50 000€ x (365/153) = 119 280 €` - - - Les charges ne sont pas déductibles pour le calcul du plafond (comme pour le calcul des cotisations) - - - ### Multi-activité - - Lorsqu'un entrepreneur exerce 2 activités au sein de sa micro-entreprise, le - seuil de chiffre d’affaires à respecter n’est pas pour autant doublé. En - effet l'exercice de plusieurs activités avec la même micro-entreprise - n’augmente pas les seuils. - - références: - Fiche service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F32353 - Article 50-0 du Code général des impôts: https://www.legifrance.gouv.fr/affichCode.do?idSectionTA=LEGISCTA000006199553&cidTexte=LEGITEXT000006069577 - Bofip (dépassement micro-bnc): https://bofip.impots.gouv.fr/bofip/4807-PGP.html - Bofip (dépassement micro-bic): https://bofip.impots.gouv.fr/bofip/1802-PGP.html - autoentrepreneur.urssaf.fr: https://www.autoentrepreneur.urssaf.fr/portail/accueil/une-question/questions-frequentes.html - unité: €/an - # TODO: les seuils micro sont dupliqués à plusieurs endroits (artiste-auteur . - # revenus . BNC . contrôle micro-bnc, tableau de la comparaison de régime, - # économie collaborative). Il faudrait référencer la même valeur partout où - # elle est utilisée. - une de ces conditions: - - entreprise . chiffre d'affaires > 176200 €/an - - entreprise . chiffre d'affaires . service > 72600 €/an - -entreprise . imposition . IR . information sur le report de déficit: - non applicable si: micro-fiscal - type: notification - formule: résultat fiscal < 0 €/an - description: | - Lorsque votre résultat fiscal est négatif, ce dernier vient réduire le revenu imposables du foyer fiscal. - Un déficit peut être imputé jusqu'à 6 ans après sa réalisation. - - [Voir les règles fiscales détaillées](https://bofip.impots.gouv.fr/bofip/2003-PGP.html/identifiant%3DBOI-BIC-DEF-20-10-20170301) - références: - bofip: https://bofip.impots.gouv.fr/bofip/2003-PGP.html/identifiant%3DBOI-BIC-DEF-20-10-20170301 - -entreprise . exercice: oui -entreprise . exercice . début: - type: date - par défaut: 01/01/2021 - -entreprise . exercice . fin: - type: date - par défaut: 31/12/2021 - -entreprise . exercice . durée: - titre: durée de l'exercice - formule: - durée: - depuis: début - jusqu'à: fin - -entreprise . exercice . date trop ancienne: - type: notification - sévérité: avertissement - formule: début < 01/01/2018 - description: La date saisie est trop ancienne. Le simulateur n'intègre pas les barèmes avant 2018. - -entreprise . exercice . date trop éloignée: - type: notification - sévérité: avertissement - formule: fin > 31/12/2022 - description: La date saisie est trop éloignée. Le simulateur n'intègre pas les barèmes au delà de 2022. - -entreprise . exercice . début après la fin: - type: notification - sévérité: avertissement - formule: début >= fin - description: La fin de l'exercice doit être postérieure à son début. - -entreprise . exercice . durée maximale: - type: notification - sévérité: avertissement - formule: durée >= 24 mois - description: La durée maximale d'un exercice comptable est de 24 mois. - -entreprise . imposition . IS: - valeur: imposition = 'IS' - titre: Impôt sur les sociétés - -entreprise . imposition . IS . résultat imposable: - titre: Résultat de l'exercice - résumé: Imposable à l'impôt sur les sociétés - valeur: résultat fiscal - -entreprise . imposition . IS . information sur le report de déficit: - type: notification - formule: résultat imposable < 0 €/an - # TODO: Support des références dans les notifications - description: | - Les déficits subits au cours d'un exercice peuvent être reportés sur les exercices suivants (report en avant), ou sur le seul exercice précédent (report en arrière). - -entreprise . imposition . IS . résultat net: - résumé: Après déduction des charges et de l'impôt sur les société - somme: - - chiffre d'affaires - - (- charges) - - (- dirigeant . rémunération . totale) - - (- impôt sur les sociétés) - 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 . IS . impôt sur les sociétés . plafond taux réduit 1: - applicable si: éligible taux réduit - valeur: 38120 €/an - -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 . 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 . 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 . charges: - synonymes: - - charges d'exploitation - - charges de fonctionnement - titre: charges (hors rémunération dirigeant) - identifiant court: charges - résumé: Toutes les dépenses nécessaires à l'entreprise - question: Quelles sont les charges de l'entreprise ? - description: | - - Ce sont les dépenses de l'entreprise engagées dans l'intérêt de celle-ci, hors rémunération du dirigeant. Pour les sociétés et entreprises hors auto-entrepreneur, ces charges sont dites déductibles du résultat : l'entreprise ne paiera pas de cotisations ou impôt dessus. Pour l'auto-entrepreneur, elles ne sont pas déductibles du chiffre d'affaires encaissé. - - Nous ne traitons pas encore la TVA : les charges sont à renseigner hors taxe (excepté pour les auto-entrepreneurs en franchise de TVA) - - Par exemple, les charges peuvent être : - - - achat de matières premières pour une activité de production - - achat de produits en vue de leur revente, pour une activité commerciale - - frais de repas : le supplément par rapport au coût d'un repas à domicile - - Attention : l'achat d'un ordinateur à 1000€ n'est pas une charge, mais une immobilisation : c'est un bien qui va profiter à l'entreprise pendant plusieurs années. Chaque année, une partie de cette immobilisation est amortie, et cet amortissement déductible peut être intégré dans ce calcul, par exemple 200€ par an pendant 5 ans. - - A l'inverse, un téléphone portable à moins de 500€ peut être assimilé à une charge sans immobilisation. - - références: - Charges déductibles ou non du résultat fiscal d'une entreprise: https://www.service-public.fr/professionnels-entreprises/vosdroits/F31973 - par défaut: 0 €/an - -entreprise . charges . dirigeant: - titre: Charges déductibles dirigeant - description: Les montants liés à la rémunération du dirigeant qui sont déductibles d'impôt. - variations: - - si: imposition . IS - alors: dirigeant . rémunération . totale - # Note : le cas de dirigeant AS à l'IR n'est pas géré - # - si: dirigeant . assimilé salarié - # alors: 0€/an - - sinon: # TNS dans entreprise à l'IR - valeur: dirigeant . indépendant . cotisations et contributions - abattement: dirigeant . indépendant . cotisations et contributions . non déductibles - -# on ne prend en compte pour l'instant que le cas entreprise unipersonnelle -entreprise . dividendes: bénéficiaire . dividendes . bruts - -# [TODO] [dividendes-indep] -entreprise . capital social: - description: | - Cette valeur doit inclure la valeur des primes d'émission. - titre: Capital social - question: Quele est le capital social de la société ? - unité: € - -entreprise . 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 - d'activité pendant 12 mois. - - - Elle est **automatique** pour les **sociétés et les entreprises individuelles** - (sous certaines conditions, comme par exemple ne pas en avoir bénéficié les - trois dernières années). - - - Pour les **auto-entrepreneurs** en revanche, elle doit être demandée et est réservée aux - bénéficiaires suivants: - - - Les demandeurs d'emplois (indemnisés ou non indemnisés mais ayant au moins 6 mois d’inscription à Pôle Emploi au cours des 18 derniers mois). - - - Les bénéficiaires d'aides sociales (RSA, ASS, ATA) - - - Les jeunes entre 18 et 25 ans (jusqu'à 29 ans pour les personnes reconnues en situation de handicap) - - - Les personnes créant une micro-entreprise dans un quartier prioritaire de la ville (QPPV) - - - > *Historique*: - - - Pour les auto-entreprise créées à partir du 1er janvier 2020, l'exonération est - de nouveau soumise à condition. - - - Pour les entreprises créées entre le 1er janvier 2019 et le 31 décembre 2019, la réduction est généralisée à tous les créateurs, sauf si vous avez déjà obtenu l'ACCRE dans les trois années précédentes - - - Pour les entreprises créées avant le 1er janvier 2019, la l'exonération de cotisation s'appelait ACCRE était soumise à conditions et n'était pas automatique : il fallait en faire la demande. - question: Votre entreprise bénéficie-t-elle de l'ACRE ? - applicable si: - une de ces conditions: - - toutes ces conditions: - - dirigeant . auto-entrepreneur - - entreprise . durée d'activité < 3 ans - - entreprise . date de création < 04/2020 - - entreprise . durée d'activité . en début d'année < 1 an - par défaut: ACRE par défaut - note: Les auto-entreprises crées entre le 1er janvier et le 31 décembre 2019 bénéficient d'un dispositif plus favorable, actif pendant 3 années. - -entreprise . ACRE par défaut: - formule: - variations: - - si: - toutes ces conditions: - - dirigeant . auto-entrepreneur - - une de ces conditions: - # Pour l'année 2019, l'acre était automatiquement accordée aux auto-entrepreneur - - entreprise . date de création < 01/01/2019 - - entreprise . date de création > 31/12/2019 - alors: non - - sinon: oui - -entreprise . effectif: - unité: employé - formule: - variations: - - si: entreprise . effectif . seuil = 'moins de 5' - alors: 4 employés - - si: entreprise . effectif . seuil = 'moins de 11' - alors: 10 employés - - si: entreprise . effectif . seuil = 'moins de 20' - alors: 19 employés - - si: entreprise . effectif . seuil = 'moins de 50' - alors: 49 employés - - si: entreprise . effectif . seuil = 'moins de 150' - alors: 149 employés - - si: entreprise . effectif . seuil = 'moins de 250' - alors: 250 employés - - si: entreprise . effectif . seuil = 'plus de 250' - alors: 251 employés - -entreprise . effectif . seuil: - titre: seuil d'effectif - question: Quel est l'effectif de l'entreprise ? - description: > - De nombreuses cotisations patronales varient selon l'effectif de - l'entreprise. - - Le franchissement d'un seuil à la hausse n'est pris en compte que s'il est - atteint ou dépassé pendant 5 années civiles consécutives. - formule: - une possibilité: - choix obligatoire: oui - possibilités: - - moins de 5 - - moins de 11 - - moins de 20 - - moins de 50 - - moins de 150 - - moins de 250 - - plus de 250 - par défaut: "'moins de 5'" - -entreprise . effectif . seuil . moins de 5: -entreprise . effectif . seuil . moins de 11: - titre: entre 5 et 10 -entreprise . effectif . seuil . moins de 20: - titre: entre 11 et 19 -entreprise . effectif . seuil . moins de 50: - titre: entre 20 et 49 -entreprise . effectif . seuil . moins de 150: - titre: entre 50 et 149 -entreprise . effectif . seuil . moins de 250: - titre: entre 150 et 250 -entreprise . effectif . seuil . plus de 250: - titre: 251 et plus - -entreprise . ratio alternants: - question: Quelle est la fraction de contrats d'alternance dans l'effectif moyen de l'entreprise ? - titre: Fraction d'alternants - description: | - Cette fraction détermine la contribution supplémentaire pour l'apprentissage pour les entreprises concernées. - suggestions: - 1%: 1% - 5%: 5% - par défaut: 0% - -entreprise . association non lucrative: - description: L'entreprise est une association non lucrative - question: S'agit-il d'une association à but non lucratif ? - par défaut: non - # L'association a but non lucratif ne paie pas d'IS de droit commun article 206 du Code général des impôts - # -> pas de taxe ni contribution d'apprentissage - rend non applicable: - - contrat salarié . taxe d'apprentissage - -entreprise . exonérée de TVA: - question: L'entreprise est-elle exonérée de TVA (hors franchise de base) ? - par défaut: non - description: | - Certains types d'entreprises ne sont pas assujetties à la TVA. - Ces dernières payent la taxe sur les salaires en contrepartie. - - C'est le cas par exemple des établissements bancaires, financiers ou d'assurance. - references: - Fiche economie.gouv.fr: https://www.economie.gouv.fr/entreprises/taxe-salaires - -entreprise . taxe sur les salaires . montant avant décote: - formule: - valeur: contrat salarié . taxe sur les salaires . barème / 1 employé * effectif - abattement: abattement associations - -entreprise . taxe sur les salaires . abattement associations: - applicable si: entreprise . association non lucrative - formule: 21044 €/an - -entreprise . taxe sur les salaires: - applicable si: - une de ces conditions: - - association non lucrative - - entreprise . exonérée de TVA - description: - Lorsque le montant de la taxe sur les salaires est inférieur à 1200 €/an, il - n'y a pas besoin de faire de déclaration et la taxe n'est pas recouvré. - Entre 1200 €/an et 2400 €/an une décote s'applique. - formule: - variations: - - si: montant avant décote <= 1200 €/an - alors: 0 €/an - - si: montant avant décote <= 2400 €/an - alors: montant avant décote - (2400 €/an - montant avant décote * 75%) - - sinon: montant avant décote - références: - Fiche service-public: https://www.service-public.fr/professionnels-entreprises/vosdroits/F22576 - -entreprise . activité: - 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. - par défaut: "'commerciale'" - formule: - une possibilité: - choix obligatoire: oui - possibilités: - - artisanale - - commerciale - - libérale - références: - Vérifier la nature de son activité: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/verifier-nature-son-activite - Comment déterminer la nature de l'activité d'une entreprise ?: https://www.service-public.fr/professionnels-entreprises/vosdroits/F32887 - Spécifiquement pour les auto-entrepreneurs: https://www.shine.fr/blog/categorie-activite-auto-entrepreneur - -entreprise . activité . libérale: - description: | - Ce sont les professions "intellectuelles" : médecins, sage-femme, kiné, avocat, mais aussi consultant, développeur, designer... - - 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. - références: - fiche Wikipedia: https://fr.m.wikipedia.org/wiki/Profession_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: - description: | - ### Activité commerciale - - Achats de biens pour leur revente en l'état (commerce en gros ou de détail) - - Vente de prestations de service commerciales (location de matériel, transport, agence immobilière, hôtellerie-restauration, entreprise de spectacles, activité de sécurité privée, location, etc.) - - ### Activité industrielle - - Activité de production ou de transformation grâce à l'utilisation d'outils industriels, extraction, industries minières, manutention, magasinage et stockage - -entreprise . activité . artisanale: - description: | - C'est une activité de service, de production, de transformation, ou de réparation exercée par un professionnel qualifié, et qui nécessite des compétences et un savoir-faire spécifiques. - - > Par exemple : les travaux, les activités liées au bâtiment, la réparation de produits fournis par le client, les coiffeurs... - - - L'entreprise ne doit pas employer plus de 10 salariés (l'activité devient commerciale au-delà) - - Les activités artisanales sont répertoriées par un décret - références: - liste des activités artisanales: https://bpifrance-creation.fr/encyclopedie/trouver-proteger-tester-son-idee/verifiertester-son-idee/activites-artisanales-0 - -entreprise . activité . service ou vente: - non applicable si: mixte - applicable si: - une de ces conditions: - - activité = 'artisanale' - - activité = 'commerciale' - question: Quelle est le type d'activité de l'entreprise ? - formule: - une possibilité: - choix obligatoire: oui - possibilités: - - vente - - service - par défaut: "'vente'" - -entreprise . activité . service ou vente . vente: - titre: vente de biens, restauration ou hébergement - description: | - Il s’agit 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 s’agit 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 - -entreprise . activité . mixte: - titre: Activités mixtes - applicable si: entreprise . imposition . IR . micro-fiscal - question: Votre entreprise a-t-elle plusieurs types d'activités ? - 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. - - 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) - et une partie en prestation de service (la pose). - - Il existe trois catégories avec des taux d’abattement forfaitaire pour frais différents : - - - [Ventes de biens, restauration et hébergement (BIC)](/documentation/entreprise/chiffre-d'affaires/vente-restauration-hébergement) (abattement de 71%) - - [Prestation de service commerciale ou artisanale (BIC)](/documentation/entreprise/chiffre-d'affaires/service-BIC) (abattement de 50%) - - [Autres prestation de service et activité libérale (BNC)](/documentation/entreprise/chiffre-d'affaires/service-BNC) (abattement de 34%) - - 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é = 'libérale' - alors: 0% - - sinon: 50% - - nom: service BNC - variations: - - si: activité = 'libérale' - alors: 2 / 3 - - sinon: 0% - - nom: vente restauration hébergement - variations: - - si: activité = '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é . libérale réglementée: - question: Est-ce une activité libérale réglementée ? - par défaut: non - applicable si: activité = 'libérale' - 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: - applicable si: activité = 'commerciale' - question: Exercez-vous une activité de vente de tabac ? - par défaut: non - -établissement: - description: | - Le salarié travaille dans un établissement de l'entreprise, identifié par un code SIRET. - -établissement . localisation: - icônes: 🌍 - description: | - Lorsqu'une entreprise dispose de plusieurs établissements, certaines cotisations sont - calculées à l'échelle de l'établissement et sont fonction de règlementations locales. - question: Dans quelle commune l'établissement est-il implanté ? - API: commune - par défaut: - objet: - code: 29019 - nom: Non renseignée - departement: - nom: Non renseigné - taux du versement transport: 1.8 - -établissement . localisation . code commune: - formule: - synchronisation: - data: localisation - chemin: code - -établissement . localisation . commune: - description: | - Lorsqu'une entreprise dispose de plusieurs établissements, certaines cotisations sont - calculées à l'échelle de l'établissement et sont fonction de règlementations locales. - formule: - synchronisation: - data: localisation - chemin: nom - -établissement . taux du versement transport: - unité: '%' - formule: - synchronisation: - data: localisation - chemin: taux du versement transport - -établissement . localisation . département: - formule: - synchronisation: - data: localisation - chemin: departement . nom - -établissement . localisation . outre-mer: - applicable si: - une de ces conditions: - - département = 'Guadeloupe' - - département = 'Martinique' - - département = 'Guyane' - - département = 'La Réunion' - - département = 'Mayotte' - -établissement . localisation . outre-mer . Guadeloupe Réunion Martinique: - formule: - une de ces conditions: - - département = 'Guadeloupe' - - département = 'Martinique' - - département = 'La Réunion' - -établissement . ZFU: - applicable si: entreprise . date de création < 01/2015 - question: Votre établissement bénéficie-t-il du dispositif zone franche urbaine (ZFU) ? - par défaut: non diff --git "a/modele-social/r\303\250gles/entreprise/statut-juridique.yaml" "b/modele-social/r\303\250gles/entreprise/statut-juridique.yaml" index 1e7f065780..37bd7ed5bd 100644 --- "a/modele-social/r\303\250gles/entreprise/statut-juridique.yaml" +++ "b/modele-social/r\303\250gles/entreprise/statut-juridique.yaml" @@ -1,45 +1,12 @@ -entreprise . statut juridique: - question: Quelle est le statut juridique de votre entreprise ? - une possibilité: - choix obligatoire: oui - possibilités: - - auto-entrepreneur - - EI - - EIRL - - SASU - - SAS - - EURL - - SARL - -entreprise . statut juridique . EI: - valeur: statut juridique = 'EI' - remplace: - règle: imposition - par: "'IR'" - -entreprise . statut juridique . EIRL: - valeur: statut juridique = 'EIRL' - -entreprise . statut juridique . SASU: - valeur: statut juridique = 'SASU' - -entreprise . statut juridique . SAS: - valeur: statut juridique = 'SAS' - -entreprise . statut juridique . EURL: - valeur: statut juridique = 'EURL' - -entreprise . statut juridique . SARL: - valeur: statut juridique = 'SARL' - entreprise . auto-entrepreneur: - non applicable si: statut juridique != 'EI' + par défaut: non question: Êtes-vous auto-entrepreneur ? remplace: - - règle: imposition . IR . micro-fiscal - par: oui + règle: entreprise . catégories juridiques + par: "'EI'" + applicable si: catégories juridiques = 'EI' -entreprise . statut juridique . catégories: +entreprise . catégories juridiques: description: | Les catégories juridiques accessibles via l'API SIRENE une possibilité: @@ -48,15 +15,47 @@ entreprise . statut juridique . catégories: - EI - SARL - SAS + - 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 -entreprise . statut juridique . catégories . EI: +entreprise . catégories juridiques . EI: titre: 'EI ou EIRL' - valeur: catégories = 'EI' + valeur: catégories juridiques = 'EI' -entreprise . statut juridique . catégories . SARL: +entreprise . catégories juridiques . SARL: titre: 'EURL ou SARL' - valeur: catégories = 'SARL' + valeur: catégories juridiques = 'SARL' -entreprise . statut juridique . catégories . SAS: +entreprise . catégories juridiques . SARL . unipersonnelle: + titre: EURL + question: Votre entreprise est-elle une EURL ? + par défaut: oui + +entreprise . catégories juridiques . SELARL: + titre: 'SELARL' + valeur: catégories juridiques = 'SELARL' + remplace: + - règle: entreprise . activité + par: "'libérale'" + - règle: entreprise . activité . libérale réglementée + par: oui + +entreprise . catégories juridiques . SELAS: + titre: 'SELARL' + valeur: catégories juridiques = 'SELAS' + remplace: + - règle: entreprise . activité + par: "'libérale'" + - règle: entreprise . activité . libérale réglementée + par: oui + +entreprise . catégories juridiques . SAS: titre: 'SASU ou SAS' - valeur: catégories = 'SAS' + valeur: catégories juridiques = 'SAS' + +entreprise . catégories juridiques . SAS . unipersonnelle: + titre: 'SASU' + question: Votre entreprise est-elle une SASU ? + par défaut: oui diff --git a/package.json b/package.json index 766965443e..aacf9f62f5 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,9 @@ }, "resolutions": { "prettier": "^2.5.1", - "@mui/styled-engine": "npm:@mui/styled-engine-sc@latest" + "@mui/styled-engine": "npm:@mui/styled-engine-sc@latest", + "publicodes": "portal:/home/johan/Projets/publicodes/packages/core", + "publicodes-react": "portal:/home/johan/Projets/publicodes/packages/react-ui" }, "packageManager": "yarn@3.2.0", "devDependencies": { diff --git a/site/source/actions/existingCompanyActions.ts b/site/source/actions/existingCompanyActions.ts index 71c182b372..4df41290f1 100644 --- a/site/source/actions/existingCompanyActions.ts +++ b/site/source/actions/existingCompanyActions.ts @@ -2,27 +2,9 @@ import { FabriqueSocialEntreprise } from '@/api/fabrique-social' import { ApiCommuneJson } from '@/components/conversation/select/SelectCommune' export type ActionExistingCompany = ReturnType< - | typeof specifyIfAutoEntrepreneur - | typeof specifyIfDirigeantMajoritaire - | typeof resetEntreprise - | typeof setCompany - | typeof addCommuneDetails + typeof resetEntreprise | typeof setCompany | typeof addCommuneDetails > -export const specifyIfAutoEntrepreneur = (isAutoEntrepreneur: boolean) => - ({ - type: 'EXISTING_COMPANY::SPECIFY_AUTO_ENTREPRENEUR', - isAutoEntrepreneur, - } as const) - -export const specifyIfDirigeantMajoritaire = ( - isDirigeantMajoritaire: boolean -) => - ({ - type: 'EXISTING_COMPANY::SPECIFY_DIRIGEANT_MAJORITAIRE', - isDirigeantMajoritaire, - } as const) - export const resetEntreprise = () => ({ type: 'EXISTING_COMPANY::RESET', diff --git a/site/source/components/SchemeComparaison.tsx b/site/source/components/SchemeComparaison.tsx index ebc09eea39..dd00976faa 100644 --- a/site/source/components/SchemeComparaison.tsx +++ b/site/source/components/SchemeComparaison.tsx @@ -55,7 +55,7 @@ export default function SchemeComparaison({ () => engine.shallowCopy().setSituation({ ...situation, - dirigeant: "'assimilé salarié'", + 'dirigeant . régime social': "'assimilé salarié'", }), [situation] ) @@ -63,7 +63,7 @@ export default function SchemeComparaison({ () => engine.shallowCopy().setSituation({ ...situation, - dirigeant: "'auto-entrepreneur'", + 'dirigeant . régime social': "'auto-entrepreneur'", }), [situation] ) @@ -71,7 +71,7 @@ export default function SchemeComparaison({ () => engine.shallowCopy().setSituation({ ...situation, - dirigeant: "'indépendant'", + 'dirigeant . régime social': "'indépendant'", }), [situation] ) diff --git a/site/source/components/utils/useSimulationConfig.ts b/site/source/components/utils/useSimulationConfig.ts index 9be65929ba..2bc4ddf658 100644 --- a/site/source/components/utils/useSimulationConfig.ts +++ b/site/source/components/utils/useSimulationConfig.ts @@ -43,11 +43,45 @@ export function getCompanySituation(company: Company | null): Situation { '$3/$2/$1' ), }), - ...(company?.statutJuridique && { - 'entreprise . statut juridique': `'${company.statutJuridique}'`, + ...(company?.categorieJuridiqueUniteLegale && { + 'entreprise . statut juridique': `'${getCatégorieFromCode( + company.categorieJuridiqueUniteLegale + )}'`, }), - ...(company?.statutJuridique && { + ...(company?.siren && { 'entreprise . SIREN': `'${company.siren}'`, }), } } + +type CatégorieJuridique = 'EI' | 'SARL' | 'SAS' | 'SELARL' | 'SELAS' | 'AUTRE' + +const getCatégorieFromCode = (code: string): CatégorieJuridique => { + /* + Nous utilisons le code entreprise pour connaitre le statut juridique + (voir https://www.insee.fr/fr/information/2028129) + + En revanche, impossible de différencier EI et auto-entreprise + https://www.sirene.fr/sirene/public/question.action?idQuestion=2933 + */ + + if (code === '1000') { + return 'EI' + } + if (code === '5485') { + return 'SELARL' + } + if (code === '5470') { + return 'AUTRE' + } + if (/^54..$/.exec(code)) { + return 'SARL' + } + if (code === '5785') { + return 'SELAS' + } + if (code === '5710') { + return 'SAS' + } + return 'AUTRE' +} diff --git "a/site/source/pages/Gerer/AideD\303\251clarationInd\303\251pendant/config.yaml" "b/site/source/pages/Gerer/AideD\303\251clarationInd\303\251pendant/config.yaml" index 910ad22ef5..08622a48db 100644 --- "a/site/source/pages/Gerer/AideD\303\251clarationInd\303\251pendant/config.yaml" +++ "b/site/source/pages/Gerer/AideD\303\251clarationInd\303\251pendant/config.yaml" @@ -8,7 +8,7 @@ objectifs: - déclaration indépendants . formulaire 2035 situation: - dirigeant: "'indépendant'" + dirigeant . régime social: "'indépendant'" année: 2021 déclaration indépendants: oui dirigeant . indépendant . PL . CIPAV: non # TODO En attendant la transitivité des remplacements diff --git a/site/source/pages/Gerer/Home.tsx b/site/source/pages/Gerer/Home.tsx index 4bd36b907d..69485ef39a 100644 --- a/site/source/pages/Gerer/Home.tsx +++ b/site/source/pages/Gerer/Home.tsx @@ -1,11 +1,11 @@ -import { Grid } from '@mui/material' -import { - specifyIfAutoEntrepreneur, - specifyIfDirigeantMajoritaire, -} from '@/actions/existingCompanyActions' +import { DottedName } from '@/../../modele-social' +import Engine from '@/../../modele-social/node_modules/publicodes/dist' +import { specifyIfAutoEntrepreneur } from '@/actions/existingCompanyActions' import CompanyDetails from '@/components/company/Details' +import { WhenApplicable, WhenNotApplicable } from '@/components/EngineValue' import PageHeader from '@/components/PageHeader' import { FromBottom } from '@/components/ui/animate' +import { EngineContext } from '@/components/utils/EngineContext' import { ScrollToTop } from '@/components/utils/Scroll' import { SitePathsContext } from '@/components/utils/SitePathsContext' import { Button } from '@/design-system/buttons' @@ -13,14 +13,15 @@ import { Container, Spacing } from '@/design-system/layout' import Popover from '@/design-system/Popover' import { H2 } from '@/design-system/typography/heading' import { Link } from '@/design-system/typography/link' -import { Body, Intro } from '@/design-system/typography/paragraphs' +import { Intro } from '@/design-system/typography/paragraphs' +import { Company } from '@/reducers/inFranceAppReducer' +import { RootState } from '@/reducers/rootReducer' +import { Grid } from '@mui/material' import { useContext, useEffect, useRef, useState } from 'react' import { Helmet } from 'react-helmet-async' import { Trans, useTranslation } from 'react-i18next' import { useDispatch, useSelector } from 'react-redux' import { Redirect } from 'react-router' -import { Company } from '@/reducers/inFranceAppReducer' -import { RootState } from '@/reducers/rootReducer' import styled from 'styled-components' import { TrackPage } from '../../ATInternetTracking' import { SimulateurCard } from '../Simulateurs/Home' @@ -34,80 +35,75 @@ import { SecuriteSocialeCard } from './cards/SecuriteSocialeCard' import forms from './forms.svg' import growth from './growth.svg' -export type DirigeantOrNull = keyof SimulatorData | null - -const infereDirigeantSimulateurFromCompanyDetails = ( - company: Company | null -): DirigeantOrNull => { - if (!company) { - return null - } - if (company.isAutoEntrepreneur) { +const infereSimulateurRevenuFromSituation = ( + engine: Engine +): keyof SimulatorData | null => { + if (engine.evaluate('entreprise . auto-entrepreneur').nodeValue) { return 'auto-entrepreneur' } + const catégorieJuridique = engine.evaluate( + 'entreprise . catégorie juridique' + ).nodeValue + if ( - company.statutJuridique && - ['EIRL', 'EURL', 'EI'].includes(company.statutJuridique) && - inferPLSimulateurFromCompanyDetails(company) + engine.evaluate('entreprise . catégorie juridique . SARL . unipersonnelle') + .nodeValue ) { - return inferPLSimulateurFromCompanyDetails(company) - } - if (company.statutJuridique === 'EI') { - return 'entreprise-individuelle' + return 'eurl' } if ( - company.statutJuridique && - ['EIRL', 'SASU', 'EURL'].includes(company.statutJuridique) + engine.evaluate('entreprise . catégorie juridique . SAS . unipersonnelle') + .nodeValue ) { - return company.statutJuridique.toLowerCase() as 'eirl' | 'sasu' | 'eurl' + return 'sasu' } - if (company.statutJuridique === 'SARL') { - return 'indépendant' + if (catégorieJuridique === 'EI') { + const métierProfessionLibéral = engine.evaluate( + 'dirigeant . indépendant . PL . métier' + ).nodeValue + switch (métierProfessionLibéral) { + case 'avocat': + return 'avocat' + case 'expert-comptable': + return 'expert-comptable' + case 'santé . médecin': + return 'médecin' + case 'santé . chirurgien-dentiste': + return 'chirurgien-dentiste' + case 'santé . sage-femme': + return 'sage-femme' + case 'santé . auxiliaire médical': + return 'auxiliaire-médical' + case 'santé . pharmacien': + return 'pharmacien' + } + if (engine.evaluate('dirigeant . PL').nodeValue) { + return 'profession-libérale' + } + return 'entreprise-individuelle' } + const régimeSocial = engine.evaluate('dirigeant . régime social').nodeValue - if (company.statutJuridique === 'SAS') { - return 'sasu' + if (régimeSocial === 'indépendant') { + return 'indépendant' } - + // TODO : assimilé-salarié + // if ( + // régimeSocial === 'assimilé-salarié' + // ) { + // return 'assimilé-salarié' + // } return null } -// Profession Libérale -const inferPLSimulateurFromCompanyDetails = ( - company: Company | null -): DirigeantOrNull => { - if (!company) { - return null - } - const activiteToSimulator = { - 'Activités comptables': 'expert-comptable', - 'Activité des médecins généralistes': 'médecin', - 'Activités de radiodiagnostic et de radiothérapie': 'médecin', - 'Activités chirurgicales': 'médecin', - 'Activité des médecins spécialistes': 'médecin', - 'Activités hospitalières': 'pamc', - 'Pratique dentaire': 'chirurgien-dentiste', - 'Commerce de détail de produits pharmaceutiques en magasin spécialisé': - 'pharmacien', - 'Activités des infirmiers et des sages-femmes': 'pamc', - "Activités des professionnels de la rééducation, de l'appareillage et des pédicures-podologues": - 'auxiliaire-médical', - "Laboratoires d'analyses médicales": 'pharmacien', - 'Arts du spectacle vivant': 'artiste-auteur', - 'Création artistique relevant des arts plastiques': 'artiste-auteur', - 'Autre création artistique': 'artiste-auteur', - 'Activités photographiques': 'artiste-auteur', - } as Record - return activiteToSimulator[company.activitePrincipale] || null -} - export default function Gérer() { const { t, i18n } = useTranslation() const company = useSelector( (state: RootState) => state.inFranceApp.existingCompany ) - const dirigeantSimulateur = - infereDirigeantSimulateurFromCompanyDetails(company) + const dirigeantSimulateur = infereSimulateurRevenuFromSituation( + useContext(EngineContext) + ) const simulateurs = useSimulatorsData() const sitePaths = useContext(SitePathsContext) if (!company) { @@ -133,7 +129,7 @@ export default function Gérer() { grâce aux simulateurs adaptés à votre situation. - + @@ -154,29 +150,25 @@ export default function Gérer() { /> )} - {company?.statutJuridique && - ['EIRL', 'EI', 'EURL', 'SARL'].includes( - company.statutJuridique - ) && - !company.isAutoEntrepreneur && ( - - )} - {company?.statutJuridique && - ['SARL', 'SASU', 'SAS'].includes(company.statutJuridique) && ( - - - - - + + + ) + + + + + + - )} + + @@ -204,16 +196,17 @@ export default function Gérer() { )} - {!company?.isAutoEntrepreneur && ( + - )} - {company?.isAutoEntrepreneur && ( + + - )} + + @@ -231,7 +224,9 @@ type CompanySectionProps = { company: Company | null } -export const CompanySection = ({ company }: CompanySectionProps) => { +export const CompanyDetailsConversation = ({ + company, +}: CompanySectionProps) => { const [autoEntrepreneurModal, showAutoEntrepreneurModal] = useState(false) const sitePaths = useContext(SitePathsContext) diff --git a/site/source/pages/Simulateurs/configs/artiste-auteur.yaml b/site/source/pages/Simulateurs/configs/artiste-auteur.yaml index 8bfc7b626f..df54469061 100644 --- a/site/source/pages/Simulateurs/configs/artiste-auteur.yaml +++ b/site/source/pages/Simulateurs/configs/artiste-auteur.yaml @@ -1,5 +1,6 @@ situation: - dirigeant: "'artiste-auteur'" + dirigeant: non + contrat salarié: non unité par défaut: €/an objectifs: - artiste-auteur . cotisations diff --git a/site/source/pages/Simulateurs/configs/auto-entrepreneur.yaml b/site/source/pages/Simulateurs/configs/auto-entrepreneur.yaml index 2b8ae8cae6..aae079f1f0 100644 --- a/site/source/pages/Simulateurs/configs/auto-entrepreneur.yaml +++ b/site/source/pages/Simulateurs/configs/auto-entrepreneur.yaml @@ -26,4 +26,4 @@ questions: unité par défaut: €/an situation: entreprise . activité . mixte: non - dirigeant: "'auto-entrepreneur'" + dirigeant . régime social: "'auto-entrepreneur'" diff --git a/site/source/pages/Simulateurs/configs/dirigeant-sasu.yaml b/site/source/pages/Simulateurs/configs/dirigeant-sasu.yaml index 25b0354e09..2fd79a1ff7 100644 --- a/site/source/pages/Simulateurs/configs/dirigeant-sasu.yaml +++ b/site/source/pages/Simulateurs/configs/dirigeant-sasu.yaml @@ -27,7 +27,7 @@ questions: unité par défaut: €/an situation: - dirigeant: "'assimilé salarié'" + dirigeant . régime social: "'assimilé salarié'" entreprise . résultat fiscal: 0 €/an #TODO : en attendant que la transitivité du remplacement soit implémentée (https://github.com/betagouv/publicodes/issues/55) diff --git a/site/source/pages/Simulateurs/configs/dividendes.yaml b/site/source/pages/Simulateurs/configs/dividendes.yaml index 74330a5d76..274b161631 100644 --- a/site/source/pages/Simulateurs/configs/dividendes.yaml +++ b/site/source/pages/Simulateurs/configs/dividendes.yaml @@ -11,7 +11,7 @@ questions: unité par défaut: €/an situation: - dirigeant: "'assimilé salarié'" # [TODO] [dividendes-indep] + dirigeant . régime social: "'assimilé salarié'" # [TODO] [dividendes-indep] bénéficiaire: oui entreprise . imposition: "'IS'" impôt . méthode de calcul: "'PFU'" diff --git "a/site/source/pages/Simulateurs/configs/ind\303\251pendant.yaml" "b/site/source/pages/Simulateurs/configs/ind\303\251pendant.yaml" index f6d315bb42..6f7ed20032 100644 --- "a/site/source/pages/Simulateurs/configs/ind\303\251pendant.yaml" +++ "b/site/source/pages/Simulateurs/configs/ind\303\251pendant.yaml" @@ -30,4 +30,4 @@ questions: - entreprise . activité . débit de tabac unité par défaut: €/an situation: - dirigeant: "'indépendant'" + dirigeant . régime social: "'indépendant'" diff --git "a/site/source/pages/Simulateurs/configs/profession-lib\303\251rale.yaml" "b/site/source/pages/Simulateurs/configs/profession-lib\303\251rale.yaml" index b86e45c87e..a84e8c84a3 100644 --- "a/site/source/pages/Simulateurs/configs/profession-lib\303\251rale.yaml" +++ "b/site/source/pages/Simulateurs/configs/profession-lib\303\251rale.yaml" @@ -26,6 +26,6 @@ questions: - entreprise . ZFU unité par défaut: €/an situation: - dirigeant: "'indépendant'" + dirigeant . régime social: "'indépendant'" entreprise . activité: "'libérale'" entreprise . imposition: "'IR'" diff --git "a/site/source/pages/Simulateurs/configs/r\303\251mun\303\251ration-dirigeant.yaml" "b/site/source/pages/Simulateurs/configs/r\303\251mun\303\251ration-dirigeant.yaml" index 24fdd6b29a..ec8b3f459e 100644 --- "a/site/source/pages/Simulateurs/configs/r\303\251mun\303\251ration-dirigeant.yaml" +++ "b/site/source/pages/Simulateurs/configs/r\303\251mun\303\251ration-dirigeant.yaml" @@ -17,6 +17,6 @@ questions: - entreprise . activité unité par défaut: €/an situation: - dirigeant: "'auto-entrepreneur'" + dirigeant . régime social: "'auto-entrepreneur'" entreprise . activité . mixte: non contrat salarié . ATMP . taux réduit: oui diff --git a/site/source/reducers/inFranceAppReducer.ts b/site/source/reducers/inFranceAppReducer.ts index 23f004677e..897b8a2491 100644 --- a/site/source/reducers/inFranceAppReducer.ts +++ b/site/source/reducers/inFranceAppReducer.ts @@ -86,35 +86,7 @@ function companyStatusChoice(state: LegalStatus | null = null, action: Action) { return action.statusName } -type StatutJuridique = 'EI/EIRL' | 'EURL/SARL' | 'SASU/SAS' | 'AUTRE' - -const infereLegalStatusFromCategorieJuridique = ( - catégorieJuridique: string -): StatutJuridique => { - /* - Nous utilisons le code entreprise pour connaitre le statut juridique - (voir https://www.insee.fr/fr/information/2028129) - - En revanche, impossible de différencier EI et auto-entreprise - https://www.sirene.fr/sirene/public/question.action?idQuestion=2933 - */ - - if (catégorieJuridique === '1000') { - return 'EI/EIRL' - } - if (/^54..$/.exec(catégorieJuridique)) { - return 'EURL/SARL' - } - if (/^57..$/.exec(catégorieJuridique)) { - return 'SASU/SAS' - } - return 'AUTRE' -} - export type Company = Omit & { - statutJuridique?: StatutJuridique - isAutoEntrepreneur?: boolean - isDirigeantMajoritaire?: boolean localisation?: ApiCommuneJson } @@ -128,24 +100,6 @@ function existingCompany( if (action.type === 'EXISTING_COMPANY::RESET') { return null } - if (action.type === 'EXISTING_COMPANY::SET_COMPANY') { - const statutJuridique = infereLegalStatusFromCategorieJuridique( - action.entreprise.categorieJuridiqueUniteLegale - ) - return { - ...omit(action.entreprise, 'highlightLabel'), - statutJuridique, - } - } - if (state && action.type === 'EXISTING_COMPANY::SPECIFY_AUTO_ENTREPRENEUR') { - return { ...state, isAutoEntrepreneur: action.isAutoEntrepreneur } - } - if ( - state && - action.type === 'EXISTING_COMPANY::SPECIFY_DIRIGEANT_MAJORITAIRE' - ) { - return { ...state, isDirigeantMajoritaire: action.isDirigeantMajoritaire } - } if (state && action.type === 'EXISTING_COMPANY::ADD_COMMUNE_DETAILS') { return { ...state, localisation: action.details } } diff --git a/site/test/regressions/simulations-dividendes.yaml b/site/test/regressions/simulations-dividendes.yaml index 728d2c8861..5291fee443 100644 --- a/site/test/regressions/simulations-dividendes.yaml +++ b/site/test/regressions/simulations-dividendes.yaml @@ -1,47 +1,47 @@ pfu: - bénéficiaire . dividendes . bruts: 200 €/an impôt . méthode de calcul: "'PFU'" - dirigeant: "'assimilé salarié'" + dirigeant . régime social: "'assimilé salarié'" - bénéficiaire . dividendes . bruts: 20000000 €/an impôt . méthode de calcul: "'PFU'" - dirigeant: "'assimilé salarié'" + dirigeant . régime social: "'assimilé salarié'" barème défauts: - bénéficiaire . dividendes . bruts: 200 €/an impôt . méthode de calcul: "'barème standard'" - dirigeant: "'assimilé salarié'" + dirigeant . régime social: "'assimilé salarié'" - bénéficiaire . dividendes . bruts: 20000000 €/an impôt . méthode de calcul: "'barème standard'" - dirigeant: "'assimilé salarié'" + dirigeant . régime social: "'assimilé salarié'" - bénéficiaire . dividendes . bruts: 200 €/an impôt . méthode de calcul: "'barème standard'" - dirigeant: "'assimilé salarié'" + dirigeant . régime social: "'assimilé salarié'" impôt . foyer fiscal . revenu imposable . autres revenus imposables: 500000 €/an - bénéficiaire . dividendes . bruts: 20000 €/an impôt . méthode de calcul: "'barème standard'" - dirigeant: "'assimilé salarié'" + dirigeant . régime social: "'assimilé salarié'" impôt . foyer fiscal . revenu imposable . autres revenus imposables: 50000 €/an barème couple 2 enfants: - bénéficiaire . dividendes . bruts: 200 €/an impôt . méthode de calcul: "'barème standard'" - dirigeant: "'assimilé salarié'" + dirigeant . régime social: "'assimilé salarié'" impôt . foyer fiscal . enfants à charge: 2 impôt . foyer fiscal . situation de famille: "'couple'" - bénéficiaire . dividendes . bruts: 20000000 €/an impôt . méthode de calcul: "'barème standard'" - dirigeant: "'assimilé salarié'" + dirigeant . régime social: "'assimilé salarié'" impôt . foyer fiscal . enfants à charge: 2 impôt . foyer fiscal . situation de famille: "'couple'" - bénéficiaire . dividendes . bruts: 200 €/an impôt . méthode de calcul: "'barème standard'" - dirigeant: "'assimilé salarié'" + dirigeant . régime social: "'assimilé salarié'" impôt . foyer fiscal . revenu imposable . autres revenus imposables: 500000 €/an impôt . foyer fiscal . enfants à charge: 2 impôt . foyer fiscal . situation de famille: "'couple'" - bénéficiaire . dividendes . bruts: 20000 €/an impôt . méthode de calcul: "'barème standard'" - dirigeant: "'assimilé salarié'" + dirigeant . régime social: "'assimilé salarié'" impôt . foyer fiscal . revenu imposable . autres revenus imposables: 50000 €/an impôt . foyer fiscal . enfants à charge: 2 impôt . foyer fiscal . situation de famille: "'couple'" diff --git "a/site/test/regressions/simulations-salari\303\251.yaml" "b/site/test/regressions/simulations-salari\303\251.yaml" index f7a33b5f47..848a3e6cb2 100644 --- "a/site/test/regressions/simulations-salari\303\251.yaml" +++ "b/site/test/regressions/simulations-salari\303\251.yaml" @@ -87,12 +87,12 @@ atmp: contrat salarié . ATMP . taux collectif ATMP: 5% assimilé salarié: - - dirigeant: "'assimilé salarié'" + - dirigeant . régime social: "'assimilé salarié'" contrat salarié . rémunération . brut de base: 5000 €/mois - - dirigeant: "'assimilé salarié'" + - dirigeant . régime social: "'assimilé salarié'" contrat salarié . rémunération . brut de base: 1500 €/mois entreprise . ACRE: oui - - dirigeant: "'assimilé salarié'" + - dirigeant . régime social: "'assimilé salarié'" contrat salarié . rémunération . brut de base: 3000 €/mois entreprise . ACRE: oui @@ -266,7 +266,7 @@ JEI: - contrat salarié . rémunération . brut de base: 20000 €/mois contrat salarié . statut JEI: oui - contrat salarié . rémunération . brut de base: 4000 €/mois - dirigeant: "'assimilé salarié'" + dirigeant . régime social: "'assimilé salarié'" contrat salarié . statut JEI: oui frais pro - titres restaurant: diff --git a/site/test/regressions/simulations.test.ts b/site/test/regressions/simulations.test.ts index 92ad960cb7..36da1cc332 100644 --- a/site/test/regressions/simulations.test.ts +++ b/site/test/regressions/simulations.test.ts @@ -108,7 +108,7 @@ it('calculate simulations-rémunération-dirigeant (assimilé salarié)', () => remunerationDirigeantConfig.objectifs, { ...remunerationDirigeantConfig.situation, - dirigeant: "'assimilé salarié'", + 'dirigeant . régime social': "'assimilé salarié'", } ) }) @@ -119,7 +119,7 @@ it('calculate simulations-rémunération-dirigeant (auto-entrepreneur)', () => { remunerationDirigeantConfig.objectifs, { ...remunerationDirigeantConfig.situation, - dirigeant: "'auto-entrepreneur'", + 'dirigeant . régime social': "'auto-entrepreneur'", } ) }) @@ -130,7 +130,7 @@ it('calculate simulations-rémunération-dirigeant (indépendant)', () => { remunerationDirigeantConfig.objectifs, { ...remunerationDirigeantConfig.situation, - dirigeant: "'indépendant'", + 'dirigeant . régime social': "'indépendant'", } ) }) diff --git a/yarn.lock b/yarn.lock index be2e2ef395..6a2fc0881f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15820,30 +15820,28 @@ __metadata: languageName: node linkType: hard -"publicodes-react@npm:^1.0.0-beta.32": - version: 1.0.0-beta.32 - resolution: "publicodes-react@npm:1.0.0-beta.32" +"publicodes-react@portal:/home/johan/Projets/publicodes/packages/react-ui::locator=root%40workspace%3A.": + version: 0.0.0-use.local + resolution: "publicodes-react@portal:/home/johan/Projets/publicodes/packages/react-ui::locator=root%40workspace%3A." dependencies: styled-components: ^5.1.0 peerDependencies: publicodes: 1.0.0-beta.32 react: ^17.0.2 - checksum: 2cdf91420982e909869cf9ddc1754943d4e5e8bef7545e4d5afdfc202eb1bbdcb33197bb4ad2978f6cfd02aad3229ec53061ff06680c9f2917638fde79b98b28 languageName: node - linkType: hard + linkType: soft -"publicodes@npm:^1.0.0-beta.32": - version: 1.0.0-beta.32 - resolution: "publicodes@npm:1.0.0-beta.32" +"publicodes@portal:/home/johan/Projets/publicodes/packages/core::locator=root%40workspace%3A.": + version: 0.0.0-use.local + resolution: "publicodes@portal:/home/johan/Projets/publicodes/packages/core::locator=root%40workspace%3A." dependencies: moo: ^0.5.1 nearley: ^2.19.2 yaml: ^1.9.2 peerDependencies: "@types/mocha": ^9.0.0 - checksum: 674a5f1ee9f755cf8f9fd2312523ee70f3963b1c8cb9e0249919ad48269f3dbe831d4fe3e1c13400216bd21b34d2bbd5f71e571b3adc210ebdb1c2dc18ee72d6 languageName: node - linkType: hard + linkType: soft "pump@npm:^2.0.0": version: 2.0.1