🏗Add export as Pdf button on simulators
parent
8c7a14cb54
commit
5359392d70
|
@ -24,8 +24,8 @@ contrat salarié . convention collective . BTP . catégorie . ouvrier:
|
|||
icônes: 👨🔧
|
||||
formule: catégorie = 'ouvrier'
|
||||
|
||||
contrat salarié . convention collective . BTP . catégorie . ouvrier . prévoyance complémentaire:
|
||||
produit:
|
||||
? contrat salarié . convention collective . BTP . catégorie . ouvrier . prévoyance complémentaire
|
||||
: produit:
|
||||
assiette: rémunération . brut de base
|
||||
plafond: 3 * plafond sécurité sociale
|
||||
composantes:
|
||||
|
@ -55,8 +55,8 @@ contrat salarié . convention collective . BTP . catégorie . etam:
|
|||
note: >-
|
||||
Répartition conventionnelle fixée par l’article 5 de l’Accord du BTP du 13 décembre 1990.
|
||||
|
||||
contrat salarié . convention collective . BTP . catégorie . etam . prévoyance complémentaire:
|
||||
produit:
|
||||
? contrat salarié . convention collective . BTP . catégorie . etam . prévoyance complémentaire
|
||||
: produit:
|
||||
assiette: rémunération . brut de base
|
||||
plafond: 3 * plafond sécurité sociale
|
||||
composantes:
|
||||
|
@ -77,8 +77,8 @@ contrat salarié . convention collective . BTP . catégorie . cadre:
|
|||
- règle: statut cadre
|
||||
par: oui
|
||||
|
||||
contrat salarié . convention collective . BTP . catégorie . cadre . prévoyance complémentaire:
|
||||
barème:
|
||||
? contrat salarié . convention collective . BTP . catégorie . cadre . prévoyance complémentaire
|
||||
: barème:
|
||||
assiette: rémunération . brut de base
|
||||
multiplicateur: plafond sécurité sociale
|
||||
composantes:
|
||||
|
@ -138,8 +138,8 @@ contrat salarié . convention collective . BTP . congés intempéries:
|
|||
CIBTP: https://www.cibtp.fr/
|
||||
Article L3141-30 du Code du Travail: https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=DF6E6424807679A6EDC2915496BEA32D.tplgfr22s_2?idArticle=LEGIARTI000033020675&cidTexte=LEGITEXT000006072050&dateTexte=20200320
|
||||
|
||||
contrat salarié . convention collective . BTP . congés intempéries . caisse de rattachement:
|
||||
question: À quelle caisse l'entreprise est-elle rattachée pour le versement de la cotisation congés intempéries ?
|
||||
? contrat salarié . convention collective . BTP . congés intempéries . caisse de rattachement
|
||||
: question: À quelle caisse l'entreprise est-elle rattachée pour le versement de la cotisation congés intempéries ?
|
||||
formule:
|
||||
une possibilité:
|
||||
choix obligatoire: oui
|
||||
|
@ -155,8 +155,8 @@ contrat salarié . convention collective . BTP . congés intempéries . caisse d
|
|||
- sud ouest
|
||||
par défaut: "'idf'"
|
||||
|
||||
contrat salarié . convention collective . BTP . congés intempéries . caisse de rattachement . idf:
|
||||
titre: Île-de-France
|
||||
? contrat salarié . convention collective . BTP . congés intempéries . caisse de rattachement . idf
|
||||
: titre: Île-de-France
|
||||
contrat salarié . convention collective . BTP . congés intempéries . caisse de rattachement . nord ouest:
|
||||
contrat salarié . convention collective . BTP . congés intempéries . caisse de rattachement . grand ouest:
|
||||
contrat salarié . convention collective . BTP . congés intempéries . caisse de rattachement . centre ouest:
|
||||
|
|
|
@ -10,8 +10,8 @@ contrat salarié . convention collective . compta:
|
|||
Légifrance: https://www.legifrance.gouv.fr/affichIDCC.do?idConvention=KALICONT000005635826
|
||||
Synthèse Dicotravail: https://www.dicotravail.com/convention-collective/experts-comptables-jo-3020-idcc-787/
|
||||
|
||||
contrat salarié . convention collective . compta . majoration heures supplémentaires:
|
||||
remplace: temps de travail . heures supplémentaires . majoration
|
||||
? contrat salarié . convention collective . compta . majoration heures supplémentaires
|
||||
: remplace: temps de travail . heures supplémentaires . majoration
|
||||
formule:
|
||||
barème:
|
||||
assiette: temps de travail . heures supplémentaires
|
||||
|
|
|
@ -9,8 +9,8 @@ contrat salarié . convention collective . HCR . montant forfaitaire d'un repas:
|
|||
règle: rémunération . avantages en nature . nourriture . montant . repas forfaitaire
|
||||
formule: 3.62 €/repas
|
||||
|
||||
contrat salarié . convention collective . HCR . majoration heures supplémentaires:
|
||||
remplace: temps de travail . heures supplémentaires . majoration
|
||||
? contrat salarié . convention collective . HCR . majoration heures supplémentaires
|
||||
: remplace: temps de travail . heures supplémentaires . majoration
|
||||
formule:
|
||||
barème:
|
||||
assiette: temps de travail . heures supplémentaires
|
||||
|
|
|
@ -25,8 +25,8 @@ contrat salarié . convention collective . optique . prime d'ancienneté:
|
|||
références:
|
||||
Légifrance: https://www.legifrance.gouv.fr/affichIDCC.do?idSectionTA=KALISCTA000005736434&cidTexte=KALITEXT000005649634&idConvention=KALICONT000005635912
|
||||
|
||||
contrat salarié . convention collective . optique . salaire minimum conventionnel:
|
||||
unité: €/mois
|
||||
? contrat salarié . convention collective . optique . salaire minimum conventionnel
|
||||
: unité: €/mois
|
||||
formule:
|
||||
variations:
|
||||
- si: coefficient < 110
|
||||
|
|
|
@ -85,8 +85,8 @@ contrat salarié . intermittents du spectacle . caisse des congés spectacle:
|
|||
audiens.org: https://www.audiens.org/files/live/sites/siteAudiens/files/03_documents/entreprise/Fiches-techniques/Conges-Spectacles-Mode-d-emploi-employeur-2019.pdf
|
||||
Article L3141-30 du Code du Travail: https://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=DF6E6424807679A6EDC2915496BEA32D.tplgfr22s_2?idArticle=LEGIARTI000033020675&cidTexte=LEGITEXT000006072050&dateTexte=20200320
|
||||
|
||||
contrat salarié . intermittents du spectacle . retraite complémentaire techniciens et cadre:
|
||||
applicable si:
|
||||
? contrat salarié . intermittents du spectacle . retraite complémentaire techniciens et cadre
|
||||
: applicable si:
|
||||
une de ces conditions:
|
||||
- statut cadre
|
||||
- technicien
|
||||
|
@ -191,16 +191,16 @@ contrat salarié . intermittents du spectacle . artiste . réduction de taux:
|
|||
par: FNAL . taux * réduction de taux
|
||||
formule: 70%
|
||||
|
||||
contrat salarié . intermittents du spectacle . artiste . réduction de taux . ATMP:
|
||||
remplace: ATMP . taux
|
||||
? contrat salarié . intermittents du spectacle . artiste . réduction de taux . ATMP
|
||||
: remplace: ATMP . taux
|
||||
formule:
|
||||
variations:
|
||||
- si: régime alsace moselle
|
||||
alors: 1.54%
|
||||
- sinon: 1.12%
|
||||
|
||||
contrat salarié . intermittents du spectacle . artiste . nombre jours travaillés:
|
||||
question: Pour combien de jours continus l'artiste est-il engagé ?
|
||||
? contrat salarié . intermittents du spectacle . artiste . nombre jours travaillés
|
||||
: question: Pour combien de jours continus l'artiste est-il engagé ?
|
||||
par défaut: 5 jours
|
||||
|
||||
contrat salarié . intermittents du spectacle . artiste . plafond proratisé:
|
||||
|
@ -222,12 +222,12 @@ contrat salarié . intermittents du spectacle . artiste . acteur de complément:
|
|||
question: L'artiste est-il un acteur de complément engagé à la journée pour une production cinématographique ?
|
||||
par defaut: non
|
||||
|
||||
contrat salarié . intermittents du spectacle . artiste . acteur de complément . nombre jours travaillés:
|
||||
remplace: artiste . nombre jours travaillés
|
||||
? contrat salarié . intermittents du spectacle . artiste . acteur de complément . nombre jours travaillés
|
||||
: remplace: artiste . nombre jours travaillés
|
||||
formule: 1
|
||||
|
||||
contrat salarié . intermittents du spectacle . artiste . acteur de complément . assiette forfaitaire:
|
||||
applicable si: rémunération . brut < 6% * plafond sécurité sociale temps plein
|
||||
? contrat salarié . intermittents du spectacle . artiste . acteur de complément . assiette forfaitaire
|
||||
: applicable si: rémunération . brut < 6% * plafond sécurité sociale temps plein
|
||||
remplace:
|
||||
- contrat salarié . cotisations . assiette forfaitaire
|
||||
- règle: nombre jours travaillés
|
||||
|
|
|
@ -17,8 +17,8 @@ contrat salarié . convention collective . sport . cotisations . patronales:
|
|||
- prévoyance . employeur
|
||||
- financement du paritarisme
|
||||
|
||||
contrat salarié . convention collective . sport . cotisations . financement du paritarisme:
|
||||
# TODO
|
||||
? contrat salarié . convention collective . sport . cotisations . financement du paritarisme
|
||||
: # TODO
|
||||
note: se calcule sur la masse salariale
|
||||
formule:
|
||||
produit:
|
||||
|
@ -49,15 +49,15 @@ contrat salarié . convention collective . sport . cotisations . prévoyance:
|
|||
références:
|
||||
Article 10.8 de la CCNS (IDCC 2511): https://www.legifrance.gouv.fr/affichIDCCArticle.do;?idArticle=KALIARTI000033304755&cidTexte=KALITEXT000017577657&dateTexte=29990101&categorieLien=id
|
||||
|
||||
contrat salarié . convention collective . sport . cotisations . régime frais de santé:
|
||||
remplace: contrat salarié . complémentaire santé . forfait
|
||||
? contrat salarié . convention collective . sport . cotisations . régime frais de santé
|
||||
: remplace: contrat salarié . complémentaire santé . forfait
|
||||
formule:
|
||||
produit:
|
||||
assiette: plafond sécurité sociale temps plein
|
||||
taux: taux
|
||||
|
||||
contrat salarié . convention collective . sport . cotisations . régime frais de santé . taux:
|
||||
formule:
|
||||
? contrat salarié . convention collective . sport . cotisations . régime frais de santé . taux
|
||||
: formule:
|
||||
variations:
|
||||
- si: régime alsace moselle
|
||||
alors:
|
||||
|
@ -80,8 +80,8 @@ contrat salarié . convention collective . sport . cotisations . régime frais d
|
|||
unamens.fr: https://www.umanens.fr/reglementation-couverture-sante-obligatoire/ccn-sport
|
||||
unamens (notice pdf): https://www.umanens.fr/documents/doc-offres-2018/sport/juin-2019/CCN_SPORT_PLAQ_EMPLOYEUR_2019.pdf
|
||||
|
||||
contrat salarié . convention collective . sport . cotisations . régime frais de santé . option:
|
||||
question: Quel option a été choisi pour le régime des frais de santé ?
|
||||
? contrat salarié . convention collective . sport . cotisations . régime frais de santé . option
|
||||
: question: Quel option a été choisi pour le régime des frais de santé ?
|
||||
formule:
|
||||
une possibilité:
|
||||
choix obligatoire: oui
|
||||
|
@ -92,15 +92,15 @@ contrat salarié . convention collective . sport . cotisations . régime frais d
|
|||
par défaut: "'R1'"
|
||||
références:
|
||||
unamens.fr: https://www.umanens.fr/reglementation-couverture-sante-obligatoire/ccn-sport
|
||||
contrat salarié . convention collective . sport . cotisations . régime frais de santé . option . R1:
|
||||
formule: option = 'R1'
|
||||
contrat salarié . convention collective . sport . cotisations . régime frais de santé . option . R2:
|
||||
formule: option = 'R2'
|
||||
contrat salarié . convention collective . sport . cotisations . régime frais de santé . option . R3:
|
||||
formule: option = 'R3'
|
||||
? contrat salarié . convention collective . sport . cotisations . régime frais de santé . option . R1
|
||||
: formule: option = 'R1'
|
||||
? contrat salarié . convention collective . sport . cotisations . régime frais de santé . option . R2
|
||||
: formule: option = 'R2'
|
||||
? contrat salarié . convention collective . sport . cotisations . régime frais de santé . option . R3
|
||||
: formule: option = 'R3'
|
||||
|
||||
contrat salarié . convention collective . sport . cotisations . formation professionnelle:
|
||||
remplace: contrat salarié . formation professionnelle
|
||||
? contrat salarié . convention collective . sport . cotisations . formation professionnelle
|
||||
: remplace: contrat salarié . formation professionnelle
|
||||
formule:
|
||||
somme:
|
||||
- plan de formation
|
||||
|
@ -110,8 +110,8 @@ contrat salarié . convention collective . sport . cotisations . formation profe
|
|||
références:
|
||||
Article 8.6 de la CCNS (IDCC2511): https://www.legifrance.gouv.fr/affichIDCCArticle.do;?idArticle=KALIARTI000034406905&cidTexte=KALITEXT000017577657&dateTexte=29990101&categorieLien=id
|
||||
|
||||
contrat salarié . convention collective . sport . cotisations . formation professionnelle . plan de formation:
|
||||
formule:
|
||||
? contrat salarié . convention collective . sport . cotisations . formation professionnelle . plan de formation
|
||||
: formule:
|
||||
produit:
|
||||
assiette: cotisations . assiette
|
||||
taux:
|
||||
|
@ -122,12 +122,12 @@ contrat salarié . convention collective . sport . cotisations . formation profe
|
|||
alors: 0.90%
|
||||
plancher: versement minimum
|
||||
|
||||
contrat salarié . convention collective . sport . cotisations . formation professionnelle . plan de formation . versement minimum:
|
||||
applicable si: entreprise . effectif < 10
|
||||
? contrat salarié . convention collective . sport . cotisations . formation professionnelle . plan de formation . versement minimum
|
||||
: applicable si: entreprise . effectif < 10
|
||||
formule: 30 €/mois
|
||||
|
||||
contrat salarié . convention collective . sport . cotisations . formation professionnelle . professionnalisation:
|
||||
formule:
|
||||
? contrat salarié . convention collective . sport . cotisations . formation professionnelle . professionnalisation
|
||||
: formule:
|
||||
produit:
|
||||
assiette: cotisations . assiette
|
||||
taux:
|
||||
|
@ -138,12 +138,12 @@ contrat salarié . convention collective . sport . cotisations . formation profe
|
|||
alors: 0.50%
|
||||
plancher: versement minimum
|
||||
|
||||
contrat salarié . convention collective . sport . cotisations . formation professionnelle . professionnalisation . versement minimum:
|
||||
applicable si: entreprise . effectif < 10
|
||||
? contrat salarié . convention collective . sport . cotisations . formation professionnelle . professionnalisation . versement minimum
|
||||
: applicable si: entreprise . effectif < 10
|
||||
formule: 5 €/mois
|
||||
|
||||
contrat salarié . convention collective . sport . cotisations . formation professionnelle . CIF CDI:
|
||||
applicable si:
|
||||
? contrat salarié . convention collective . sport . cotisations . formation professionnelle . CIF CDI
|
||||
: applicable si:
|
||||
toutes ces conditions:
|
||||
- CDI
|
||||
- entreprise . effectif >= 20
|
||||
|
@ -152,15 +152,15 @@ contrat salarié . convention collective . sport . cotisations . formation profe
|
|||
assiette: cotisations . assiette
|
||||
taux: 0.20%
|
||||
|
||||
contrat salarié . convention collective . sport . cotisations . formation professionnelle . CIF CDD:
|
||||
applicable si: CDD
|
||||
? contrat salarié . convention collective . sport . cotisations . formation professionnelle . CIF CDD
|
||||
: applicable si: CDD
|
||||
formule:
|
||||
produit:
|
||||
assiette: cotisations . assiette
|
||||
taux: 1%
|
||||
|
||||
contrat salarié . convention collective . sport . cotisations . assiette franchisée:
|
||||
formule:
|
||||
? contrat salarié . convention collective . sport . cotisations . assiette franchisée
|
||||
: formule:
|
||||
valeur: cotisations . assiette
|
||||
abattement: franchise
|
||||
|
||||
|
@ -178,13 +178,13 @@ contrat salarié . convention collective . sport . exonération cotisation AT:
|
|||
par: non
|
||||
formule: oui
|
||||
|
||||
contrat salarié . convention collective . sport . exonération cotisation AT . refus:
|
||||
titre: refus exonération AT
|
||||
? contrat salarié . convention collective . sport . exonération cotisation AT . refus
|
||||
: titre: refus exonération AT
|
||||
question: L'employeur a-t'il refusé d'être exonéré de cotisations AT ?
|
||||
par défaut: non
|
||||
|
||||
contrat salarié . convention collective . sport . cotisations . assiette forfaitaire:
|
||||
applicable si: assiette franchisée < SMIC horaire * 115 heures/mois
|
||||
? contrat salarié . convention collective . sport . cotisations . assiette forfaitaire
|
||||
: applicable si: assiette franchisée < SMIC horaire * 115 heures/mois
|
||||
remplace: contrat salarié . cotisations . assiette forfaitaire
|
||||
formule:
|
||||
grille:
|
||||
|
@ -203,8 +203,8 @@ contrat salarié . convention collective . sport . cotisations . assiette forfai
|
|||
- montant: 50 * SMIC horaire
|
||||
plafond: 115 heures
|
||||
|
||||
contrat salarié . convention collective . sport . primes . nombre de manifestations:
|
||||
question: Combien de manifestations rémunérées le joueur a-t'il effectué ?
|
||||
? contrat salarié . convention collective . sport . primes . nombre de manifestations
|
||||
: question: Combien de manifestations rémunérées le joueur a-t'il effectué ?
|
||||
#TODO : gérer la période
|
||||
par défaut: 0 manifestations
|
||||
|
||||
|
@ -227,8 +227,8 @@ contrat salarié . convention collective . sport . primes . manifestation 1:
|
|||
applicable si: nombre de manifestations > 0
|
||||
par défaut: 100 €
|
||||
|
||||
contrat salarié . convention collective . sport . primes . manifestation 1 . franchise:
|
||||
titre: franchise manifestation 1
|
||||
? contrat salarié . convention collective . sport . primes . manifestation 1 . franchise
|
||||
: titre: franchise manifestation 1
|
||||
formule:
|
||||
valeur: manifestation 1
|
||||
plafond: 70% * plafond journalier sécurité sociale
|
||||
|
@ -238,8 +238,8 @@ contrat salarié . convention collective . sport . primes . manifestation 2:
|
|||
applicable si: nombre de manifestations > 1
|
||||
par défaut: 100 €
|
||||
|
||||
contrat salarié . convention collective . sport . primes . manifestation 2 . franchise:
|
||||
titre: franchise manifestation 2
|
||||
? contrat salarié . convention collective . sport . primes . manifestation 2 . franchise
|
||||
: titre: franchise manifestation 2
|
||||
formule:
|
||||
valeur: manifestation 2
|
||||
plafond: 70% * plafond journalier sécurité sociale
|
||||
|
@ -249,8 +249,8 @@ contrat salarié . convention collective . sport . primes . manifestation 3:
|
|||
applicable si: nombre de manifestations > 2
|
||||
par défaut: 100 €
|
||||
|
||||
contrat salarié . convention collective . sport . primes . manifestation 3 . franchise:
|
||||
titre: franchise manifestation 3
|
||||
? contrat salarié . convention collective . sport . primes . manifestation 3 . franchise
|
||||
: titre: franchise manifestation 3
|
||||
formule:
|
||||
valeur: manifestation 3
|
||||
plafond: 70% * plafond journalier sécurité sociale
|
||||
|
@ -260,8 +260,8 @@ contrat salarié . convention collective . sport . primes . manifestation 4:
|
|||
applicable si: nombre de manifestations > 3
|
||||
par défaut: 100 €
|
||||
|
||||
contrat salarié . convention collective . sport . primes . manifestation 4 . franchise:
|
||||
titre: franchise manifestation 4
|
||||
? contrat salarié . convention collective . sport . primes . manifestation 4 . franchise
|
||||
: titre: franchise manifestation 4
|
||||
formule:
|
||||
valeur: manifestation 4
|
||||
plafond: 70% * plafond journalier sécurité sociale
|
||||
|
@ -271,14 +271,14 @@ contrat salarié . convention collective . sport . primes . manifestation 5:
|
|||
applicable si: nombre de manifestations > 4
|
||||
par défaut: 100 €
|
||||
|
||||
contrat salarié . convention collective . sport . primes . manifestation 5 . franchise:
|
||||
titre: franchise manifestation 5
|
||||
? contrat salarié . convention collective . sport . primes . manifestation 5 . franchise
|
||||
: titre: franchise manifestation 5
|
||||
formule:
|
||||
valeur: manifestation 5
|
||||
plafond: 70% * plafond journalier sécurité sociale
|
||||
|
||||
contrat salarié . convention collective . sport . primes . autres manifestations:
|
||||
question: Quelles primes pour les autres manifestations ?
|
||||
? contrat salarié . convention collective . sport . primes . autres manifestations
|
||||
: question: Quelles primes pour les autres manifestations ?
|
||||
applicable si: nombre de manifestations > 5
|
||||
par défaut: 100 €
|
||||
|
||||
|
|
|
@ -227,8 +227,8 @@ dirigeant . auto-entrepreneur . cotisations et contributions . TFC . métiers:
|
|||
références:
|
||||
service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F32847
|
||||
|
||||
dirigeant . auto-entrepreneur . cotisations et contributions . TFC . métiers . taux Alsace:
|
||||
remplace:
|
||||
? dirigeant . auto-entrepreneur . cotisations et contributions . TFC . métiers . taux Alsace
|
||||
: remplace:
|
||||
- règle: taux service
|
||||
par: 0.65%
|
||||
- règle: taux vente
|
||||
|
@ -239,8 +239,8 @@ dirigeant . auto-entrepreneur . cotisations et contributions . TFC . métiers .
|
|||
références:
|
||||
service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F32847
|
||||
|
||||
dirigeant . auto-entrepreneur . cotisations et contributions . TFC . métiers . taux Moselle:
|
||||
remplace:
|
||||
? dirigeant . auto-entrepreneur . cotisations et contributions . TFC . métiers . taux Moselle
|
||||
: remplace:
|
||||
- règle: taux service
|
||||
par: 0.83%
|
||||
- règle: taux vente
|
||||
|
@ -249,8 +249,8 @@ dirigeant . auto-entrepreneur . cotisations et contributions . TFC . métiers .
|
|||
références:
|
||||
service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F32847
|
||||
|
||||
dirigeant . auto-entrepreneur . cotisations et contributions . contribution formation professionnelle:
|
||||
titre: Contribution à la formation professionnelle
|
||||
? dirigeant . auto-entrepreneur . cotisations et contributions . contribution formation professionnelle
|
||||
: titre: Contribution à la formation professionnelle
|
||||
description: |
|
||||
En plus des charges sociales, les auto-entrepreneurs sont redevables d’une
|
||||
contribution à la formation professionnelle leur permettant de bénéficier du
|
||||
|
@ -310,8 +310,8 @@ dirigeant . auto-entrepreneur . cotisations et contributions . cotisations:
|
|||
economie.gouv.fr: https://www.economie.gouv.fr/entreprises/micro-entreprise-auto-entreprise-charges-sociales
|
||||
actualité urssaf.fr (2019): https://www.autoentrepreneur.urssaf.fr/portail/accueil/sinformer-sur-le-statut/toutes-les-actualites/nouveautes-2019--ce-qui-change-e.html
|
||||
|
||||
dirigeant . auto-entrepreneur . cotisations et contributions . cotisations . taux ACRE:
|
||||
titre: taux ACRE auto-entrepreneur
|
||||
? dirigeant . auto-entrepreneur . cotisations et contributions . cotisations . taux ACRE
|
||||
: titre: taux ACRE auto-entrepreneur
|
||||
applicable si: entreprise . ACRE
|
||||
remplace:
|
||||
règle: taux vente restauration hébergement
|
||||
|
@ -356,8 +356,8 @@ dirigeant . auto-entrepreneur . cotisations et contributions . cotisations . tau
|
|||
FAQ Urssaf avant 04/2020: https://www.autoentrepreneur.urssaf.fr/portail/accueil/une-question/questions-frequentes.html#quest-ce-qui-change-pour-moi-si
|
||||
service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F32318
|
||||
|
||||
dirigeant . auto-entrepreneur . cotisations et contributions . cotisations . taux ACRE . prestation de service:
|
||||
remplace: taux prestation de service
|
||||
? dirigeant . auto-entrepreneur . cotisations et contributions . cotisations . taux ACRE . prestation de service
|
||||
: remplace: taux prestation de service
|
||||
titre: taux prestation de service avec ACRE
|
||||
variations:
|
||||
- si:
|
||||
|
@ -553,8 +553,8 @@ dirigeant . indépendant . cotisations et contributions . PSS proratisé:
|
|||
plafond: 100%
|
||||
arrondi: oui
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . exonérations . ACRE . prorata sur l'année:
|
||||
description: |
|
||||
? dirigeant . indépendant . cotisations et contributions . exonérations . ACRE . prorata sur l'année
|
||||
: description: |
|
||||
Comme le calcul des cotisations indépendants s'effectue sur l'année entière,
|
||||
l'exonération est proratisée en fonction de la durée effective de l'ACRE sur l'année courante.
|
||||
|
||||
|
@ -565,8 +565,8 @@ dirigeant . indépendant . cotisations et contributions . exonérations . ACRE .
|
|||
|
||||
formule: (1 an - entreprise . durée d'activité . en début d'année) / 1 an
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . exonérations . ACRE . taux:
|
||||
formule:
|
||||
? dirigeant . indépendant . cotisations et contributions . exonérations . ACRE . taux
|
||||
: formule:
|
||||
taux progressif:
|
||||
assiette: assiette des cotisations
|
||||
multiplicateur: PSS proratisé
|
||||
|
@ -601,8 +601,8 @@ dirigeant . indépendant . conjoint collaborateur . assiette . forfaitaire:
|
|||
une assiette équivalente à 40% du PASS.
|
||||
formule: assiette = 'forfaitaire'
|
||||
|
||||
dirigeant . indépendant . conjoint collaborateur . assiette . revenu avec partage:
|
||||
description: |
|
||||
? dirigeant . indépendant . conjoint collaborateur . assiette . revenu avec partage
|
||||
: description: |
|
||||
Le conjoint collaborateur et le gérant paieront des cotisations sociales chacun sur une part du revenu professionnel.
|
||||
**Cette option baisse le montant des cotisations à payer pour le gérant, mais elle diminue également ses contreparties sociales (pension de retraite, indemnité décès, etc)**
|
||||
formule: assiette = 'revenu avec partage'
|
||||
|
@ -613,8 +613,8 @@ dirigeant . indépendant . conjoint collaborateur . assiette . revenu avec parta
|
|||
- cotisations et contributions . retraite de base
|
||||
- cotisations et contributions . retraite complémentaire
|
||||
- cotisations et contributions . invalidité et décès
|
||||
dirigeant . indépendant . conjoint collaborateur . assiette . revenu sans partage:
|
||||
description: Le conjoint collaborateur paiera des cotisations sociales calculées sur une base d'un pourcentage du assiette des cotisations du gérant de l'entreprise (un tiers ou la moitié).
|
||||
? dirigeant . indépendant . conjoint collaborateur . assiette . revenu sans partage
|
||||
: description: Le conjoint collaborateur paiera des cotisations sociales calculées sur une base d'un pourcentage du assiette des cotisations du gérant de l'entreprise (un tiers ou la moitié).
|
||||
formule: assiette = 'revenu sans partage'
|
||||
|
||||
dirigeant . indépendant . conjoint collaborateur . assiette . pourcentage:
|
||||
|
@ -627,12 +627,12 @@ dirigeant . indépendant . conjoint collaborateur . assiette . pourcentage:
|
|||
- tiers
|
||||
- moitié
|
||||
|
||||
dirigeant . indépendant . conjoint collaborateur . assiette . pourcentage . tiers:
|
||||
formule: pourcentage = 'tiers'
|
||||
? dirigeant . indépendant . conjoint collaborateur . assiette . pourcentage . tiers
|
||||
: formule: pourcentage = 'tiers'
|
||||
titre: '1/3'
|
||||
|
||||
dirigeant . indépendant . conjoint collaborateur . assiette . pourcentage . moitié:
|
||||
formule: pourcentage = 'moitié'
|
||||
? dirigeant . indépendant . conjoint collaborateur . assiette . pourcentage . moitié
|
||||
: formule: pourcentage = 'moitié'
|
||||
titre: '1/2'
|
||||
|
||||
dirigeant . indépendant . conjoint collaborateur . cotisations . assiette:
|
||||
|
@ -660,16 +660,16 @@ dirigeant . indépendant . conjoint collaborateur . cotisations:
|
|||
- invalidité et décès
|
||||
- indemnités journalières maladie
|
||||
|
||||
dirigeant . indépendant . conjoint collaborateur . cotisations . assiette retraite:
|
||||
le maximum de:
|
||||
? dirigeant . indépendant . conjoint collaborateur . cotisations . assiette retraite
|
||||
: le maximum de:
|
||||
- cotisations . assiette
|
||||
- 5.25% * plafond sécurité sociale temps plein
|
||||
- 200 heures/an * SMIC horaire
|
||||
unité: €/an
|
||||
arrondi: oui
|
||||
|
||||
dirigeant . indépendant . conjoint collaborateur . cotisations . retraite de base:
|
||||
unité: €/an
|
||||
? dirigeant . indépendant . conjoint collaborateur . cotisations . retraite de base
|
||||
: unité: €/an
|
||||
barème:
|
||||
assiette: assiette retraite
|
||||
multiplicateur: plafond sécurité sociale temps plein
|
||||
|
@ -679,8 +679,8 @@ dirigeant . indépendant . conjoint collaborateur . cotisations . retraite de ba
|
|||
- taux: 0.6%
|
||||
arrondi: oui
|
||||
|
||||
dirigeant . indépendant . conjoint collaborateur . cotisations . retraite complémentaire:
|
||||
unité: €/an
|
||||
? dirigeant . indépendant . conjoint collaborateur . cotisations . retraite complémentaire
|
||||
: unité: €/an
|
||||
barème:
|
||||
assiette: retraite complémentaire . assiette
|
||||
tranches:
|
||||
|
@ -690,8 +690,8 @@ dirigeant . indépendant . conjoint collaborateur . cotisations . retraite compl
|
|||
plafond: 4 * plafond sécurité sociale temps plein
|
||||
arrondi: oui
|
||||
|
||||
dirigeant . indépendant . conjoint collaborateur . cotisations . retraite complémentaire . assiette:
|
||||
titre: assiette retraite complémentaire
|
||||
? dirigeant . indépendant . conjoint collaborateur . cotisations . retraite complémentaire . assiette
|
||||
: titre: assiette retraite complémentaire
|
||||
unité: €/an
|
||||
valeur: assiette retraite
|
||||
plafond:
|
||||
|
@ -700,22 +700,22 @@ dirigeant . indépendant . conjoint collaborateur . cotisations . retraite compl
|
|||
alors: 4 * plafond sécurité sociale temps plein
|
||||
- sinon: 3 * plafond sécurité sociale temps plein
|
||||
|
||||
dirigeant . indépendant . conjoint collaborateur . cotisations . invalidité et décès . assiette:
|
||||
titre: assiette invalidité et décès
|
||||
? dirigeant . indépendant . conjoint collaborateur . cotisations . invalidité et décès . assiette
|
||||
: titre: assiette invalidité et décès
|
||||
formule:
|
||||
le maximum de:
|
||||
- cotisations . assiette
|
||||
- 20% * plafond sécurité sociale temps plein
|
||||
dirigeant . indépendant . conjoint collaborateur . cotisations . invalidité et décès:
|
||||
unité: €/an
|
||||
? dirigeant . indépendant . conjoint collaborateur . cotisations . invalidité et décès
|
||||
: unité: €/an
|
||||
produit:
|
||||
assiette: assiette
|
||||
taux: 1.3%
|
||||
plafond: plafond sécurité sociale temps plein
|
||||
arrondi: oui
|
||||
|
||||
dirigeant . indépendant . conjoint collaborateur . cotisations . indemnités journalières maladie:
|
||||
produit:
|
||||
? dirigeant . indépendant . conjoint collaborateur . cotisations . indemnités journalières maladie
|
||||
: produit:
|
||||
assiette:
|
||||
valeur: 40% * plafond sécurité sociale temps plein
|
||||
unité: €/an
|
||||
|
@ -789,8 +789,8 @@ dirigeant . indépendant . assiette minimale . retraite:
|
|||
références:
|
||||
cotisations minimales: https://www.secu-independants.fr/cotisations/calcul-cotisations/cotisations-minimales/
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . contributions spéciales:
|
||||
description: |
|
||||
? dirigeant . indépendant . cotisations et contributions . contributions spéciales
|
||||
: description: |
|
||||
Certains régimes spéciaux peuvent ajouter des contributions additionnelles
|
||||
(par exemple, la CURPS pour les CPAM)
|
||||
formule: non
|
||||
|
@ -816,8 +816,8 @@ dirigeant . indépendant . cotisations et contributions . déduction tabac:
|
|||
Si vous exercez une activité de débit de tabac simultanément à une activité commerciale, vous avez la possibilité d’opter pour le calcul de votre cotisation d’assurance 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 qu’en cotisant sur une base moins importante, excluant les revenus de débit de tabac, vos droits à retraite pour l’assurance vieillesse des commerçants en seront diminués.
|
||||
par défaut: 0 €/an
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . déduction tabac . revenus déduits:
|
||||
titre: assiette des cotisations (avec déduction tabac)
|
||||
? dirigeant . indépendant . cotisations et contributions . déduction tabac . revenus déduits
|
||||
: titre: assiette des cotisations (avec déduction tabac)
|
||||
applicable si: déduction tabac
|
||||
remplace:
|
||||
règle: assiette des cotisations
|
||||
|
@ -879,8 +879,8 @@ dirigeant . indépendant . cotisations facultatives . contrats madelin:
|
|||
- prévoyance
|
||||
- retraite
|
||||
|
||||
dirigeant . indépendant . cotisations facultatives . contrats madelin . prévoyance:
|
||||
titre: Souscription à un contrat de prévoyance complémentaire Madelin
|
||||
? dirigeant . indépendant . cotisations facultatives . contrats madelin . prévoyance
|
||||
: titre: Souscription à un contrat de prévoyance complémentaire Madelin
|
||||
question: Quel est le montant que vous versez pour vos contrats Madelin de prévoyance complémentaire (santé, perte d'emploi subie) ?
|
||||
unité: €/an
|
||||
description: |
|
||||
|
@ -912,8 +912,8 @@ dirigeant . indépendant . cotisations facultatives . plafond prévoyance:
|
|||
Réassurez-moi: https://reassurez-moi.fr/guide/pro/tns/plafond#le_plafond_de_deduction_madelin_pour_une_mutuelle_santenbsp
|
||||
note: |
|
||||
Normalement c'est le résultat fiscal qui devrait être utilisé pour l'assiette du plafond, mais on utilise le revenu professionnel pour éviter un cycle.
|
||||
dirigeant . indépendant . cotisations facultatives . contrats madelin . retraite:
|
||||
titre: Souscription à une retraite Madelin
|
||||
? dirigeant . indépendant . cotisations facultatives . contrats madelin . retraite
|
||||
: titre: Souscription à une retraite Madelin
|
||||
question: Quel est le montant que vous versez pour votre contrat Madelin retraite complémentaire ?
|
||||
description: |
|
||||
Si vous cotisez au titre d'un contrat retraite de type loi Madelin,
|
||||
|
@ -925,8 +925,8 @@ dirigeant . indépendant . cotisations facultatives . contrats madelin . retrait
|
|||
Article de loi: https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000029042287&cidTexte=LEGITEXT000006069577&dateTexte=20140530&fastReqId=1900907951&nbResultRech=1
|
||||
par défaut: 0 €/an
|
||||
|
||||
dirigeant . indépendant . cotisations facultatives . plafond retraite complémentaire:
|
||||
unité: €/an
|
||||
? dirigeant . indépendant . cotisations facultatives . plafond retraite complémentaire
|
||||
: unité: €/an
|
||||
formule:
|
||||
le maximum de:
|
||||
- barème:
|
||||
|
@ -981,8 +981,8 @@ dirigeant . indépendant . cotisations et contributions . début activité:
|
|||
références:
|
||||
Fiche Urssaf: https://www.urssaf.fr/portail/home/independant/mes-cotisations/les-etapes-de-calcul/le-mode-de-calcul/lajustement-et-la-regularisation.html
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . début activité . assiette forfaitaire:
|
||||
produit:
|
||||
? dirigeant . indépendant . cotisations et contributions . début activité . assiette forfaitaire
|
||||
: produit:
|
||||
assiette: PSS proratisé
|
||||
taux: 19%
|
||||
unité: €/an
|
||||
|
@ -1016,8 +1016,8 @@ dirigeant . indépendant . cotisations et contributions . régularisation:
|
|||
Article L131-6-2 du Code de la sécurité sociale: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000037062224/
|
||||
Article D131-3 du Code de la sécurité sociale: https://www.legifrance.gouv.fr/codes/id/LEGIARTI000038786941/2021-03-01/?isSuggest=true
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . indemnités journalières maladie:
|
||||
synonyme: maladie 2
|
||||
? dirigeant . indépendant . cotisations et contributions . indemnités journalières maladie
|
||||
: synonyme: maladie 2
|
||||
description: |
|
||||
Cotisations pour les indemnités journalières des indépendants. Si l'état de
|
||||
santé des artisans, commerçants, industriels et conjoints collaborateurs
|
||||
|
@ -1061,8 +1061,8 @@ dirigeant . indépendant . cotisations et contributions . maladie:
|
|||
|
||||
Le terme "lorsque" laisse entendre qu'en cas de dépassement du seuil 5xPSS, tout le revenu est soumis à 6.5%. Il semblerait qu'une interprétation inverse soit à privilégier : seule la part supérieure à ce seuil est soumise à ce taux, et c'est cette implémentation que nous avons retenue.
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . maladie . taux progressif . réduction supplémentaire:
|
||||
description: |
|
||||
? dirigeant . indépendant . cotisations et contributions . maladie . taux progressif . réduction supplémentaire
|
||||
: description: |
|
||||
La réduction supplémentaire du taux maladie pour les revenu inférieurs à 40% du plafond de la sécurité sociale
|
||||
non applicable si: situation personnelle . RSA
|
||||
remplace:
|
||||
|
@ -1080,8 +1080,8 @@ dirigeant . indépendant . cotisations et contributions . maladie . taux progres
|
|||
Taux de cotisations: https://www.secu-independants.fr/cotisations/calcul-cotisations/taux-de-cotisations/
|
||||
décret formule de calcul: https://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000036342439&categorieLien=id
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . maladie . taux progressif:
|
||||
taux progressif:
|
||||
? dirigeant . indépendant . cotisations et contributions . maladie . taux progressif
|
||||
: taux progressif:
|
||||
assiette:
|
||||
nom: assiette
|
||||
valeur: assiette des cotisations
|
||||
|
@ -1109,8 +1109,8 @@ dirigeant . indépendant . cotisations et contributions . retraite de base:
|
|||
références:
|
||||
Cotisation minimale: https://www.secu-independants.fr/cotisations/calcul-des-cotisations/cotisations-minimales/
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . retraite complémentaire:
|
||||
formule:
|
||||
? dirigeant . indépendant . cotisations et contributions . retraite complémentaire
|
||||
: formule:
|
||||
barème:
|
||||
assiette: assiette des cotisations
|
||||
tranches:
|
||||
|
@ -1199,8 +1199,8 @@ dirigeant . indépendant . cotisations et contributions . CSG et CRDS . assiette
|
|||
- dirigeant . indépendant . IJSS . imposable
|
||||
plancher: 0 €/mois
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . formation professionnelle:
|
||||
acronyme: CFP
|
||||
? dirigeant . indépendant . cotisations et contributions . formation professionnelle
|
||||
: acronyme: CFP
|
||||
produit:
|
||||
assiette: plafond sécurité sociale temps plein
|
||||
taux:
|
||||
|
@ -1261,8 +1261,8 @@ dirigeant . indépendant . cotisations et contributions . exonérations . âge:
|
|||
applicable si: entreprise . date de création < 01/2016
|
||||
rend non applicable: invalidité et décès
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . exonérations . invalidité:
|
||||
question: Êtes-vous titulaire d’une pension d’invalidité à titre de travailleur indépendant ?
|
||||
? dirigeant . indépendant . cotisations et contributions . exonérations . invalidité
|
||||
: question: Êtes-vous titulaire d’une pension d’invalidité à titre de travailleur indépendant ?
|
||||
description: Les personnes titulaires d’une pension d’invalidité versée par un régime des travailleurs non-salariés non agricoles bénéficient d’une exonération totale des cotisations maladie et retraite complémentaire.
|
||||
par défaut: non
|
||||
rend non applicable:
|
||||
|
@ -1271,8 +1271,8 @@ dirigeant . indépendant . cotisations et contributions . exonérations . invali
|
|||
- indemnités journalières maladie
|
||||
- retraite complémentaire
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . exonérations . ZFU . taux:
|
||||
titre: taux exonération ZFU
|
||||
? dirigeant . indépendant . cotisations et contributions . exonérations . ZFU . taux
|
||||
: titre: taux exonération ZFU
|
||||
formule:
|
||||
taux progressif:
|
||||
assiette: établissement . ZFU . durée d'implantation en fin d'année
|
||||
|
@ -1310,8 +1310,8 @@ dirigeant . indépendant . cotisations et contributions . exonérations . ZFU .
|
|||
- plafond: 9 ans
|
||||
taux: 0%
|
||||
|
||||
dirigeant . indépendant . cotisations et contributions . maladie domiciliation fiscale étranger:
|
||||
applicable si: situation personnelle . domiciliation fiscale à l'étranger
|
||||
? dirigeant . indépendant . cotisations et contributions . maladie domiciliation fiscale étranger
|
||||
: applicable si: situation personnelle . domiciliation fiscale à l'étranger
|
||||
titre: Maladie (domiciliation fiscale à l'étranger)
|
||||
description: En contrepartie de l'exonération de CSG, les cotisants ont un taux maladie plus elevé. Contrairement aux autres assurés commerçants/artisans ils ne bénéficient pas de la réduction du taux de la cotisation maladie en fonction du revenu déclaré.
|
||||
remplace: maladie
|
||||
|
|
|
@ -53,8 +53,8 @@ aide déclaration revenu indépendant 2020 . cotisations payées:
|
|||
non applicable si: résultat simple
|
||||
valeur: oui
|
||||
|
||||
aide déclaration revenu indépendant 2020 . cotisations payées . total charges sociales:
|
||||
remplace:
|
||||
? aide déclaration revenu indépendant 2020 . cotisations payées . total charges sociales
|
||||
: remplace:
|
||||
règle: dirigeant . indépendant . cotisations et contributions
|
||||
par:
|
||||
somme:
|
||||
|
@ -83,8 +83,8 @@ aide déclaration revenu indépendant 2020 . cotisations payées . CSG déductib
|
|||
3. Puis, "attestation CSG/CRDS"
|
||||
4. Reportez dans ce champs le total de la colonne "Montant déductible CSG" (dernière ligne)
|
||||
|
||||
aide déclaration revenu indépendant 2020 . cotisations payées . CSG non déductible:
|
||||
question: Quel est le montant total de CSG non déductible payé cette année ?
|
||||
? aide déclaration revenu indépendant 2020 . cotisations payées . CSG non déductible
|
||||
: question: Quel est le montant total de CSG non déductible payé cette année ?
|
||||
unité: €/an
|
||||
description: |
|
||||
Vous pouvez retrouver ce montant dans votre espace personnel Urssaf. Voici la marche à suivre :
|
||||
|
@ -107,8 +107,8 @@ aide déclaration revenu indépendant 2020 . cotisations payées . CRDS:
|
|||
3. Puis, "attestation CSG/CRDS"
|
||||
4. Reportez dans ce champs le total de la colonne "Montant non déductible : CRDS" (dernière ligne)
|
||||
|
||||
aide déclaration revenu indépendant 2020 . cotisations payées . cotisations obligatoires déductibles:
|
||||
remplace: cotisations obligatoires déductibles
|
||||
? aide déclaration revenu indépendant 2020 . cotisations payées . cotisations obligatoires déductibles
|
||||
: remplace: cotisations obligatoires déductibles
|
||||
unité: €/an
|
||||
valeur: cotisations payées . total charges sociales
|
||||
abattement:
|
||||
|
@ -133,20 +133,20 @@ aide déclaration revenu indépendant 2020 . cotisations payées version simple:
|
|||
- cotisations payées version simple . cotisations sociales
|
||||
- cotisations payées version simple . CSG déductible et CFP
|
||||
|
||||
aide déclaration revenu indépendant 2020 . cotisations payées version simple . CSG déductible et CFP:
|
||||
question: Quel est le montant total de CSG déductible et CFP payées cette année ?
|
||||
? aide déclaration revenu indépendant 2020 . cotisations payées version simple . CSG déductible et CFP
|
||||
: question: Quel est le montant total de CSG déductible et CFP payées cette année ?
|
||||
unité: €/an
|
||||
description: |
|
||||
Indiquez le montant de la part de CSG déductible et de CFP que vous avez payé en 2020 (peu importe l’année à laquelle ces contributions se rapportent).
|
||||
aide déclaration revenu indépendant 2020 . cotisations payées version simple . cotisations sociales:
|
||||
question: Quel est le montant de vos cotisations sociales payées cette année ?
|
||||
? aide déclaration revenu indépendant 2020 . cotisations payées version simple . cotisations sociales
|
||||
: question: Quel est le montant de vos cotisations sociales payées cette année ?
|
||||
unité: €/an
|
||||
description: |
|
||||
Indiquez le montant des cotisations sociales aux régimes obligatoires (maladie-maternité, vieillesse, invalidité-décès, famille) que vous avez payées en 2020 (peu importe l’année à laquelle ces cotisations se rapportent).
|
||||
|
||||
aide déclaration revenu indépendant 2020 . régime d'imposition: oui
|
||||
aide déclaration revenu indépendant 2020 . régime d'imposition . déclaration contrôlée:
|
||||
titre: régime de la déclaration contrôlée
|
||||
? aide déclaration revenu indépendant 2020 . régime d'imposition . déclaration contrôlée
|
||||
: titre: régime de la déclaration contrôlée
|
||||
applicable si: entreprise . activité . libérale
|
||||
non applicable si:
|
||||
une de ces conditions:
|
||||
|
@ -178,8 +178,8 @@ aide déclaration revenu indépendant 2020 . régime d'imposition . réel:
|
|||
- simplifié
|
||||
- normal
|
||||
|
||||
aide déclaration revenu indépendant 2020 . régime d'imposition . réel . simplifié:
|
||||
description: |
|
||||
? aide déclaration revenu indépendant 2020 . régime d'imposition . réel . simplifié
|
||||
: description: |
|
||||
Les entreprises soumises au régime d'imposition réel simplifié doivent tenir une comptabilité classique : un bilan, un compte de résultat et des annexes. Des dispositions particulières s’appliquent pour alléger vos obligations comptables :
|
||||
|
||||
- le livre journal n’enregistre journellement que les recettes encaissées et les dépenses payées
|
||||
|
@ -353,8 +353,8 @@ aide déclaration revenu indépendant 2020 . réduction covid . montant:
|
|||
somme:
|
||||
- printemps 2020
|
||||
- automne 2020
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . conjoint collaborateur:
|
||||
applicable si: dirigeant . indépendant . conjoint collaborateur
|
||||
? aide déclaration revenu indépendant 2020 . réduction covid . conjoint collaborateur
|
||||
: applicable si: dirigeant . indépendant . conjoint collaborateur
|
||||
remplace:
|
||||
règle: dirigeant . indépendant . conjoint collaborateur . cotisations
|
||||
par:
|
||||
|
@ -377,23 +377,23 @@ aide déclaration revenu indépendant 2020 . réduction covid . part cotisations
|
|||
assiette: montant
|
||||
taux: pourcentage cotisations
|
||||
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . pourcentage cotisations:
|
||||
unité: '%'
|
||||
? aide déclaration revenu indépendant 2020 . réduction covid . pourcentage cotisations
|
||||
: unité: '%'
|
||||
valeur: dirigeant . indépendant . cotisations et contributions . cotisations / (dirigeant . indépendant . cotisations et contributions . cotisations + dirigeant . indépendant . cotisations et contributions . CSG et CRDS)
|
||||
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . part CSG:
|
||||
titre: Part réduction Covid sur CSG
|
||||
valeur: montant - part cotisations
|
||||
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . part CSG . déductible:
|
||||
titre: Part réduction Covid sur CSG/CRDS déductible
|
||||
? aide déclaration revenu indépendant 2020 . réduction covid . part CSG . déductible
|
||||
: titre: Part réduction Covid sur CSG/CRDS déductible
|
||||
produit:
|
||||
assiette: part CSG
|
||||
taux: dirigeant . indépendant . cotisations et contributions . CSG et CRDS . déductible . taux / taux CSG
|
||||
arrondi: oui
|
||||
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . part CSG . non déductible:
|
||||
titre: Part réduction Covid sur CSG/CRDS non déductible
|
||||
? aide déclaration revenu indépendant 2020 . réduction covid . part CSG . non déductible
|
||||
: titre: Part réduction Covid sur CSG/CRDS non déductible
|
||||
valeur: part CSG - part CSG . déductible
|
||||
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . taux CSG:
|
||||
|
@ -403,16 +403,16 @@ aide déclaration revenu indépendant 2020 . réduction covid . taux CSG:
|
|||
- dirigeant . indépendant . cotisations et contributions . CSG et CRDS . non déductible . taux
|
||||
- dirigeant . indépendant . cotisations et contributions . CSG et CRDS . déductible . taux
|
||||
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . montant . printemps 2020:
|
||||
applicable si: éligible aide printemps 2020
|
||||
? aide déclaration revenu indépendant 2020 . réduction covid . montant . printemps 2020
|
||||
: applicable si: éligible aide printemps 2020
|
||||
formule:
|
||||
variations:
|
||||
- si: secteur d'activité = 'S2'
|
||||
alors: 1800 €/an
|
||||
- sinon: 2400 €/an
|
||||
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . montant . automne 2020:
|
||||
applicable si: éligible aide automne 2020
|
||||
? aide déclaration revenu indépendant 2020 . réduction covid . montant . automne 2020
|
||||
: applicable si: éligible aide automne 2020
|
||||
formule: nombre de mois éligibles * 600 €/an/mois éligibles
|
||||
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . secteur d'activité:
|
||||
|
@ -449,22 +449,22 @@ aide déclaration revenu indépendant 2020 . réduction covid . secteur d'activi
|
|||
- S2
|
||||
par défaut: non
|
||||
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . secteur d'activité . S1:
|
||||
titre: Secteur dit S1
|
||||
? aide déclaration revenu indépendant 2020 . réduction covid . secteur d'activité . S1
|
||||
: titre: Secteur dit S1
|
||||
description: |
|
||||
Secteurs du tourisme, de l’hôtellerie, de la restauration, du sport, de la culture, du transport aérien et de l’événementiel.
|
||||
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . secteur d'activité . S1-bis:
|
||||
titre: Secteur dit S1 bis
|
||||
? aide déclaration revenu indépendant 2020 . réduction covid . secteur d'activité . S1-bis
|
||||
: titre: Secteur dit S1 bis
|
||||
description: |
|
||||
Secteurs dont l’activité dépend de celle des secteurs 1 et qui ont subi une très forte baisse de leur chiffre d’affaires.
|
||||
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . secteur d'activité . S2:
|
||||
titre: Secteur dit S2
|
||||
? aide déclaration revenu indépendant 2020 . réduction covid . secteur d'activité . S2
|
||||
: titre: Secteur dit S2
|
||||
description: Autres secteurs d’activité qui ont fait l’objet d’une interdiction affectant de manière prépondérante la poursuite de leur activité.
|
||||
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . éligible aide printemps 2020:
|
||||
applicable si: secteur d'activité
|
||||
? aide déclaration revenu indépendant 2020 . réduction covid . éligible aide printemps 2020
|
||||
: applicable si: secteur d'activité
|
||||
question: Êtes-vous éligibles au dispositif de réduction prévu au titre de la première vague de la crise sanitaire du printemps 2020 ?
|
||||
par défaut: non
|
||||
description: |
|
||||
|
@ -499,8 +499,8 @@ aide déclaration revenu indépendant 2020 . réduction covid . éligible aide p
|
|||
Votre activité doit avoir débuté avant le 1er juin 2020.
|
||||
Si vous avez cessé votre activité, la cessation doit être postérieure ou égale au 15 mars 2020.
|
||||
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . éligible aide automne 2020:
|
||||
applicable si: secteur d'activité
|
||||
? aide déclaration revenu indépendant 2020 . réduction covid . éligible aide automne 2020
|
||||
: applicable si: secteur d'activité
|
||||
question: Êtes-vous éligibles au dispositif de réduction prévu au titre de la première vague de la crise sanitaire de l'automne 2020 ?
|
||||
par défaut: non
|
||||
description: |
|
||||
|
@ -553,15 +553,15 @@ aide déclaration revenu indépendant 2020 . réduction covid . éligible aide a
|
|||
|
||||
Bon à savoir : Les activités de livraison, de retrait de commande ou de vente à emporter ne sont pas prises en compte pour apprécier le respect de la condition d’interdiction.
|
||||
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . nombre de mois éligibles:
|
||||
formule:
|
||||
? aide déclaration revenu indépendant 2020 . réduction covid . nombre de mois éligibles
|
||||
: formule:
|
||||
somme:
|
||||
- S1 et S1bis
|
||||
- S2
|
||||
arrondi: oui
|
||||
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . nombre de mois éligibles . S1 et S1bis:
|
||||
applicable si:
|
||||
? aide déclaration revenu indépendant 2020 . réduction covid . nombre de mois éligibles . S1 et S1bis
|
||||
: applicable si:
|
||||
toutes ces conditions:
|
||||
- éligible aide automne 2020
|
||||
- une de ces conditions:
|
||||
|
@ -574,8 +574,8 @@ aide déclaration revenu indépendant 2020 . réduction covid . nombre de mois
|
|||
unité: mois éligibles
|
||||
plafond: 6 mois éligibles
|
||||
|
||||
aide déclaration revenu indépendant 2020 . réduction covid . nombre de mois éligibles . S2:
|
||||
applicable si:
|
||||
? aide déclaration revenu indépendant 2020 . réduction covid . nombre de mois éligibles . S2
|
||||
: applicable si:
|
||||
toutes ces conditions:
|
||||
- éligible aide automne 2020
|
||||
- secteur d'activité = 'S2'
|
||||
|
@ -806,39 +806,39 @@ aide déclaration revenu indépendant 2020 . informations résultat par formulai
|
|||
applicable si: comptabilité . engagement
|
||||
non applicable si: entreprise . imposition . IR . micro-fiscal
|
||||
valeur: oui
|
||||
aide déclaration revenu indépendant 2020 . informations résultat par formulaire . réduction Covid:
|
||||
description: La réduction de cotisation applicable dans le cas du dispositif Covid
|
||||
? aide déclaration revenu indépendant 2020 . informations résultat par formulaire . réduction Covid
|
||||
: description: La réduction de cotisation applicable dans le cas du dispositif Covid
|
||||
valeur: réduction covid . total
|
||||
|
||||
aide déclaration revenu indépendant 2020 . informations résultat par formulaire . rémunération totale:
|
||||
titre: Total rémunération dirigeant
|
||||
? aide déclaration revenu indépendant 2020 . informations résultat par formulaire . rémunération totale
|
||||
: titre: Total rémunération dirigeant
|
||||
résumé: '[A]'
|
||||
description: La rémunération "superbrute" du dirigeant, incluant toutes les cotisations et contributions sociales.
|
||||
valeur: dirigeant . rémunération . totale
|
||||
|
||||
aide déclaration revenu indépendant 2020 . informations résultat par formulaire . cotisations déductibles:
|
||||
résumé: '[C1]'
|
||||
? aide déclaration revenu indépendant 2020 . informations résultat par formulaire . cotisations déductibles
|
||||
: résumé: '[C1]'
|
||||
description: "Cotisations et contributions sociales déductibles pour le calcul de l'assiette sociale"
|
||||
somme:
|
||||
- cotisations obligatoires déductibles
|
||||
- dirigeant . indépendant . cotisations et contributions . CSG et CRDS . déductible
|
||||
- dirigeant . indépendant . cotisations et contributions . formation professionnelle
|
||||
|
||||
aide déclaration revenu indépendant 2020 . informations résultat par formulaire . cotisations non déductibles:
|
||||
résumé: '[C2]'
|
||||
? aide déclaration revenu indépendant 2020 . informations résultat par formulaire . cotisations non déductibles
|
||||
: résumé: '[C2]'
|
||||
description: Cotisations et contributions sociales non déductibles pour le calcul de l'assiette sociale
|
||||
valeur:
|
||||
somme:
|
||||
- dirigeant . indépendant . cotisations et contributions . CSG et CRDS . non déductible
|
||||
- dirigeant . indépendant . cotisations facultatives . total
|
||||
|
||||
aide déclaration revenu indépendant 2020 . informations résultat par formulaire . assiette sociale:
|
||||
résumé: '[A - C1]'
|
||||
? aide déclaration revenu indépendant 2020 . informations résultat par formulaire . assiette sociale
|
||||
: résumé: '[A - C1]'
|
||||
description: Assiette utilisée pour le calcul des cotisations sociales.
|
||||
valeur: dirigeant . indépendant . assiette des cotisations
|
||||
|
||||
aide déclaration revenu indépendant 2020 . informations résultat par formulaire . rémunération nette:
|
||||
résumé: '[A - C1 - C2]'
|
||||
? aide déclaration revenu indépendant 2020 . informations résultat par formulaire . rémunération nette
|
||||
: résumé: '[A - C1 - C2]'
|
||||
description: Le revenu net du dirigeant avant impôt sur le revenu. C'est la rémunération effectivement versée.
|
||||
valeur: dirigeant . rémunération . nette
|
||||
|
||||
|
@ -850,8 +850,8 @@ aide déclaration revenu indépendant 2020 . résultat simple . revenu net fisca
|
|||
description: Résultat avant déduction des charges sociales et exonérations fiscales
|
||||
valeur: dirigeant . rémunération . totale
|
||||
|
||||
aide déclaration revenu indépendant 2020 . résultat simple . cotisations obligatoires:
|
||||
titre: Cotisations sociales obligatoires déductibles
|
||||
? aide déclaration revenu indépendant 2020 . résultat simple . cotisations obligatoires
|
||||
: titre: Cotisations sociales obligatoires déductibles
|
||||
résumé: '[C]'
|
||||
description: |
|
||||
À reporter dans :
|
||||
|
@ -881,8 +881,8 @@ aide déclaration revenu indépendant 2020 . résultat simple . CFP:
|
|||
description: Contribution à la formation professionnelle
|
||||
valeur: dirigeant . indépendant . cotisations et contributions . formation professionnelle
|
||||
|
||||
aide déclaration revenu indépendant 2020 . résultat simple . total charges sociales déductible:
|
||||
non applicable si: entreprise . imposition . IR . micro-fiscal
|
||||
? aide déclaration revenu indépendant 2020 . résultat simple . total charges sociales déductible
|
||||
: non applicable si: entreprise . imposition . IR . micro-fiscal
|
||||
titre: charges sociales obligatoires déductibles fiscalement
|
||||
résumé: '[B + C + D]'
|
||||
somme:
|
||||
|
|
|
@ -90,8 +90,8 @@ impôt . revenu imposable . abattement contrat court:
|
|||
références:
|
||||
Bofip - dispositions spécifiques aux contrats courts: https://bofip.impots.gouv.fr/bofip/11252-PGP.html?identifiant=BOI-IR-PAS-20-20-30-10-20180515
|
||||
|
||||
impôt . taux neutre d'impôt sur le revenu . barème Guadeloupe Réunion Martinique:
|
||||
icônes: 🇬🇵🇷🇪 🇲🇶
|
||||
? impôt . taux neutre d'impôt sur le revenu . barème Guadeloupe Réunion Martinique
|
||||
: icônes: 🇬🇵🇷🇪 🇲🇶
|
||||
formule:
|
||||
grille:
|
||||
assiette: revenu imposable
|
||||
|
@ -426,8 +426,8 @@ impôt . foyer fiscal . impôt sur le revenu . quotient familial:
|
|||
unité: €/part/an
|
||||
formule: revenu imposable / nombre de parts
|
||||
|
||||
impôt . foyer fiscal . impôt sur le revenu . quotient familial . plafond avantage:
|
||||
formule:
|
||||
? impôt . foyer fiscal . impôt sur le revenu . quotient familial . plafond avantage
|
||||
: formule:
|
||||
somme:
|
||||
- produit:
|
||||
assiette:
|
||||
|
|
|
@ -143,8 +143,8 @@ dirigeant . indépendant . PL . régime général:
|
|||
- CIPAV = non
|
||||
- entreprise . activité . libérale réglementée = non
|
||||
|
||||
dirigeant . indépendant . PL . régime général . taux spécifique retraite complémentaire:
|
||||
titre: taux spécifique profession libérale non reglementée
|
||||
? dirigeant . indépendant . PL . régime général . taux spécifique retraite complémentaire
|
||||
: titre: taux spécifique profession libérale non reglementée
|
||||
question: Avez-vous opté pour des taux spécifiques de cotisation retraite complémentaire ?
|
||||
par défaut: non
|
||||
description: |
|
||||
|
@ -156,8 +156,8 @@ dirigeant . indépendant . PL . régime général . taux spécifique retraite co
|
|||
références:
|
||||
Guide PL urssaf: https://www.urssaf.fr/portail/files/live/sites/urssaf/files/documents/Diaporama_TI_statuts_hors_AE.pdf
|
||||
|
||||
dirigeant . indépendant . PL . régime général . taux spécifique retraite complémentaire . montant:
|
||||
titre: retraite complémentaire (taux PLNR)
|
||||
? dirigeant . indépendant . PL . régime général . taux spécifique retraite complémentaire . montant
|
||||
: titre: retraite complémentaire (taux PLNR)
|
||||
remplace: cotisations et contributions . retraite complémentaire
|
||||
formule:
|
||||
barème:
|
||||
|
@ -276,8 +276,8 @@ dirigeant . indépendant . PL . CIPAV . invalidité et décès:
|
|||
- si: classe de cotisation = 'C'
|
||||
alors: 380 €/an
|
||||
|
||||
dirigeant . indépendant . PL . CIPAV . invalidité et décès . classe de cotisation:
|
||||
question: Dans quelle classe cotisez-vous pour le régime invalidité-décès de la CIPAV ?
|
||||
? dirigeant . indépendant . PL . CIPAV . invalidité et décès . classe de cotisation
|
||||
: question: Dans quelle classe cotisez-vous pour le régime invalidité-décès de la CIPAV ?
|
||||
description: >-
|
||||
La Cipav gère un régime de prévoyance versant une pension en cas
|
||||
d'invalidité permanente et un capital décès ainsi qu’une rente pour les
|
||||
|
@ -293,12 +293,12 @@ dirigeant . indépendant . PL . CIPAV . invalidité et décès . classe de cotis
|
|||
- C
|
||||
par défaut: "'A'"
|
||||
|
||||
dirigeant . indépendant . PL . CIPAV . invalidité et décès . classe de cotisation . A:
|
||||
titre: classe A
|
||||
dirigeant . indépendant . PL . CIPAV . invalidité et décès . classe de cotisation . B:
|
||||
titre: classe B
|
||||
dirigeant . indépendant . PL . CIPAV . invalidité et décès . classe de cotisation . C:
|
||||
titre: classe C
|
||||
? dirigeant . indépendant . PL . CIPAV . invalidité et décès . classe de cotisation . A
|
||||
: titre: classe A
|
||||
? dirigeant . indépendant . PL . CIPAV . invalidité et décès . classe de cotisation . B
|
||||
: titre: classe B
|
||||
? dirigeant . indépendant . PL . CIPAV . invalidité et décès . classe de cotisation . C
|
||||
: titre: classe C
|
||||
|
||||
dirigeant . indépendant . PL . retraite CNAVPL:
|
||||
non applicable si:
|
||||
|
@ -360,8 +360,8 @@ dirigeant . indépendant . PL . PAMC:
|
|||
- dirigeant . indépendant . cotisations et contributions . maladie domiciliation fiscale étranger
|
||||
formule: oui
|
||||
|
||||
dirigeant . indépendant . PL . PAMC . proportion recette activité non conventionnée:
|
||||
question: |
|
||||
? dirigeant . indépendant . PL . PAMC . proportion recette activité non conventionnée
|
||||
: question: |
|
||||
Quel est la part de votre chiffre d'affaires liée à une activité non
|
||||
conventionnée (estimation) ?
|
||||
par défaut: 0%
|
||||
|
@ -383,8 +383,8 @@ dirigeant . indépendant . PL . PAMC . proportion recette activité non conventi
|
|||
(aide à la télétransmission, indemnisation, indemnisation de la formation
|
||||
continue, prime à l’installation, ...)
|
||||
|
||||
dirigeant . indépendant . PL . PAMC . proportion recette activité non conventionnée . notification:
|
||||
type: notification
|
||||
? dirigeant . indépendant . PL . PAMC . proportion recette activité non conventionnée . notification
|
||||
: type: notification
|
||||
sévérité: avertissement
|
||||
formule: proportion recette activité non conventionnée > 100%
|
||||
description: |
|
||||
|
@ -529,8 +529,8 @@ dirigeant . indépendant . PL . PAMC . allocations familiales:
|
|||
|
||||
références:
|
||||
Fiche Urssaf: https://www.urssaf.fr/portail/home/taux-et-baremes/taux-de-cotisations/les-praticiens-et-auxiliaires-me/taux-de-cotisations-medecin-sect.html
|
||||
dirigeant . indépendant . PL . PAMC . allocations familiales . participation CPAM:
|
||||
titre: Participation CPAM aux allocations familiales
|
||||
? dirigeant . indépendant . PL . PAMC . allocations familiales . participation CPAM
|
||||
: titre: Participation CPAM aux allocations familiales
|
||||
formule:
|
||||
produit:
|
||||
assiette: cotisations et contributions . allocations familiales
|
||||
|
@ -546,8 +546,8 @@ dirigeant . indépendant . PL . PAMC . allocations familiales . participation CP
|
|||
- montant: 60%
|
||||
arrondi: oui
|
||||
|
||||
dirigeant . indépendant . PL . PAMC . assiette participation chirurgien-dentiste:
|
||||
applicable si: métier = 'santé . chirurgien-dentiste'
|
||||
? dirigeant . indépendant . PL . PAMC . assiette participation chirurgien-dentiste
|
||||
: applicable si: métier = 'santé . chirurgien-dentiste'
|
||||
titre: assiette participation CPAM (chirurgien dentiste)
|
||||
remplace: assiette participation CPAM
|
||||
formule:
|
||||
|
@ -558,8 +558,8 @@ dirigeant . indépendant . PL . PAMC . assiette participation chirurgien-dentist
|
|||
Fiche Urssaf: https://www.urssaf.fr/portail/home/praticien-et-auxiliaire-medical/mes-cotisations/le-calcul-de-mes-cotisations/la-participation-de-la-cpam-a-me/je-suis-chirurgien-dentiste/assiette-de-participation-de-la.html
|
||||
Texte de loi: https://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000020429271&categorieLien=id
|
||||
|
||||
dirigeant . indépendant . PL . PAMC . assiette participation chirurgien-dentiste . taux Urssaf:
|
||||
description: |
|
||||
? dirigeant . indépendant . PL . PAMC . assiette participation chirurgien-dentiste . taux Urssaf
|
||||
: description: |
|
||||
Le « taux Urssaf » (taux UR) permet de calculer la part de votre
|
||||
cotisation d’assurance maladie-maternité prise en charge par la CPAM.
|
||||
|
||||
|
@ -578,8 +578,8 @@ dirigeant . indépendant . PL . PAMC . assiette participation chirurgien-dentist
|
|||
unité: ''
|
||||
par défaut: 1
|
||||
|
||||
dirigeant . indépendant . PL . PAMC . assiette participation chirurgien-dentiste . taux Urssaf . notification:
|
||||
formule: taux Urssaf >= 100
|
||||
? dirigeant . indépendant . PL . PAMC . assiette participation chirurgien-dentiste . taux Urssaf . notification
|
||||
: formule: taux Urssaf >= 100
|
||||
type: notification
|
||||
sévérité: avertissement
|
||||
description: Le taux Urssaf doit être inférieur à 100
|
||||
|
@ -848,8 +848,8 @@ dirigeant . indépendant . PL . CARCDSF . retraite complémentaire:
|
|||
références:
|
||||
Site CARCDSF: http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation proportionnelle:
|
||||
formule:
|
||||
? dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation proportionnelle
|
||||
: formule:
|
||||
barème:
|
||||
assiette: assiette des cotisations
|
||||
multiplicateur: plafond sécurité sociale temps plein
|
||||
|
@ -860,8 +860,8 @@ dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation
|
|||
plafond: 5
|
||||
arrondi: oui
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation forfaitaire:
|
||||
formule:
|
||||
? dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation forfaitaire
|
||||
: formule:
|
||||
produit:
|
||||
assiette: 2960.40 €/an
|
||||
facteur:
|
||||
|
@ -871,16 +871,16 @@ dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation
|
|||
- sinon: 100%
|
||||
arrondi: oui
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation forfaitaire . réduction applicable:
|
||||
formule: assiette des cotisations < 85% * plafond sécurité sociale temps plein
|
||||
? dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation forfaitaire . réduction applicable
|
||||
: formule: assiette des cotisations < 85% * plafond sécurité sociale temps plein
|
||||
description: |
|
||||
Vous avez la possibilité de bénéficier d'une réduction de cotisation
|
||||
pour la retraite complémentaire si vous en faites la demande. [En savoir
|
||||
plus](/documentation/dirigeant/indépendant/PL/CARCDSF/retraite-complémentaire/cotisation-forfaitaire/taux-réduction)
|
||||
type: notification
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation forfaitaire . taux réduction:
|
||||
applicable si: réduction applicable
|
||||
? dirigeant . indépendant . PL . CARCDSF . retraite complémentaire . cotisation forfaitaire . taux réduction
|
||||
: applicable si: réduction applicable
|
||||
description: |
|
||||
Les affiliés dont les revenus professionnels nets sur l'année N-1 sont inférieurs à 85
|
||||
% du PASS en vigueur au 1er janvier de l’année considérée (34 966 € en 2020)
|
||||
|
@ -927,18 +927,18 @@ dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . PCV:
|
|||
- proportionnelle
|
||||
arrondi: oui
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . PCV . forfaitaire:
|
||||
formule: 1440.60 €/an
|
||||
dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . PCV . proportionnelle:
|
||||
formule:
|
||||
? dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . PCV . forfaitaire
|
||||
: formule: 1440.60 €/an
|
||||
? dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . PCV . proportionnelle
|
||||
: formule:
|
||||
produit:
|
||||
assiette: assiette des cotisations
|
||||
plafond: 5 * plafond sécurité sociale temps plein
|
||||
taux: 0.725 %
|
||||
références:
|
||||
Site CARCDSF: http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations
|
||||
dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . PCV . participation CPAM:
|
||||
titre: Participation CPAM à la prestation complémentaire vieillesse
|
||||
? dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . PCV . participation CPAM
|
||||
: titre: Participation CPAM à la prestation complémentaire vieillesse
|
||||
formule:
|
||||
somme:
|
||||
- 2 * forfaitaire
|
||||
|
@ -955,8 +955,8 @@ dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . exonération PCV
|
|||
faites la demande. [En savoir
|
||||
plus](http://www.carcdsf.fr/cotisations-du-praticien/montant-des-cotisations)
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . prix d'une consultation:
|
||||
formule: 23 €/consultation
|
||||
? dirigeant . indépendant . PL . CARCDSF . chirurgien-dentiste . prix d'une consultation
|
||||
: formule: 23 €/consultation
|
||||
|
||||
dirigeant . indépendant . PL . CARCDSF . sage-femme:
|
||||
applicable si: métier = 'santé . sage-femme'
|
||||
|
@ -1074,8 +1074,8 @@ dirigeant . indépendant . PL . CNBF . retraite de base . cotisation forfaitaire
|
|||
plafond: 5 ans
|
||||
- montant: 1586 €/an
|
||||
|
||||
dirigeant . indépendant . PL . CNBF . retraite de base . cotisation proportionnelle:
|
||||
formule:
|
||||
? dirigeant . indépendant . PL . CNBF . retraite de base . cotisation proportionnelle
|
||||
: formule:
|
||||
produit:
|
||||
taux: 3.1%
|
||||
assiette: assiette des cotisations
|
||||
|
|
|
@ -102,8 +102,8 @@ protection sociale . retraite . trimestres validés . trimestres indépendant:
|
|||
valeur: barème trimestres générique
|
||||
plancher: 3
|
||||
|
||||
protection sociale . retraite . trimestres validés . barème trimestres générique:
|
||||
unité: trimestres validés/an
|
||||
? protection sociale . retraite . trimestres validés . barème trimestres générique
|
||||
: unité: trimestres validés/an
|
||||
formule:
|
||||
grille:
|
||||
unité: trimestres validés/an
|
||||
|
@ -122,8 +122,8 @@ protection sociale . retraite . trimestres validés . barème trimestres génér
|
|||
références:
|
||||
cnav.fr: https://www.legislation.cnav.fr/Pages/bareme.aspx?Nom=salaire_validant_un_trimestre_montant_bar
|
||||
Article R351-9 du code de la sécurité sociale: https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000028751530/2014-03-21
|
||||
protection sociale . retraite . trimestres validés . trimestres auto-entrepreneur:
|
||||
applicable si: dirigeant . auto-entrepreneur
|
||||
? protection sociale . retraite . trimestres validés . trimestres auto-entrepreneur
|
||||
: applicable si: dirigeant . auto-entrepreneur
|
||||
description: Les seuils de chiffre d'affaires minimum pour la validation des trimestres pour la retraite en auto-entrepreneur. En-dessous du montant minimum, vous n'aurez accès qu'à l'allocation de solidarité.
|
||||
unité: trimestres validés/an
|
||||
somme:
|
||||
|
@ -218,15 +218,15 @@ protection sociale . retraite . complémentaire indépendants . valeur du point:
|
|||
références:
|
||||
secu-independants.fr: https://www.secu-independants.fr/baremes/prestations-vieillesse-et-invalidite-deces
|
||||
|
||||
protection sociale . retraite . complémentaire indépendants . total points acquis:
|
||||
formule: points acquis * mois cotisés
|
||||
? protection sociale . retraite . complémentaire indépendants . total points acquis
|
||||
: formule: points acquis * mois cotisés
|
||||
|
||||
protection sociale . retraite . complémentaire indépendants . points acquis:
|
||||
unité: points/an
|
||||
valeur: dirigeant . indépendant . cotisations et contributions . retraite complémentaire / prix d'achat du point
|
||||
|
||||
protection sociale . retraite . complémentaire indépendants . prix d'achat du point:
|
||||
formule: 17.765 €/point
|
||||
? protection sociale . retraite . complémentaire indépendants . prix d'achat du point
|
||||
: formule: 17.765 €/point
|
||||
références:
|
||||
secu-independants.fr: https://www.secu-independants.fr/baremes/baremes-2018/baremesprestations-maladie-maternite/?reg=ile-de-france-centre&ae=oui
|
||||
|
||||
|
|
|
@ -146,8 +146,8 @@ contrat salarié . frais professionnels . titres-restaurant . montant unitaire:
|
|||
moyenne: 8 €/titre-restaurant
|
||||
max exonéré: 11.10 €/titre-restaurant
|
||||
|
||||
contrat salarié . frais professionnels . titres-restaurant . taux participation employeur:
|
||||
description: >-
|
||||
? contrat salarié . frais professionnels . titres-restaurant . taux participation employeur
|
||||
: description: >-
|
||||
Part du titre-restaurant payée par l'employeur. Doit être de 50% minimum et
|
||||
de 60% maximum.
|
||||
question: Quelle est la participation de l'employeur ?
|
||||
|
@ -156,14 +156,14 @@ contrat salarié . frais professionnels . titres-restaurant . taux participation
|
|||
50%: 50 %
|
||||
60%: 60 %
|
||||
|
||||
contrat salarié . frais professionnels . titres-restaurant . contrôle taux employeur min:
|
||||
type: notification
|
||||
? contrat salarié . frais professionnels . titres-restaurant . contrôle taux employeur min
|
||||
: type: notification
|
||||
sévérité: avertissement
|
||||
formule: taux participation employeur < 50%
|
||||
description: La part employeur du titre-restaurant doit être de 50% au minimum
|
||||
|
||||
contrat salarié . frais professionnels . titres-restaurant . contrôle taux employeur max:
|
||||
type: notification
|
||||
? contrat salarié . frais professionnels . titres-restaurant . contrôle taux employeur max
|
||||
: type: notification
|
||||
sévérité: avertissement
|
||||
formule: taux participation employeur > 60%
|
||||
description: La part employeur du titre-restaurant doit être de 60% au maximum
|
||||
|
@ -172,8 +172,8 @@ contrat salarié . frais professionnels . abonnement transports publics:
|
|||
icônes: 🚍
|
||||
valeur: oui
|
||||
|
||||
contrat salarié . frais professionnels . abonnement transports publics . montant:
|
||||
titre: Abonnement aux transports publics
|
||||
? contrat salarié . frais professionnels . abonnement transports publics . montant
|
||||
: titre: Abonnement aux transports publics
|
||||
question: Quel montant le salarié dépense-t-il en abonnement aux transports publics chaque mois ?
|
||||
unité: €/mois
|
||||
par défaut: 0 €/mois
|
||||
|
@ -193,11 +193,11 @@ contrat salarié . frais professionnels . abonnement transports publics . montan
|
|||
Tisséo: 42.50 €/mois
|
||||
TBM: 42.20 €/mois
|
||||
|
||||
contrat salarié . frais professionnels . abonnement transports publics . taux de participation employeur:
|
||||
valeur: 50%
|
||||
? contrat salarié . frais professionnels . abonnement transports publics . taux de participation employeur
|
||||
: valeur: 50%
|
||||
|
||||
contrat salarié . frais professionnels . abonnement transports publics . taux de prise en charge:
|
||||
titre: Taux de prise en charge
|
||||
? contrat salarié . frais professionnels . abonnement transports publics . taux de prise en charge
|
||||
: titre: Taux de prise en charge
|
||||
valeur:
|
||||
produit:
|
||||
assiette:
|
||||
|
@ -206,8 +206,8 @@ contrat salarié . frais professionnels . abonnement transports publics . taux d
|
|||
- 50%
|
||||
taux: 2 * taux de participation employeur
|
||||
|
||||
contrat salarié . frais professionnels . abonnement transports publics . prise en charge:
|
||||
titre: Abonnement transports publics, part prise en charge par l'employeur (déductible)
|
||||
? contrat salarié . frais professionnels . abonnement transports publics . prise en charge
|
||||
: titre: Abonnement transports publics, part prise en charge par l'employeur (déductible)
|
||||
unité: €/mois
|
||||
valeur: taux de prise en charge * montant
|
||||
|
||||
|
@ -224,14 +224,14 @@ contrat salarié . frais professionnels . transports personnels . montant:
|
|||
- carburant faible émission . montant
|
||||
- forfait mobilités durables . montant
|
||||
|
||||
contrat salarié . frais professionnels . transports personnels . part déductible:
|
||||
valeur:
|
||||
? contrat salarié . frais professionnels . transports personnels . part déductible
|
||||
: valeur:
|
||||
somme:
|
||||
- carburant faible émission . part déductible
|
||||
- forfait mobilités durables . part déductible
|
||||
|
||||
contrat salarié . frais professionnels . transports personnels . proportion déduction:
|
||||
titre: Facteur de proportion de la déductibilité
|
||||
? contrat salarié . frais professionnels . transports personnels . proportion déduction
|
||||
: titre: Facteur de proportion de la déductibilité
|
||||
valeur:
|
||||
produit:
|
||||
assiette:
|
||||
|
@ -242,11 +242,11 @@ contrat salarié . frais professionnels . transports personnels . proportion dé
|
|||
références:
|
||||
Article R3261-14 du code du travail, version 11/05/2020: https://www.legifrance.gouv.fr/codes/id/LEGIARTI000041865023/2020-05-11/
|
||||
|
||||
contrat salarié . frais professionnels . transports personnels . carburant faible émission:
|
||||
valeur: oui
|
||||
? contrat salarié . frais professionnels . transports personnels . carburant faible émission
|
||||
: valeur: oui
|
||||
|
||||
contrat salarié . frais professionnels . transports personnels . carburant faible émission . montant:
|
||||
titre: Prise en charge du carburant pour véhicule électrique, hybride rechargeable ou hydrogène
|
||||
? contrat salarié . frais professionnels . transports personnels . carburant faible émission . montant
|
||||
: titre: Prise en charge du carburant pour véhicule électrique, hybride rechargeable ou hydrogène
|
||||
question: Quel montant l'employeur prend-il en charge des dépenses en carburant pour véhicule électrique, hybride rechargeable ou hydrogènes?
|
||||
unité: €/an
|
||||
par défaut: 0 €/an
|
||||
|
@ -266,8 +266,8 @@ contrat salarié . frais professionnels . transports personnels . carburant faib
|
|||
Articles R3261-11 à -13 du code du travail, version 11/05/2020: https://www.legifrance.gouv.fr/codes/section_lc/LEGITEXT000006072050/LEGISCTA000018487476/2020-05-11
|
||||
Article 81 du code des impôts, version en vigueur au 31/12/2020: https://www.legifrance.gouv.fr/codes/id/LEGIARTI000042910732/2020-12-31/
|
||||
|
||||
contrat salarié . frais professionnels . transports personnels . carburant faible émission . part déductible:
|
||||
titre: Prise en charge du carburant pour véhicule électrique, hybride rechargeable ou hydrogène (part déductible)
|
||||
? contrat salarié . frais professionnels . transports personnels . carburant faible émission . part déductible
|
||||
: titre: Prise en charge du carburant pour véhicule électrique, hybride rechargeable ou hydrogène (part déductible)
|
||||
unité: €/an
|
||||
valeur: montant
|
||||
plafond:
|
||||
|
@ -276,11 +276,11 @@ contrat salarié . frais professionnels . transports personnels . carburant faib
|
|||
- valeur: proportion déduction * 500€/an
|
||||
abattement: abonnement transports publics . prise en charge
|
||||
|
||||
contrat salarié . frais professionnels . transports personnels . forfait mobilités durables:
|
||||
valeur: oui
|
||||
? contrat salarié . frais professionnels . transports personnels . forfait mobilités durables
|
||||
: valeur: oui
|
||||
|
||||
contrat salarié . frais professionnels . transports personnels . forfait mobilités durables . montant:
|
||||
titre: Prise en charge des frais de transports forfait mobilités durables
|
||||
? contrat salarié . frais professionnels . transports personnels . forfait mobilités durables . montant
|
||||
: titre: Prise en charge des frais de transports forfait mobilités durables
|
||||
question: Quel montant l'employeur prend-il en charge dans le cadre du forfait mobilités durables ?
|
||||
unité: €/an
|
||||
par défaut: 0 €/an
|
||||
|
@ -312,8 +312,8 @@ contrat salarié . frais professionnels . transports personnels . forfait mobili
|
|||
Articles R3261-13-1 à -13-2 du code du travail, version 11/05/2020: https://www.legifrance.gouv.fr/codes/section_lc/LEGITEXT000006072050/LEGISCTA000018487476/2020-05-11
|
||||
Article 81 du code des impôts, version en vigueur au 31/12/2020: https://www.legifrance.gouv.fr/codes/id/LEGIARTI000042910732/2020-12-31/
|
||||
|
||||
contrat salarié . frais professionnels . transports personnels . forfait mobilités durables . part déductible:
|
||||
titre: Prise en charge des frais de transports forfait mobilités durables (part déductible)
|
||||
? contrat salarié . frais professionnels . transports personnels . forfait mobilités durables . part déductible
|
||||
: titre: Prise en charge des frais de transports forfait mobilités durables (part déductible)
|
||||
unité: €/an
|
||||
valeur: montant
|
||||
plafond:
|
||||
|
@ -377,8 +377,8 @@ contrat salarié . activité partielle . heures travaillées:
|
|||
20 h/semaine: 86.6666 heures/mois
|
||||
10 h/semaine: 43.3333 heures/mois
|
||||
|
||||
contrat salarié . activité partielle . heures travaillées . contrôle temps de travail:
|
||||
type: notification
|
||||
? contrat salarié . activité partielle . heures travaillées . contrôle temps de travail
|
||||
: type: notification
|
||||
sévérité: avertissement
|
||||
formule: heures travaillées > temps de travail . temps contractuel
|
||||
description: >-
|
||||
|
@ -455,8 +455,8 @@ contrat salarié . activité partielle . indemnités . conventionnelle:
|
|||
Legifrance: https://www.legifrance.gouv.fr/affichIDCCArticle.do?idArticle=KALIARTI000028465400&cidTexte=KALITEXT000028465378&dateTexte=29990101&categorieLien=id
|
||||
Juritravail: https://www.juritravail.com/Actualite/Hygiene-securite-travail-employeur/Id/327284
|
||||
|
||||
contrat salarié . activité partielle . indemnités . conventionnelle . part soumise à cotisation:
|
||||
applicable si:
|
||||
? contrat salarié . activité partielle . indemnités . conventionnelle . part soumise à cotisation
|
||||
: applicable si:
|
||||
toutes ces conditions:
|
||||
- indemnités . conventionnelle > 0
|
||||
- indemnités . conventionnelle + indemnités . base > 3.15 * SMIC
|
||||
|
@ -496,8 +496,8 @@ contrat salarié . activité partielle . indemnisation entreprise:
|
|||
avec:
|
||||
rémunération . brut de base: 4.5 * SMIC
|
||||
|
||||
contrat salarié . activité partielle . indemnisation entreprise . taux d'indemnisation:
|
||||
description: >-
|
||||
? contrat salarié . activité partielle . indemnisation entreprise . taux d'indemnisation
|
||||
: description: >-
|
||||
Depuis le 1er juin, le taux d'indemnisation de l'entreprise passe à 60%.
|
||||
L'indemnité versée à l'employé reste inchangée et c'est donc l'entreprise
|
||||
qui devra prendre en charge la différence.
|
||||
|
@ -613,8 +613,8 @@ contrat salarié . déduction forfaitaire spécifique . profession . journaliste
|
|||
Concerne les journalistes, rédacteurs, photographes, directeurs de journaux
|
||||
Critiques dramatiques et musicaux.
|
||||
|
||||
contrat salarié . déduction forfaitaire spécifique . profession . journaliste . réduction de taux:
|
||||
applicable si: déduction forfaitaire spécifique . profession = 'journaliste'
|
||||
? contrat salarié . déduction forfaitaire spécifique . profession . journaliste . réduction de taux
|
||||
: applicable si: déduction forfaitaire spécifique . profession = 'journaliste'
|
||||
remplace:
|
||||
- règle: vieillesse . employeur . plafonnée . taux
|
||||
par: vieillesse . employeur . plafonnée . taux * réduction de taux
|
||||
|
@ -635,29 +635,29 @@ contrat salarié . déduction forfaitaire spécifique . profession . journaliste
|
|||
par: ATMP . taux minimum * réduction de taux
|
||||
formule: 80%
|
||||
|
||||
contrat salarié . déduction forfaitaire spécifique . profession . journaliste . abattement fiscal:
|
||||
applicable si: déduction forfaitaire spécifique . profession = 'journaliste'
|
||||
? contrat salarié . déduction forfaitaire spécifique . profession . journaliste . abattement fiscal
|
||||
: applicable si: déduction forfaitaire spécifique . profession = 'journaliste'
|
||||
remplace: rémunération . net imposable
|
||||
titre: net imposable journaliste
|
||||
formule:
|
||||
valeur: rémunération . net imposable
|
||||
abattement: 7650€/an
|
||||
|
||||
contrat salarié . déduction forfaitaire spécifique . profession . ouvrier du bâtiment:
|
||||
icônes: 👷♂️
|
||||
? contrat salarié . déduction forfaitaire spécifique . profession . ouvrier du bâtiment
|
||||
: icônes: 👷♂️
|
||||
description: >-
|
||||
Concerne les ouvriers du bâtiment visés aux paragraphes 1er et 2 de
|
||||
l’article 1er du décret du 17 novembre 1936, à l’exclusion de ceux qui
|
||||
travaillent en usine ou en atelier.
|
||||
|
||||
contrat salarié . déduction forfaitaire spécifique . profession . artiste musicien:
|
||||
icônes: 🎼
|
||||
? contrat salarié . déduction forfaitaire spécifique . profession . artiste musicien
|
||||
: icônes: 🎼
|
||||
description: >-
|
||||
Concerne les artistes musiciens, choristes, chefs d’orchestre, régisseurs de
|
||||
théâtre
|
||||
|
||||
contrat salarié . déduction forfaitaire spécifique . profession . pilote de ligne ou personnel navigant:
|
||||
icônes: ✈
|
||||
? contrat salarié . déduction forfaitaire spécifique . profession . pilote de ligne ou personnel navigant
|
||||
: icônes: ✈
|
||||
description: >-
|
||||
Concerne les pilotes, radios, mécaniciens navigants des compagnies de
|
||||
transports aériens ; pilotes et mécaniciens employés par les maisons de
|
||||
|
@ -1482,8 +1482,8 @@ contrat salarié . rémunération . primes . fin d'année:
|
|||
assiette: assiette de vérification du SMIC * temps de travail . quotité de travail / 1 an
|
||||
facteur: prime de fin d'année en mois
|
||||
|
||||
contrat salarié . rémunération . primes . fin d'année . prime de fin d'année en mois:
|
||||
applicable si: treizième mois
|
||||
? contrat salarié . rémunération . primes . fin d'année . prime de fin d'année en mois
|
||||
: applicable si: treizième mois
|
||||
formule: 13 mois - 1 an
|
||||
note: >
|
||||
Certaines entreprises proposent une prime de fin d'année sur une base de
|
||||
|
@ -1674,8 +1674,8 @@ contrat salarié . rémunération . avantages en nature . nourriture . montant:
|
|||
références:
|
||||
urssaf.fr: https://www.urssaf.fr/portail/home/taux-et-baremes/avantages-en-nature/nourriture.html
|
||||
|
||||
contrat salarié . rémunération . avantages en nature . nourriture . repas par mois:
|
||||
question: >
|
||||
? contrat salarié . rémunération . avantages en nature . nourriture . repas par mois
|
||||
: question: >
|
||||
Combien de repas par mois sont payés par l'entreprise ?
|
||||
par défaut: 21 repas/mois
|
||||
suggestions:
|
||||
|
@ -1837,8 +1837,8 @@ contrat salarié . rémunération . net imposable:
|
|||
références:
|
||||
DSN: https://dsn-info.custhelp.com/app/answers/detail/a_id/2110
|
||||
|
||||
contrat salarié . rémunération . net imposable . heures supplémentaires et complémentaires défiscalisées:
|
||||
unité: €/mois
|
||||
? contrat salarié . rémunération . net imposable . heures supplémentaires et complémentaires défiscalisées
|
||||
: unité: €/mois
|
||||
formule:
|
||||
valeur:
|
||||
somme:
|
||||
|
@ -1961,8 +1961,8 @@ contrat salarié . cotisations . patronales . réductions de cotisations:
|
|||
urssaf.fr (cumul réduction générale): https://www.urssaf.fr/portail/home/employeur/beneficier-dune-exoneration/exonerations-generales/la-reduction-generale/les-regles-relatives-au-cumul.html
|
||||
urssaf.fr (cumul JEI): https://www.urssaf.fr/portail/home/employeur/beneficier-dune-exoneration/exonerations-ou-aides-liees-au-s/jeunes-entreprises-innovantes/regles-de-cumul.html
|
||||
|
||||
contrat salarié . cotisations . patronales . réductions de cotisations . déduction heures supplémentaires:
|
||||
applicable si: entreprise . effectif < 20
|
||||
? contrat salarié . cotisations . patronales . réductions de cotisations . déduction heures supplémentaires
|
||||
: applicable si: entreprise . effectif < 20
|
||||
titre: déduction forfaitaire pour heures supplémentaires
|
||||
formule:
|
||||
produit:
|
||||
|
@ -1982,8 +1982,8 @@ contrat salarié . cotisations . salariales . réduction heures supplémentaires
|
|||
références:
|
||||
Code de la sécurité sociale - Article D241-21: https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000038056813&cidTexte=LEGITEXT000006073189
|
||||
|
||||
contrat salarié . cotisations . salariales . réduction heures supplémentaires . taux des cotisations réduites:
|
||||
unité: '%'
|
||||
? contrat salarié . cotisations . salariales . réduction heures supplémentaires . taux des cotisations réduites
|
||||
: unité: '%'
|
||||
description: le taux effectif des cotisations d'assurance vieillesse à la charge du salarié
|
||||
formule:
|
||||
valeur:
|
||||
|
@ -2072,8 +2072,8 @@ contrat salarié . aides employeur . aide à l'embauche d'apprentis:
|
|||
références:
|
||||
Fiche service-public.fr: https://www.service-public.fr/professionnels-entreprises/vosdroits/F23556
|
||||
|
||||
contrat salarié . aides employeur . aide exceptionnelle à l'embauche d'apprentis:
|
||||
description: >-
|
||||
? contrat salarié . aides employeur . aide exceptionnelle à l'embauche d'apprentis
|
||||
: description: >-
|
||||
Dans le cadre du plan de relance de l'économie de la rentrée 2020, le
|
||||
gouvernement met en place une aide exceptionnelle au recrutement des
|
||||
apprentis.
|
||||
|
@ -2135,8 +2135,8 @@ contrat salarié . aides employeur . aide exceptionnelle à l'embauche des jeune
|
|||
références:
|
||||
Plan \#1jeune1solution: https://travail-emploi.gouv.fr/le-ministere-en-action/relance-activite/plan-1jeune-1solution/aide-embauche-jeunes
|
||||
|
||||
contrat salarié . aides employeur . aide à l'embauche senior professionnalisation:
|
||||
description: |
|
||||
? contrat salarié . aides employeur . aide à l'embauche senior professionnalisation
|
||||
: description: |
|
||||
Les employeurs peuvent obtenir une aide de 2000 € pour l'embauche d'un
|
||||
demandeur d'emploi de plus de 45 ans en contrat de professionnalisation.
|
||||
applicable si: professionnalisation . salarié de 45 ans et plus
|
||||
|
@ -2213,8 +2213,8 @@ contrat salarié . temps de travail:
|
|||
- heures complémentaires
|
||||
description: En France, la base légale du travail est de 35h/semaine. Mais un grand nombre de dispositions existantes permettent de faire varier ce nombre. Vous pouvez les retrouver sur la page [service-public.fr](https://www.service-public.fr/particuliers/vosdroits/N458) dédiée.
|
||||
|
||||
contrat salarié . aides employeur . aide à l'embauche des travailleurs handicapés:
|
||||
non applicable si: aides employeur . emploi franc
|
||||
? contrat salarié . aides employeur . aide à l'embauche des travailleurs handicapés
|
||||
: non applicable si: aides employeur . emploi franc
|
||||
description: >-
|
||||
Dans le cadre du plan de relance, le gouvernement a décidé de créer une aide
|
||||
à l’embauche visant à favoriser l’emploi des personnes en situation de
|
||||
|
@ -2360,8 +2360,8 @@ contrat salarié . temps de travail . heures complémentaires:
|
|||
question: Combien d'heures complémentaires (non récupérées en repos) sont effectuées par mois ?
|
||||
par défaut: 0 heure/mois
|
||||
|
||||
contrat salarié . temps de travail . contrôle heures complémentaires 10 pourcents:
|
||||
type: notification
|
||||
? contrat salarié . temps de travail . contrôle heures complémentaires 10 pourcents
|
||||
: type: notification
|
||||
formule: heures complémentaires > heures complémentaires . seuil légal
|
||||
description: Sauf disposition conventionnelle, le nombre d'heures complémentaires ne peut être supérieur à un dixième de la durée contractuelle du temps partiel.
|
||||
|
||||
|
@ -2653,8 +2653,8 @@ contrat salarié . retraite supplémentaire . part déductible:
|
|||
valeur: retraite supplémentaire . employeur
|
||||
abattement: plafond d'exonération sociale employeur
|
||||
|
||||
contrat salarié . retraite supplémentaire . plafond d'exonération sociale employeur:
|
||||
formule:
|
||||
? contrat salarié . retraite supplémentaire . plafond d'exonération sociale employeur
|
||||
: formule:
|
||||
valeur: 5% * rémunération . brut
|
||||
plafond: 5% * plafond sécurité sociale
|
||||
références:
|
||||
|
@ -2929,8 +2929,8 @@ contrat salarié . CSG et CRDS . assiette revenu remplacements:
|
|||
taux: 98.25%
|
||||
assiette: rémunération . revenus de remplacement
|
||||
|
||||
contrat salarié . CSG et CRDS . assiette heures supplémentaires et complémentaires défiscalisées:
|
||||
formule:
|
||||
? contrat salarié . CSG et CRDS . assiette heures supplémentaires et complémentaires défiscalisées
|
||||
: formule:
|
||||
produit:
|
||||
assiette: rémunération . net imposable . heures supplémentaires et complémentaires défiscalisées
|
||||
taux: 98.25%
|
||||
|
|
|
@ -73,8 +73,7 @@ export function createTracker(siteId?: string, doNotTrack = false) {
|
|||
}
|
||||
constructor(options: { language: 'fr' | 'en' }) {
|
||||
super({ site })
|
||||
this.site[INDICATOR.SITE.LANGAGE] =
|
||||
`[${options.language}]` as CustomSiteIndicator[1]
|
||||
this.site[INDICATOR.SITE.LANGAGE] = `[${options.language}]`
|
||||
if (process.env.NODE_ENV === 'production' && doNotTrack) {
|
||||
this.privacy.setVisitorOptout()
|
||||
} else {
|
||||
|
|
|
@ -82,8 +82,7 @@
|
|||
: null
|
||||
}
|
||||
var c = this,
|
||||
b =
|
||||
/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g,
|
||||
b = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g,
|
||||
d = RegExp(
|
||||
'^[\\x20\\t\\r\\n\\f]+|((?:^|[^\\\\])(?:\\\\.)*)[\\x20\\t\\r\\n\\f]+$',
|
||||
'g'
|
||||
|
@ -1507,13 +1506,12 @@
|
|||
'undefined' !== typeof window &&
|
||||
'undefined' !== typeof window.location
|
||||
) {
|
||||
h = (
|
||||
c.getConfig('urlPropertyQueryString')
|
||||
? window.location.href
|
||||
: window.location.protocol +
|
||||
'//' +
|
||||
window.location.host +
|
||||
window.location.pathname
|
||||
h = (c.getConfig('urlPropertyQueryString')
|
||||
? window.location.href
|
||||
: window.location.protocol +
|
||||
'//' +
|
||||
window.location.host +
|
||||
window.location.pathname
|
||||
)
|
||||
.replace(/[<>]/g, '')
|
||||
.substring(0, 1600)
|
||||
|
@ -1523,10 +1521,9 @@
|
|||
c.setContext('page', l)
|
||||
c.setParam('page_url', h, {
|
||||
permanent: !0,
|
||||
hitType:
|
||||
'page click publisher selfPromotion onSiteAdsClick onSiteAdsImpression InternalSearch mvtesting richmedia'.split(
|
||||
' '
|
||||
),
|
||||
hitType: 'page click publisher selfPromotion onSiteAdsClick onSiteAdsImpression InternalSearch mvtesting richmedia'.split(
|
||||
' '
|
||||
),
|
||||
})
|
||||
}
|
||||
c.plugins.init()
|
||||
|
@ -1644,13 +1641,8 @@
|
|||
},
|
||||
c = { search: 's', content: 'c' }
|
||||
this.atMedium = 'sl'
|
||||
this.atTerm =
|
||||
this.atNetwork =
|
||||
this.atVariant =
|
||||
this.atCreation =
|
||||
this.atPlatform =
|
||||
this.atCampaign =
|
||||
''
|
||||
this.atTerm = this.atNetwork = this.atVariant = this.atCreation = this.atPlatform = this.atCampaign =
|
||||
''
|
||||
this.format = function () {
|
||||
var a = 'sec',
|
||||
h = b(this.atCampaign),
|
||||
|
@ -1701,15 +1693,8 @@
|
|||
this.Email = function () {
|
||||
var e = { acquisition: 'erec', retention: 'epr', promotion: 'es' }
|
||||
this.atMedium = 'email'
|
||||
this.atSendTime =
|
||||
this.atRecipientList =
|
||||
this.atRecipientId =
|
||||
this.atLink =
|
||||
this.atSendDate =
|
||||
this.atCreation =
|
||||
this.atCampaign =
|
||||
this.atEmailtype =
|
||||
''
|
||||
this.atSendTime = this.atRecipientList = this.atRecipientId = this.atLink = this.atSendDate = this.atCreation = this.atCampaign = this.atEmailtype =
|
||||
''
|
||||
this.format = function () {
|
||||
var a = e[this.atEmailtype] || e.promotion,
|
||||
c = b(this.atCampaign),
|
||||
|
@ -1777,13 +1762,8 @@
|
|||
}
|
||||
this.Affiliate = function () {
|
||||
this.atMedium = 'affiliate'
|
||||
this.atVariant =
|
||||
this.atCreation =
|
||||
this.atFormat =
|
||||
this.atIdentifier =
|
||||
this.atType =
|
||||
this.atCampaign =
|
||||
''
|
||||
this.atVariant = this.atCreation = this.atFormat = this.atIdentifier = this.atType = this.atCampaign =
|
||||
''
|
||||
this.format = function () {
|
||||
var a = 'al',
|
||||
f = b(this.atCampaign),
|
||||
|
@ -1833,14 +1813,8 @@
|
|||
}
|
||||
this.Display = function () {
|
||||
this.atMedium = 'display'
|
||||
this.atDetailPlacement =
|
||||
this.atGeneralPlacement =
|
||||
this.atChannel =
|
||||
this.atFormat =
|
||||
this.atVariant =
|
||||
this.atCreation =
|
||||
this.atCampaign =
|
||||
''
|
||||
this.atDetailPlacement = this.atGeneralPlacement = this.atChannel = this.atFormat = this.atVariant = this.atCreation = this.atCampaign =
|
||||
''
|
||||
this.format = function () {
|
||||
var a = 'ad',
|
||||
f = b(this.atCampaign),
|
||||
|
@ -1911,13 +1885,8 @@
|
|||
}
|
||||
}
|
||||
this.Custom = function () {
|
||||
this.atCustom4 =
|
||||
this.atCustom3 =
|
||||
this.atCustom2 =
|
||||
this.atCustom1 =
|
||||
this.atCampaign =
|
||||
this.atMedium =
|
||||
''
|
||||
this.atCustom4 = this.atCustom3 = this.atCustom2 = this.atCustom1 = this.atCampaign = this.atMedium =
|
||||
''
|
||||
this.format = function () {
|
||||
var a = ''
|
||||
;/\d+$/.test(this.atMedium) && (a = /\d+$/.exec(this.atMedium)[0])
|
||||
|
|
|
@ -10,6 +10,7 @@ type BannerProps = {
|
|||
hidden?: boolean
|
||||
hideAfterFirstStep?: boolean
|
||||
icon?: string
|
||||
className?: string
|
||||
}
|
||||
|
||||
export default function Banner({
|
||||
|
@ -17,13 +18,14 @@ export default function Banner({
|
|||
hidden: hiddenProp = false,
|
||||
hideAfterFirstStep = true,
|
||||
icon,
|
||||
className,
|
||||
}: BannerProps) {
|
||||
const hiddenState = useSelector(firstStepCompletedSelector)
|
||||
|
||||
const hidden = hiddenProp || (hideAfterFirstStep && hiddenState)
|
||||
return !hidden ? (
|
||||
<Animate.fadeIn>
|
||||
<div className="ui__ banner">
|
||||
<Animate.fadeIn className={className}>
|
||||
<div className={'ui__ banner ' + className}>
|
||||
{icon && emoji(icon)}
|
||||
<div className="ui__ banner-content">{children}</div>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useContext } from 'react'
|
||||
import React, { useContext, useState } from 'react'
|
||||
import emoji from 'react-easy-emoji'
|
||||
import { animated, config, useSpring } from 'react-spring'
|
||||
import useDisplayOnIntersecting from 'Components/utils/useDisplayOnIntersecting'
|
||||
|
@ -51,6 +51,7 @@ type BarChartBranchProps = {
|
|||
maximum: number
|
||||
description?: string
|
||||
unit?: string
|
||||
disableAnimation: boolean
|
||||
}
|
||||
|
||||
export default function BarChartBranch({
|
||||
|
@ -60,11 +61,11 @@ export default function BarChartBranch({
|
|||
maximum,
|
||||
description,
|
||||
unit,
|
||||
disableAnimation,
|
||||
}: BarChartBranchProps) {
|
||||
const [intersectionRef, brancheInViewport] = useDisplayOnIntersecting({
|
||||
threshold: 0.5,
|
||||
})
|
||||
const { color } = useContext(ThemeColorsContext)
|
||||
const numberToPlot = brancheInViewport ? value : 0
|
||||
const styles = useSpring({
|
||||
config: ANIMATION_SPRING,
|
||||
|
@ -74,12 +75,53 @@ export default function BarChartBranch({
|
|||
},
|
||||
}) as { flex: number; opacity: number } // TODO: problème avec les types de react-spring ?
|
||||
|
||||
return (
|
||||
return !disableAnimation ? (
|
||||
<animated.div
|
||||
ref={intersectionRef}
|
||||
className="distribution-chart__item"
|
||||
style={{ opacity: styles.opacity }}
|
||||
>
|
||||
<InnerBarChartBranch
|
||||
value={numberToPlot}
|
||||
maximum={maximum}
|
||||
title={title}
|
||||
unit={unit}
|
||||
icon={icon}
|
||||
description={description}
|
||||
/>
|
||||
</animated.div>
|
||||
) : (
|
||||
<InnerBarChartBranch
|
||||
value={value}
|
||||
maximum={maximum}
|
||||
title={title}
|
||||
unit={unit}
|
||||
icon={icon}
|
||||
description={description}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
type InnerBarChartBranchProps = {
|
||||
title: React.ReactNode
|
||||
icon?: string
|
||||
maximum: number
|
||||
description?: string
|
||||
unit?: string
|
||||
value: number
|
||||
}
|
||||
|
||||
function InnerBarChartBranch({
|
||||
value,
|
||||
title,
|
||||
icon,
|
||||
maximum,
|
||||
description,
|
||||
unit,
|
||||
}: InnerBarChartBranchProps) {
|
||||
const { color } = useContext(ThemeColorsContext)
|
||||
return (
|
||||
<>
|
||||
{icon && <BranchIcon icon={icon} />}
|
||||
<div className="distribution-chart__item-content">
|
||||
<p className="distribution-chart__counterparts">
|
||||
|
@ -90,12 +132,12 @@ export default function BarChartBranch({
|
|||
<ChartItemBar
|
||||
style={{
|
||||
backgroundColor: color,
|
||||
flex: styles.flex,
|
||||
flex: value / maximum,
|
||||
}}
|
||||
numberToPlot={numberToPlot}
|
||||
numberToPlot={value}
|
||||
unit={unit}
|
||||
/>
|
||||
</div>
|
||||
</animated.div>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -66,8 +66,11 @@ export default function CurrencyInput({
|
|||
onChangeDebounced?.(event)
|
||||
}
|
||||
|
||||
const { isCurrencyPrefixed, thousandSeparator, decimalSeparator } =
|
||||
currencyFormat(language)
|
||||
const {
|
||||
isCurrencyPrefixed,
|
||||
thousandSeparator,
|
||||
decimalSeparator,
|
||||
} = currencyFormat(language)
|
||||
// Autogrow the input
|
||||
const valueLength = currentValue.toString().length
|
||||
const width = `${5 + (valueLength - 5) * 0.75}em`
|
||||
|
|
|
@ -10,22 +10,24 @@ import './PaySlip'
|
|||
import { getCotisationsBySection } from './PaySlip'
|
||||
import RuleLink from './RuleLink'
|
||||
|
||||
export default function Distribution() {
|
||||
interface DistributionProps {
|
||||
disableAnimation: boolean
|
||||
}
|
||||
|
||||
export default function Distribution({ disableAnimation }: DistributionProps) {
|
||||
const targetUnit = useSelector(targetUnitSelector)
|
||||
const engine = useContext(EngineContext)
|
||||
const distribution = (
|
||||
getCotisationsBySection(useEngine().getParsedRules()).map(
|
||||
([section, cotisations]) => [
|
||||
section,
|
||||
cotisations
|
||||
.map((c) => engine.evaluate({ valeur: c, unité: targetUnit }))
|
||||
.reduce(
|
||||
(acc, evaluation) => acc + ((evaluation?.nodeValue as number) || 0),
|
||||
0
|
||||
),
|
||||
]
|
||||
) as Array<[DottedName, number]>
|
||||
)
|
||||
const distribution = (getCotisationsBySection(
|
||||
useEngine().getParsedRules()
|
||||
).map(([section, cotisations]) => [
|
||||
section,
|
||||
cotisations
|
||||
.map((c) => engine.evaluate({ valeur: c, unité: targetUnit }))
|
||||
.reduce(
|
||||
(acc, evaluation) => acc + ((evaluation?.nodeValue as number) || 0),
|
||||
0
|
||||
),
|
||||
]) as Array<[DottedName, number]>)
|
||||
.filter(([, value]) => value > 0)
|
||||
.sort(([, a], [, b]) => b - a)
|
||||
|
||||
|
@ -39,6 +41,7 @@ export default function Distribution() {
|
|||
dottedName={sectionName}
|
||||
value={value}
|
||||
maximum={maximum}
|
||||
disableAnimation={disableAnimation}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
|
@ -49,8 +52,8 @@ type DistributionBranchProps = {
|
|||
dottedName: DottedName
|
||||
value: number
|
||||
maximum: number
|
||||
|
||||
icon?: string
|
||||
disableAnimation: boolean
|
||||
}
|
||||
|
||||
export function DistributionBranch({
|
||||
|
@ -58,6 +61,7 @@ export function DistributionBranch({
|
|||
value,
|
||||
icon,
|
||||
maximum,
|
||||
disableAnimation,
|
||||
}: DistributionBranchProps) {
|
||||
const branche = useContext(EngineContext).getRule(dottedName)
|
||||
|
||||
|
@ -69,6 +73,7 @@ export function DistributionBranch({
|
|||
icon={icon ?? branche.rawNode.icônes}
|
||||
description={branche.rawNode.résumé}
|
||||
unit="€"
|
||||
disableAnimation={disableAnimation}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
import { LinkButton } from 'Components/ui/Button'
|
||||
import React, { useEffect, useState } from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import Banner from './Banner'
|
||||
|
||||
interface ExportSimulationBannerProps {
|
||||
userWillExport: () => void
|
||||
disableAnimation: boolean
|
||||
}
|
||||
|
||||
export default function ExportSimulationBanner({
|
||||
userWillExport,
|
||||
disableAnimation,
|
||||
}: ExportSimulationBannerProps) {
|
||||
const [printRequired, setPrintRequired] = useState(false)
|
||||
useEffect(() => {
|
||||
if (printRequired) {
|
||||
window.print()
|
||||
setPrintRequired(false)
|
||||
}
|
||||
}, [disableAnimation])
|
||||
return (
|
||||
<Banner
|
||||
hideAfterFirstStep={false}
|
||||
icon="🖨"
|
||||
className="ui__ print-display-none"
|
||||
>
|
||||
{
|
||||
<Trans i18nKey="ExportSimulation.Banner">
|
||||
Pour conserver cette simulation :{' '}
|
||||
<LinkButton
|
||||
onClick={() => {
|
||||
setPrintRequired(true)
|
||||
disableAnimation ? window.print() : userWillExport()
|
||||
}}
|
||||
>
|
||||
Imprimer ou sauvegarder en PDF
|
||||
</LinkButton>
|
||||
</Trans>
|
||||
}
|
||||
</Banner>
|
||||
)
|
||||
}
|
|
@ -6,8 +6,10 @@ import { Etablissement, searchDenominationOrSiren } from '../api/sirene'
|
|||
import { debounce } from '../utils'
|
||||
|
||||
export default function Search() {
|
||||
const [searchResults, setSearchResults] =
|
||||
useState<Array<Etablissement> | null>()
|
||||
const [
|
||||
searchResults,
|
||||
setSearchResults,
|
||||
] = useState<Array<Etablissement> | null>()
|
||||
const [isLoading, setLoadingState] = useState(false)
|
||||
|
||||
const handleSearch = useCallback(
|
||||
|
@ -19,10 +21,9 @@ export default function Search() {
|
|||
},
|
||||
[setSearchResults, setLoadingState]
|
||||
)
|
||||
const debouncedHandleSearch = useMemo(
|
||||
() => debounce(300, handleSearch),
|
||||
[handleSearch]
|
||||
)
|
||||
const debouncedHandleSearch = useMemo(() => debounce(300, handleSearch), [
|
||||
handleSearch,
|
||||
])
|
||||
const setEntreprise = useSetEntreprise()
|
||||
|
||||
return (
|
||||
|
|
|
@ -61,7 +61,7 @@ export default function NewsletterRegister() {
|
|||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="ui__ print-display-none">
|
||||
<h2>
|
||||
<Trans i18nKey="newsletter.register.titre">Restez au courant</Trans>
|
||||
</h2>
|
||||
|
@ -97,6 +97,6 @@ export default function NewsletterRegister() {
|
|||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -52,12 +52,10 @@ export function getCotisationsBySection(
|
|||
)
|
||||
}
|
||||
|
||||
const cotisations = (
|
||||
[
|
||||
...findCotisations('contrat salarié . cotisations . patronales'),
|
||||
...findCotisations('contrat salarié . cotisations . salariales'),
|
||||
] as Array<ASTNode & { dottedName: DottedName } & { nodeKind: 'reference' }>
|
||||
)
|
||||
const cotisations = ([
|
||||
...findCotisations('contrat salarié . cotisations . patronales'),
|
||||
...findCotisations('contrat salarié . cotisations . salariales'),
|
||||
] as Array<ASTNode & { dottedName: DottedName } & { nodeKind: 'reference' }>)
|
||||
.map((cotisation) => cotisation.dottedName)
|
||||
.filter(Boolean)
|
||||
.map(
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
import { updateUnit } from 'Actions/actions'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import { useDispatch, useSelector } from 'react-redux'
|
||||
import { targetUnitSelector } from 'Selectors/simulationSelectors'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import './PeriodSwitch.css'
|
||||
|
||||
export default function PeriodSwitch() {
|
||||
|
@ -25,7 +24,10 @@ export default function PeriodSwitch() {
|
|||
<div id="PeriodSwitch">
|
||||
<span className="base ui__ small radio toggle">
|
||||
{periods.map(({ label, unit }) => (
|
||||
<label key={unit}>
|
||||
<label
|
||||
key={unit}
|
||||
className={currentUnit !== unit ? 'ui__ print-display-none' : ''}
|
||||
>
|
||||
<input
|
||||
name="defaultUnit"
|
||||
type="radio"
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import { loadPreviousSimulation } from 'Actions/actions'
|
||||
import { LinkButton } from 'Components/ui/Button'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { useDispatch, useSelector } from 'react-redux'
|
||||
import { RootState } from 'Reducers/rootReducer'
|
||||
import { LinkButton } from 'Components/ui/Button'
|
||||
import Banner from './Banner'
|
||||
import { firstStepCompletedSelector } from 'Selectors/simulationSelectors'
|
||||
import Banner from './Banner'
|
||||
|
||||
export default function PreviousSimulationBanner() {
|
||||
const previousSimulation = useSelector(
|
||||
|
@ -14,15 +14,17 @@ export default function PreviousSimulationBanner() {
|
|||
const dispatch = useDispatch()
|
||||
|
||||
return (
|
||||
<Banner hidden={!previousSimulation || newSimulationStarted} icon="💾">
|
||||
<Trans i18nKey="previousSimulationBanner.info">
|
||||
Votre précédente simulation a été sauvegardée :
|
||||
</Trans>{' '}
|
||||
<LinkButton onClick={() => dispatch(loadPreviousSimulation())}>
|
||||
<Trans i18nKey="previousSimulationBanner.retrieveButton">
|
||||
Retrouver ma simulation
|
||||
</Trans>
|
||||
</LinkButton>
|
||||
</Banner>
|
||||
<div className="ui__ print-display-none">
|
||||
<Banner hidden={!previousSimulation || newSimulationStarted} icon="💾">
|
||||
<Trans i18nKey="previousSimulationBanner.info">
|
||||
Votre précédente simulation a été sauvegardée :
|
||||
</Trans>{' '}
|
||||
<LinkButton onClick={() => dispatch(loadPreviousSimulation())}>
|
||||
<Trans i18nKey="previousSimulationBanner.retrieveButton">
|
||||
Retrouver ma simulation
|
||||
</Trans>
|
||||
</LinkButton>
|
||||
</Banner>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -39,10 +39,9 @@ export default function SchemeComparaison({
|
|||
const [conversationStarted, setConversationStarted] = useState(
|
||||
!!Object.keys(useSelector(situationSelector)).length
|
||||
)
|
||||
const startConversation = useCallback(
|
||||
() => setConversationStarted(true),
|
||||
[setConversationStarted]
|
||||
)
|
||||
const startConversation = useCallback(() => setConversationStarted(true), [
|
||||
setConversationStarted,
|
||||
])
|
||||
|
||||
const situation = useSelector(situationSelector)
|
||||
const displayResult =
|
||||
|
|
|
@ -8,24 +8,24 @@ import { TrackingContext } from '../ATInternetTracking'
|
|||
import Banner from './Banner'
|
||||
import { useParamsFromSituation } from './utils/useSearchParamsSimulationSharing'
|
||||
|
||||
export function useUrl() {
|
||||
const situation = useSelector(situationSelector)
|
||||
const searchParams = useParamsFromSituation(situation)
|
||||
searchParams.set('utm_source', 'sharing')
|
||||
return [
|
||||
window.location.origin,
|
||||
window.location.pathname,
|
||||
'?',
|
||||
searchParams.toString(),
|
||||
].join('')
|
||||
}
|
||||
|
||||
export default function ShareSimulationBanner() {
|
||||
const [opened, setOpened] = useState(false)
|
||||
const { t } = useTranslation()
|
||||
const tracker = useContext(TrackingContext)
|
||||
const situation = useSelector(situationSelector)
|
||||
const searchParams = useParamsFromSituation(situation)
|
||||
searchParams.set('utm_source', 'sharing')
|
||||
|
||||
const shareAPIAvailable = !!window?.navigator?.share
|
||||
|
||||
const getUrl = () =>
|
||||
[
|
||||
window.location.origin,
|
||||
window.location.pathname,
|
||||
'?',
|
||||
searchParams.toString(),
|
||||
].join('')
|
||||
|
||||
const url = useUrl()
|
||||
const startSharing = async () => {
|
||||
if (shareAPIAvailable) {
|
||||
try {
|
||||
|
@ -35,7 +35,7 @@ export default function ShareSimulationBanner() {
|
|||
'shareSimulation.navigatorShare',
|
||||
'Ma simulation Mon Entreprise'
|
||||
),
|
||||
url: getUrl(),
|
||||
url,
|
||||
})
|
||||
} catch {
|
||||
setOpened(true)
|
||||
|
@ -46,7 +46,11 @@ export default function ShareSimulationBanner() {
|
|||
}
|
||||
|
||||
return (
|
||||
<Banner hideAfterFirstStep={false} icon="💬">
|
||||
<Banner
|
||||
hideAfterFirstStep={false}
|
||||
icon="💬"
|
||||
className="ui__ print-display-none"
|
||||
>
|
||||
{opened ? (
|
||||
<Animate.fromTop>
|
||||
<div>
|
||||
|
@ -66,21 +70,21 @@ export default function ShareSimulationBanner() {
|
|||
simulation.
|
||||
</Trans>
|
||||
</p>
|
||||
<ShareSimulationPopup url={getUrl()} />
|
||||
<ShareSimulationPopup url={url} />
|
||||
</div>
|
||||
</Animate.fromTop>
|
||||
) : (
|
||||
<Trans i18nKey="shareSimulation.banner">
|
||||
Pour partager cette simulation :{' '}
|
||||
<LinkButton
|
||||
onClick={async () => {
|
||||
onClick={() => {
|
||||
tracker.click.set({
|
||||
chapter1: 'feature:partage',
|
||||
type: 'action',
|
||||
name: 'démarré',
|
||||
})
|
||||
tracker.dispatch()
|
||||
await startSharing()
|
||||
startSharing()
|
||||
}}
|
||||
>
|
||||
Générer un lien dédié
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import Conversation, {
|
||||
ConversationProps,
|
||||
} from 'Components/conversation/Conversation'
|
||||
import ExportSimulationBanner from 'Components/ExportSimulationBanner'
|
||||
import PageFeedback from 'Components/Feedback'
|
||||
import SearchButton from 'Components/SearchButton'
|
||||
import ShareSimulationBanner from 'Components/ShareSimulationBanner'
|
||||
|
@ -21,6 +22,8 @@ type SimulationProps = {
|
|||
children?: React.ReactNode
|
||||
customEndMessages?: ConversationProps['customEndMessages']
|
||||
showPeriodSwitch?: boolean
|
||||
userWillExport: () => void
|
||||
disableAnimation: boolean
|
||||
}
|
||||
|
||||
export default function Simulation({
|
||||
|
@ -29,6 +32,8 @@ export default function Simulation({
|
|||
children,
|
||||
customEndMessages,
|
||||
showPeriodSwitch,
|
||||
userWillExport,
|
||||
disableAnimation,
|
||||
}: SimulationProps) {
|
||||
const firstStepCompleted = useSelector(firstStepCompletedSelector)
|
||||
|
||||
|
@ -46,6 +51,10 @@ export default function Simulation({
|
|||
<Animate.fromTop>
|
||||
{results}
|
||||
<ShareSimulationBanner />
|
||||
<ExportSimulationBanner
|
||||
userWillExport={userWillExport}
|
||||
disableAnimation={disableAnimation}
|
||||
/>
|
||||
<Questions customEndMessages={customEndMessages} />
|
||||
<br />
|
||||
<div className="ui__ full-width">
|
||||
|
@ -68,7 +77,7 @@ export default function Simulation({
|
|||
</>
|
||||
)}
|
||||
<div
|
||||
className="ui__ side-block"
|
||||
className="ui__ side-block print-display-none"
|
||||
css={!explanations ? 'justify-content: center;' : ''}
|
||||
>
|
||||
<div
|
||||
|
@ -104,7 +113,7 @@ export function Questions({
|
|||
const progress = useSimulationProgress()
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="ui__ print-display-none">
|
||||
<section className="ui__ full-width lighter-bg">
|
||||
<div className="ui__ container">
|
||||
<div
|
||||
|
@ -141,6 +150,6 @@ export function Questions({
|
|||
{progress < 1 && (
|
||||
<Progress progress={progress} className="ui__ full-width" />
|
||||
)}
|
||||
</>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -83,7 +83,29 @@ export function roundedPercentages(values: Array<number>) {
|
|||
)
|
||||
}
|
||||
|
||||
type StackedBarChartProps = {
|
||||
type StackedBarChartProps = InnerStackedBarChartProps & {
|
||||
disableAnimation: boolean
|
||||
}
|
||||
|
||||
export function StackedBarChart({
|
||||
data,
|
||||
disableAnimation,
|
||||
}: StackedBarChartProps) {
|
||||
const [intersectionRef, displayChart] = useDisplayOnIntersecting({
|
||||
threshold: 0.5,
|
||||
})
|
||||
|
||||
const styles = useSpring({ opacity: displayChart ? 1 : 0 })
|
||||
return !disableAnimation ? (
|
||||
<animated.div ref={intersectionRef} style={styles}>
|
||||
<InnerStackedBarChart data={data} />
|
||||
</animated.div>
|
||||
) : (
|
||||
<InnerStackedBarChart data={data} />
|
||||
)
|
||||
}
|
||||
|
||||
type InnerStackedBarChartProps = {
|
||||
data: Array<{
|
||||
color?: string
|
||||
value: EvaluatedNode['nodeValue']
|
||||
|
@ -92,10 +114,7 @@ type StackedBarChartProps = {
|
|||
}>
|
||||
}
|
||||
|
||||
export function StackedBarChart({ data }: StackedBarChartProps) {
|
||||
const [intersectionRef, displayChart] = useDisplayOnIntersecting({
|
||||
threshold: 0.5,
|
||||
})
|
||||
function InnerStackedBarChart({ data }: InnerStackedBarChartProps) {
|
||||
const percentages = roundedPercentages(
|
||||
data.map((d) => (typeof d.value === 'number' && d.value) || 0)
|
||||
)
|
||||
|
@ -103,11 +122,9 @@ export function StackedBarChart({ data }: StackedBarChartProps) {
|
|||
...data,
|
||||
percentage: percentages[index],
|
||||
}))
|
||||
|
||||
const styles = useSpring({ opacity: displayChart ? 1 : 0 })
|
||||
return (
|
||||
<animated.div ref={intersectionRef} style={styles}>
|
||||
<BarStack>
|
||||
<>
|
||||
<BarStack className="ui__ print-background-force">
|
||||
{dataWithPercentage
|
||||
// <BarItem /> has a border so we don't want to display empty bars
|
||||
// (even with width 0).
|
||||
|
@ -122,7 +139,7 @@ export function StackedBarChart({ data }: StackedBarChartProps) {
|
|||
/>
|
||||
))}
|
||||
</BarStack>
|
||||
<BarStackLegend>
|
||||
<BarStackLegend className="ui__ print-background-force">
|
||||
{dataWithPercentage.map(({ key, percentage, color, legend }) => (
|
||||
<BarStackLegendItem key={key}>
|
||||
<SmallCircle style={{ backgroundColor: color }} />
|
||||
|
@ -131,15 +148,19 @@ export function StackedBarChart({ data }: StackedBarChartProps) {
|
|||
</BarStackLegendItem>
|
||||
))}
|
||||
</BarStackLegend>
|
||||
</animated.div>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
type StackedRulesChartProps = {
|
||||
data: Array<{ color?: string; dottedName: Names; title?: string }>
|
||||
disableAnimation: boolean
|
||||
}
|
||||
|
||||
export default function StackedRulesChart({ data }: StackedRulesChartProps) {
|
||||
export default function StackedRulesChart({
|
||||
data,
|
||||
disableAnimation,
|
||||
}: StackedRulesChartProps) {
|
||||
const engine = useEngine()
|
||||
const targetUnit = useSelector(targetUnitSelector)
|
||||
return (
|
||||
|
@ -151,6 +172,7 @@ export default function StackedRulesChart({ data }: StackedRulesChartProps) {
|
|||
legend: <RuleLink dottedName={dottedName}>{title}</RuleLink>,
|
||||
color,
|
||||
}))}
|
||||
disableAnimation={disableAnimation}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -41,15 +41,13 @@ export default function TargetSelection({ showPeriodSwitch = true }) {
|
|||
)
|
||||
return (
|
||||
<div id="targetSelection">
|
||||
{(
|
||||
(typeof objectifs[0] === 'string'
|
||||
? [{ objectifs }]
|
||||
: objectifs) as Array<{
|
||||
icône?: string
|
||||
nom?: string
|
||||
objectifs: Array<DottedName>
|
||||
}>
|
||||
).map(({ icône, objectifs: targets, nom }, index: number) => (
|
||||
{((typeof objectifs[0] === 'string'
|
||||
? [{ objectifs }]
|
||||
: objectifs) as Array<{
|
||||
icône?: string
|
||||
nom?: string
|
||||
objectifs: Array<DottedName>
|
||||
}>).map(({ icône, objectifs: targets, nom }, index: number) => (
|
||||
<Fragment key={nom || '0'}>
|
||||
<div style={{ display: 'flex', alignItems: 'end' }}>
|
||||
<div style={{ flex: 1 }}>
|
||||
|
|
|
@ -17,9 +17,11 @@ type AnswerListProps = {
|
|||
export default function AnswerList({ onClose }: AnswerListProps) {
|
||||
const dispatch = useDispatch()
|
||||
const engine = useEngine()
|
||||
const answeredQuestions = (
|
||||
Object.keys(useSelector(situationSelector)) as Array<DottedName>
|
||||
).map((dottedName) => engine.evaluate(engine.getRule(dottedName)))
|
||||
const answeredQuestions = (Object.keys(
|
||||
useSelector(situationSelector)
|
||||
) as Array<DottedName>).map((dottedName) =>
|
||||
engine.evaluate(engine.getRule(dottedName))
|
||||
)
|
||||
|
||||
const nextSteps = useNextQuestions().map((dottedName) =>
|
||||
engine.evaluate(engine.getRule(dottedName))
|
||||
|
|
|
@ -175,7 +175,7 @@ export default function Question({
|
|||
}
|
||||
|
||||
const choiceElements = Array.isArray(choices)
|
||||
? renderBinaryQuestion(choices as unknown as typeof binaryQuestion)
|
||||
? renderBinaryQuestion((choices as unknown) as typeof binaryQuestion)
|
||||
: renderChildren(choices as Choice)
|
||||
|
||||
return (
|
||||
|
|
|
@ -225,11 +225,9 @@ export const buildVariantTree = <Name extends string>(
|
|||
variant
|
||||
? {
|
||||
canGiveUp,
|
||||
children: (
|
||||
variant.explanation as (ASTNode & {
|
||||
nodeKind: 'reference'
|
||||
})[]
|
||||
).map(({ dottedName }) =>
|
||||
children: (variant.explanation as (ASTNode & {
|
||||
nodeKind: 'reference'
|
||||
})[]).map(({ dottedName }) =>
|
||||
buildVariantTree(engine, dottedName as Name)
|
||||
),
|
||||
}
|
||||
|
|
|
@ -95,10 +95,9 @@ export default function Select({ onChange, value, id, missing }: InputProps) {
|
|||
},
|
||||
[setSearchResults, setLoadingState]
|
||||
)
|
||||
const debouncedHandleSearch = useMemo(
|
||||
() => debounce(300, handleSearch),
|
||||
[handleSearch]
|
||||
)
|
||||
const debouncedHandleSearch = useMemo(() => debounce(300, handleSearch), [
|
||||
handleSearch,
|
||||
])
|
||||
|
||||
const handleSubmit = useCallback(
|
||||
async (commune: Commune) => {
|
||||
|
|
|
@ -51,7 +51,7 @@ export default function Footer() {
|
|||
const hrefLink = hrefLangLink[language][uri] || []
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div className="ui__ print-display-none">
|
||||
<Helmet>
|
||||
{hrefLink.map(({ href, hrefLang }) => (
|
||||
<link
|
||||
|
|
|
@ -30,7 +30,7 @@ export default function NewsBanner() {
|
|||
lastViewedRelease !== lastRelease.name && i18n.language === 'fr'
|
||||
|
||||
return showBanner ? (
|
||||
<div className="ui__ banner news">
|
||||
<div className="ui__ banner news print-display-none">
|
||||
<span>
|
||||
{emoji('✨')} Découvrez les nouveautés {determinant(lastRelease.name)}
|
||||
<Link to={sitePaths.nouveautés}>{lastRelease.name.toLowerCase()}</Link>
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
import { useUrl } from 'Components/ShareSimulationBanner'
|
||||
import React from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
|
||||
export default function ExportRecover() {
|
||||
return (
|
||||
<section className="screen-display-none print-break-avoid">
|
||||
<h2>
|
||||
<Trans i18nKey="pages.simulateurs.print-info.title">
|
||||
Vous souhaitez retrouver cette simulation ?
|
||||
</Trans>
|
||||
</h2>
|
||||
|
||||
<p>
|
||||
<Trans i18nKey="pages.simulateurs.print-info.recover">
|
||||
Retrouvez la, ainsi que d'autres outils d'aide à la création et à la
|
||||
gestion d'entreprise, sur{' '}
|
||||
<a href={useUrl()} target="_blank">
|
||||
mon-entreprise.fr
|
||||
</a>
|
||||
.
|
||||
</Trans>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<Trans i18nKey="pages.simulateurs.print-info.date">
|
||||
Cette simulation a été effectuée le
|
||||
</Trans>{' '}
|
||||
{new Date().toLocaleDateString()}.
|
||||
</p>
|
||||
</section>
|
||||
)
|
||||
}
|
|
@ -20,7 +20,13 @@ import CotisationsRégularisation from './IndépendantCotisationsRégularisation
|
|||
import PLExplanation from './PLExplanation'
|
||||
import { DistributionSection } from './SalaryExplanation'
|
||||
|
||||
export default function IndépendantExplanation() {
|
||||
interface IndépendantExplanationProps {
|
||||
disableAnimation: boolean
|
||||
}
|
||||
|
||||
export default function IndépendantExplanation({
|
||||
disableAnimation,
|
||||
}: IndépendantExplanationProps) {
|
||||
const { t } = useTranslation()
|
||||
const { palettes } = useContext(ThemeColorsContext)
|
||||
|
||||
|
@ -39,6 +45,7 @@ export default function IndépendantExplanation() {
|
|||
<section>
|
||||
<h2>Répartition du revenu</h2>
|
||||
<StackedBarChart
|
||||
disableAnimation={disableAnimation}
|
||||
data={[
|
||||
{
|
||||
dottedName: 'dirigeant . rémunération . nette après impôt',
|
||||
|
@ -96,8 +103,8 @@ export default function IndépendantExplanation() {
|
|||
</ul>
|
||||
</Trans>
|
||||
|
||||
<DistributionSection>
|
||||
<Distribution />
|
||||
<DistributionSection disableAnimation={disableAnimation}>
|
||||
<Distribution disableAnimation={disableAnimation} />
|
||||
</DistributionSection>
|
||||
</>
|
||||
)
|
||||
|
@ -130,20 +137,24 @@ const CotisationsSection: Partial<Record<DottedName, Array<string>>> = {
|
|||
],
|
||||
}
|
||||
|
||||
function Distribution() {
|
||||
interface DistributionProps {
|
||||
disableAnimation: boolean
|
||||
}
|
||||
|
||||
function Distribution({ disableAnimation }: DistributionProps) {
|
||||
const targetUnit = useSelector(targetUnitSelector)
|
||||
const engine = useEngine()
|
||||
const distribution = (
|
||||
Object.entries(CotisationsSection).map(([section, cotisations]) => [
|
||||
section,
|
||||
(cotisations as string[])
|
||||
.map((c) => engine.evaluate({ valeur: c, unité: targetUnit }))
|
||||
.reduce(
|
||||
(acc, evaluation) => acc + ((evaluation?.nodeValue as number) || 0),
|
||||
0
|
||||
),
|
||||
]) as Array<[DottedName, number]>
|
||||
)
|
||||
const distribution = (Object.entries(
|
||||
CotisationsSection
|
||||
).map(([section, cotisations]) => [
|
||||
section,
|
||||
cotisations
|
||||
.map((c) => engine.evaluate({ valeur: c, unité: targetUnit }))
|
||||
.reduce(
|
||||
(acc, evaluation) => acc + ((evaluation?.nodeValue as number) || 0),
|
||||
0
|
||||
),
|
||||
]) as Array<[DottedName, number]>)
|
||||
.filter(([, value]) => value > 0)
|
||||
.sort(([, a], [, b]) => b - a)
|
||||
|
||||
|
@ -158,6 +169,7 @@ function Distribution() {
|
|||
dottedName={sectionName}
|
||||
value={value}
|
||||
maximum={maximum}
|
||||
disableAnimation={disableAnimation}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
|
@ -169,8 +181,8 @@ type DistributionBranchProps = {
|
|||
dottedName: DottedName
|
||||
value: number
|
||||
maximum: number
|
||||
|
||||
icon?: string
|
||||
disableAnimation: boolean
|
||||
}
|
||||
|
||||
function DistributionBranch({
|
||||
|
@ -178,6 +190,7 @@ function DistributionBranch({
|
|||
value,
|
||||
icon,
|
||||
maximum,
|
||||
disableAnimation,
|
||||
}: DistributionBranchProps) {
|
||||
const branche = useEngine().getRule(dottedName)
|
||||
|
||||
|
@ -189,6 +202,7 @@ function DistributionBranch({
|
|||
icon={icon ?? branche.rawNode.icônes}
|
||||
description={branche.rawNode.résumé}
|
||||
unit="€"
|
||||
disableAnimation={disableAnimation}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -92,8 +92,7 @@ function CaisseRetraite() {
|
|||
return (
|
||||
<>
|
||||
{caisses.map((caisse) => {
|
||||
const dottedName =
|
||||
`dirigeant . indépendant . PL . ${caisse}` as DottedName
|
||||
const dottedName = `dirigeant . indépendant . PL . ${caisse}` as DottedName
|
||||
const { description, références } = engine.getRule(dottedName).rawNode
|
||||
return (
|
||||
<Condition expression={dottedName} key={caisse}>
|
||||
|
|
|
@ -9,7 +9,13 @@ import { useContext, useRef } from 'react'
|
|||
import emoji from 'react-easy-emoji'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
|
||||
export default function SalaryExplanation() {
|
||||
interface SalaryExplanationProps {
|
||||
disableAnimation: boolean
|
||||
}
|
||||
|
||||
export default function SalaryExplanation({
|
||||
disableAnimation,
|
||||
}: SalaryExplanationProps) {
|
||||
const payslipRef = useRef<HTMLDivElement>(null)
|
||||
|
||||
if (useInversionFail()) {
|
||||
|
@ -25,9 +31,10 @@ export default function SalaryExplanation() {
|
|||
block: 'start',
|
||||
})
|
||||
}
|
||||
disableAnimation={disableAnimation}
|
||||
/>
|
||||
|
||||
<DistributionSection />
|
||||
<DistributionSection disableAnimation={disableAnimation} />
|
||||
<div ref={payslipRef}>
|
||||
<PaySlipSection />
|
||||
</div>
|
||||
|
@ -56,7 +63,10 @@ export default function SalaryExplanation() {
|
|||
)
|
||||
}
|
||||
|
||||
function RevenueRepartitionSection(props: { onSeePayslip: () => void }) {
|
||||
function RevenueRepartitionSection(props: {
|
||||
onSeePayslip: () => void
|
||||
disableAnimation: boolean
|
||||
}) {
|
||||
const { t } = useTranslation()
|
||||
const { palettes } = useContext(ThemeColorsContext)
|
||||
|
||||
|
@ -78,7 +88,7 @@ function RevenueRepartitionSection(props: { onSeePayslip: () => void }) {
|
|||
</Trans>
|
||||
</h2>
|
||||
<button
|
||||
className="ui__ small simple button"
|
||||
className="ui__ small simple button print-display-none"
|
||||
onClick={props.onSeePayslip}
|
||||
>
|
||||
{emoji('📊')} <Trans>Voir la fiche de paie</Trans>
|
||||
|
@ -101,6 +111,7 @@ function RevenueRepartitionSection(props: { onSeePayslip: () => void }) {
|
|||
color: palettes[1][1],
|
||||
},
|
||||
]}
|
||||
disableAnimation={props.disableAnimation}
|
||||
/>
|
||||
</section>
|
||||
)
|
||||
|
@ -108,7 +119,7 @@ function RevenueRepartitionSection(props: { onSeePayslip: () => void }) {
|
|||
|
||||
function PaySlipSection() {
|
||||
return (
|
||||
<section>
|
||||
<section className="ui__ print-break-avoid">
|
||||
<h2>
|
||||
<Trans>Fiche de paie</Trans>
|
||||
</h2>
|
||||
|
@ -118,11 +129,13 @@ function PaySlipSection() {
|
|||
}
|
||||
|
||||
export const DistributionSection = ({
|
||||
children = <Distribution />,
|
||||
disableAnimation,
|
||||
children = <Distribution disableAnimation={disableAnimation} />,
|
||||
}: {
|
||||
disableAnimation: boolean
|
||||
children?: React.ReactNode
|
||||
}) => (
|
||||
<section>
|
||||
<section className="ui__ print-break-avoid">
|
||||
<h2>
|
||||
<Trans>À quoi servent mes cotisations ?</Trans>
|
||||
</h2>
|
||||
|
|
|
@ -3,24 +3,34 @@ import { useContext } from 'react'
|
|||
|
||||
export const icons = {
|
||||
facebook: {
|
||||
icon: 'M34.1,47V33.3h4.6l0.7-5.3h-5.3v-3.4c0-1.5,0.4-2.6,2.6-2.6l2.8,0v-4.8c-0.5-0.1-2.2-0.2-4.1-0.2 c-4.1,0-6.9,2.5-6.9,7V28H24v5.3h4.6V47H34.1z',
|
||||
mask: 'M0,0v64h64V0H0z M39.6,22l-2.8,0c-2.2,0-2.6,1.1-2.6,2.6V28h5.3l-0.7,5.3h-4.6V47h-5.5V33.3H24V28h4.6V24 c0-4.6,2.8-7,6.9-7c2,0,3.6,0.1,4.1,0.2V22z',
|
||||
icon:
|
||||
'M34.1,47V33.3h4.6l0.7-5.3h-5.3v-3.4c0-1.5,0.4-2.6,2.6-2.6l2.8,0v-4.8c-0.5-0.1-2.2-0.2-4.1-0.2 c-4.1,0-6.9,2.5-6.9,7V28H24v5.3h4.6V47H34.1z',
|
||||
mask:
|
||||
'M0,0v64h64V0H0z M39.6,22l-2.8,0c-2.2,0-2.6,1.1-2.6,2.6V28h5.3l-0.7,5.3h-4.6V47h-5.5V33.3H24V28h4.6V24 c0-4.6,2.8-7,6.9-7c2,0,3.6,0.1,4.1,0.2V22z',
|
||||
},
|
||||
twitter: {
|
||||
icon: 'M48,22.1c-1.2,0.5-2.4,0.9-3.8,1c1.4-0.8,2.4-2.1,2.9-3.6c-1.3,0.8-2.7,1.3-4.2,1.6 C41.7,19.8,40,19,38.2,19c-3.6,0-6.6,2.9-6.6,6.6c0,0.5,0.1,1,0.2,1.5c-5.5-0.3-10.3-2.9-13.5-6.9c-0.6,1-0.9,2.1-0.9,3.3 c0,2.3,1.2,4.3,2.9,5.5c-1.1,0-2.1-0.3-3-0.8c0,0,0,0.1,0,0.1c0,3.2,2.3,5.8,5.3,6.4c-0.6,0.1-1.1,0.2-1.7,0.2c-0.4,0-0.8,0-1.2-0.1 c0.8,2.6,3.3,4.5,6.1,4.6c-2.2,1.8-5.1,2.8-8.2,2.8c-0.5,0-1.1,0-1.6-0.1c2.9,1.9,6.4,2.9,10.1,2.9c12.1,0,18.7-10,18.7-18.7 c0-0.3,0-0.6,0-0.8C46,24.5,47.1,23.4,48,22.1z',
|
||||
mask: 'M0,0v64h64V0H0z M44.7,25.5c0,0.3,0,0.6,0,0.8C44.7,35,38.1,45,26.1,45c-3.7,0-7.2-1.1-10.1-2.9 c0.5,0.1,1,0.1,1.6,0.1c3.1,0,5.9-1,8.2-2.8c-2.9-0.1-5.3-2-6.1-4.6c0.4,0.1,0.8,0.1,1.2,0.1c0.6,0,1.2-0.1,1.7-0.2 c-3-0.6-5.3-3.3-5.3-6.4c0,0,0-0.1,0-0.1c0.9,0.5,1.9,0.8,3,0.8c-1.8-1.2-2.9-3.2-2.9-5.5c0-1.2,0.3-2.3,0.9-3.3 c3.2,4,8.1,6.6,13.5,6.9c-0.1-0.5-0.2-1-0.2-1.5c0-3.6,2.9-6.6,6.6-6.6c1.9,0,3.6,0.8,4.8,2.1c1.5-0.3,2.9-0.8,4.2-1.6 c-0.5,1.5-1.5,2.8-2.9,3.6c1.3-0.2,2.6-0.5,3.8-1C47.1,23.4,46,24.5,44.7,25.5z',
|
||||
icon:
|
||||
'M48,22.1c-1.2,0.5-2.4,0.9-3.8,1c1.4-0.8,2.4-2.1,2.9-3.6c-1.3,0.8-2.7,1.3-4.2,1.6 C41.7,19.8,40,19,38.2,19c-3.6,0-6.6,2.9-6.6,6.6c0,0.5,0.1,1,0.2,1.5c-5.5-0.3-10.3-2.9-13.5-6.9c-0.6,1-0.9,2.1-0.9,3.3 c0,2.3,1.2,4.3,2.9,5.5c-1.1,0-2.1-0.3-3-0.8c0,0,0,0.1,0,0.1c0,3.2,2.3,5.8,5.3,6.4c-0.6,0.1-1.1,0.2-1.7,0.2c-0.4,0-0.8,0-1.2-0.1 c0.8,2.6,3.3,4.5,6.1,4.6c-2.2,1.8-5.1,2.8-8.2,2.8c-0.5,0-1.1,0-1.6-0.1c2.9,1.9,6.4,2.9,10.1,2.9c12.1,0,18.7-10,18.7-18.7 c0-0.3,0-0.6,0-0.8C46,24.5,47.1,23.4,48,22.1z',
|
||||
mask:
|
||||
'M0,0v64h64V0H0z M44.7,25.5c0,0.3,0,0.6,0,0.8C44.7,35,38.1,45,26.1,45c-3.7,0-7.2-1.1-10.1-2.9 c0.5,0.1,1,0.1,1.6,0.1c3.1,0,5.9-1,8.2-2.8c-2.9-0.1-5.3-2-6.1-4.6c0.4,0.1,0.8,0.1,1.2,0.1c0.6,0,1.2-0.1,1.7-0.2 c-3-0.6-5.3-3.3-5.3-6.4c0,0,0-0.1,0-0.1c0.9,0.5,1.9,0.8,3,0.8c-1.8-1.2-2.9-3.2-2.9-5.5c0-1.2,0.3-2.3,0.9-3.3 c3.2,4,8.1,6.6,13.5,6.9c-0.1-0.5-0.2-1-0.2-1.5c0-3.6,2.9-6.6,6.6-6.6c1.9,0,3.6,0.8,4.8,2.1c1.5-0.3,2.9-0.8,4.2-1.6 c-0.5,1.5-1.5,2.8-2.9,3.6c1.3-0.2,2.6-0.5,3.8-1C47.1,23.4,46,24.5,44.7,25.5z',
|
||||
},
|
||||
linkedin: {
|
||||
icon: 'M20.4,44h5.4V26.6h-5.4V44z M23.1,18c-1.7,0-3.1,1.4-3.1,3.1c0,1.7,1.4,3.1,3.1,3.1 c1.7,0,3.1-1.4,3.1-3.1C26.2,19.4,24.8,18,23.1,18z M39.5,26.2c-2.6,0-4.4,1.4-5.1,2.8h-0.1v-2.4h-5.2V44h5.4v-8.6 c0-2.3,0.4-4.5,3.2-4.5c2.8,0,2.8,2.6,2.8,4.6V44H46v-9.5C46,29.8,45,26.2,39.5,26.2z',
|
||||
mask: 'M0,0v64h64V0H0z M25.8,44h-5.4V26.6h5.4V44z M23.1,24.3c-1.7,0-3.1-1.4-3.1-3.1c0-1.7,1.4-3.1,3.1-3.1 c1.7,0,3.1,1.4,3.1,3.1C26.2,22.9,24.8,24.3,23.1,24.3z M46,44h-5.4v-8.4c0-2,0-4.6-2.8-4.6c-2.8,0-3.2,2.2-3.2,4.5V44h-5.4V26.6 h5.2V29h0.1c0.7-1.4,2.5-2.8,5.1-2.8c5.5,0,6.5,3.6,6.5,8.3V44z',
|
||||
icon:
|
||||
'M20.4,44h5.4V26.6h-5.4V44z M23.1,18c-1.7,0-3.1,1.4-3.1,3.1c0,1.7,1.4,3.1,3.1,3.1 c1.7,0,3.1-1.4,3.1-3.1C26.2,19.4,24.8,18,23.1,18z M39.5,26.2c-2.6,0-4.4,1.4-5.1,2.8h-0.1v-2.4h-5.2V44h5.4v-8.6 c0-2.3,0.4-4.5,3.2-4.5c2.8,0,2.8,2.6,2.8,4.6V44H46v-9.5C46,29.8,45,26.2,39.5,26.2z',
|
||||
mask:
|
||||
'M0,0v64h64V0H0z M25.8,44h-5.4V26.6h5.4V44z M23.1,24.3c-1.7,0-3.1-1.4-3.1-3.1c0-1.7,1.4-3.1,3.1-3.1 c1.7,0,3.1,1.4,3.1,3.1C26.2,22.9,24.8,24.3,23.1,24.3z M46,44h-5.4v-8.4c0-2,0-4.6-2.8-4.6c-2.8,0-3.2,2.2-3.2,4.5V44h-5.4V26.6 h5.2V29h0.1c0.7-1.4,2.5-2.8,5.1-2.8c5.5,0,6.5,3.6,6.5,8.3V44z',
|
||||
},
|
||||
github: {
|
||||
icon: 'M32,16c-8.8,0-16,7.2-16,16c0,7.1,4.6,13.1,10.9,15.2 c0.8,0.1,1.1-0.3,1.1-0.8c0-0.4,0-1.4,0-2.7c-4.5,1-5.4-2.1-5.4-2.1c-0.7-1.8-1.8-2.3-1.8-2.3c-1.5-1,0.1-1,0.1-1 c1.6,0.1,2.5,1.6,2.5,1.6c1.4,2.4,3.7,1.7,4.7,1.3c0.1-1,0.6-1.7,1-2.1c-3.6-0.4-7.3-1.8-7.3-7.9c0-1.7,0.6-3.2,1.6-4.3 c-0.2-0.4-0.7-2,0.2-4.2c0,0,1.3-0.4,4.4,1.6c1.3-0.4,2.6-0.5,4-0.5c1.4,0,2.7,0.2,4,0.5c3.1-2.1,4.4-1.6,4.4-1.6 c0.9,2.2,0.3,3.8,0.2,4.2c1,1.1,1.6,2.5,1.6,4.3c0,6.1-3.7,7.5-7.3,7.9c0.6,0.5,1.1,1.5,1.1,3c0,2.1,0,3.9,0,4.4 c0,0.4,0.3,0.9,1.1,0.8C43.4,45.1,48,39.1,48,32C48,23.2,40.8,16,32,16z',
|
||||
mask: 'M0,0v64h64V0H0z M37.1,47.2c-0.8,0.2-1.1-0.3-1.1-0.8c0-0.5,0-2.3,0-4.4c0-1.5-0.5-2.5-1.1-3 c3.6-0.4,7.3-1.7,7.3-7.9c0-1.7-0.6-3.2-1.6-4.3c0.2-0.4,0.7-2-0.2-4.2c0,0-1.3-0.4-4.4,1.6c-1.3-0.4-2.6-0.5-4-0.5 c-1.4,0-2.7,0.2-4,0.5c-3.1-2.1-4.4-1.6-4.4-1.6c-0.9,2.2-0.3,3.8-0.2,4.2c-1,1.1-1.6,2.5-1.6,4.3c0,6.1,3.7,7.5,7.3,7.9 c-0.5,0.4-0.9,1.1-1,2.1c-0.9,0.4-3.2,1.1-4.7-1.3c0,0-0.8-1.5-2.5-1.6c0,0-1.6,0-0.1,1c0,0,1,0.5,1.8,2.3c0,0,0.9,3.1,5.4,2.1 c0,1.3,0,2.3,0,2.7c0,0.4-0.3,0.9-1.1,0.8C20.6,45.1,16,39.1,16,32c0-8.8,7.2-16,16-16c8.8,0,16,7.2,16,16 C48,39.1,43.4,45.1,37.1,47.2z',
|
||||
icon:
|
||||
'M32,16c-8.8,0-16,7.2-16,16c0,7.1,4.6,13.1,10.9,15.2 c0.8,0.1,1.1-0.3,1.1-0.8c0-0.4,0-1.4,0-2.7c-4.5,1-5.4-2.1-5.4-2.1c-0.7-1.8-1.8-2.3-1.8-2.3c-1.5-1,0.1-1,0.1-1 c1.6,0.1,2.5,1.6,2.5,1.6c1.4,2.4,3.7,1.7,4.7,1.3c0.1-1,0.6-1.7,1-2.1c-3.6-0.4-7.3-1.8-7.3-7.9c0-1.7,0.6-3.2,1.6-4.3 c-0.2-0.4-0.7-2,0.2-4.2c0,0,1.3-0.4,4.4,1.6c1.3-0.4,2.6-0.5,4-0.5c1.4,0,2.7,0.2,4,0.5c3.1-2.1,4.4-1.6,4.4-1.6 c0.9,2.2,0.3,3.8,0.2,4.2c1,1.1,1.6,2.5,1.6,4.3c0,6.1-3.7,7.5-7.3,7.9c0.6,0.5,1.1,1.5,1.1,3c0,2.1,0,3.9,0,4.4 c0,0.4,0.3,0.9,1.1,0.8C43.4,45.1,48,39.1,48,32C48,23.2,40.8,16,32,16z',
|
||||
mask:
|
||||
'M0,0v64h64V0H0z M37.1,47.2c-0.8,0.2-1.1-0.3-1.1-0.8c0-0.5,0-2.3,0-4.4c0-1.5-0.5-2.5-1.1-3 c3.6-0.4,7.3-1.7,7.3-7.9c0-1.7-0.6-3.2-1.6-4.3c0.2-0.4,0.7-2-0.2-4.2c0,0-1.3-0.4-4.4,1.6c-1.3-0.4-2.6-0.5-4-0.5 c-1.4,0-2.7,0.2-4,0.5c-3.1-2.1-4.4-1.6-4.4-1.6c-0.9,2.2-0.3,3.8-0.2,4.2c-1,1.1-1.6,2.5-1.6,4.3c0,6.1,3.7,7.5,7.3,7.9 c-0.5,0.4-0.9,1.1-1,2.1c-0.9,0.4-3.2,1.1-4.7-1.3c0,0-0.8-1.5-2.5-1.6c0,0-1.6,0-0.1,1c0,0,1,0.5,1.8,2.3c0,0,0.9,3.1,5.4,2.1 c0,1.3,0,2.3,0,2.7c0,0.4-0.3,0.9-1.1,0.8C20.6,45.1,16,39.1,16,32c0-8.8,7.2-16,16-16c8.8,0,16,7.2,16,16 C48,39.1,43.4,45.1,37.1,47.2z',
|
||||
},
|
||||
email: {
|
||||
icon: 'M17,22v20h30V22H17z M41.1,25L32,32.1L22.9,25H41.1z M20,39V26.6l12,9.3l12-9.3V39H20z',
|
||||
mask: 'M41.1,25H22.9l9.1,7.1L41.1,25z M44,26.6l-12,9.3l-12-9.3V39h24V26.6z M0,0v64h64V0H0z M47,42H17V22h30V42z',
|
||||
icon:
|
||||
'M17,22v20h30V22H17z M41.1,25L32,32.1L22.9,25H41.1z M20,39V26.6l12,9.3l12-9.3V39H20z',
|
||||
mask:
|
||||
'M41.1,25H22.9l9.1,7.1L41.1,25z M44,26.6l-12,9.3l-12-9.3V39h24V26.6z M0,0v64h64V0H0z M47,42H17V22h30V42z',
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ export default function Warning({ localStorageKey, children }: WarningProps) {
|
|||
margin-bottom: 1rem;
|
||||
`}
|
||||
>
|
||||
<p>
|
||||
<p className={folded ? 'ui__ print-display-none' : ''}>
|
||||
{emoji('🚩 ')}
|
||||
<strong>
|
||||
<Trans i18nKey="simulateurs.warning.titre">
|
||||
|
@ -40,7 +40,7 @@ export default function Warning({ localStorageKey, children }: WarningProps) {
|
|||
css="padding-top: 1rem; padding-bottom: 0.4rem"
|
||||
>
|
||||
{children}
|
||||
<div className="ui__ answer-group">
|
||||
<div className="ui__ answer-group print-display-none">
|
||||
<button
|
||||
className="ui__ button simple small"
|
||||
onClick={() => fold(true)}
|
||||
|
|
|
@ -33,21 +33,19 @@ export const fromBottom = ({
|
|||
to={{ opacity: 1, y: 0 }}
|
||||
items={children}
|
||||
>
|
||||
{(item) =>
|
||||
({ y, ...style }) =>
|
||||
(
|
||||
<animated.div
|
||||
style={{
|
||||
transform: interpolate([y], (y) =>
|
||||
y !== 0 ? `translate3d(0, ${y}px,0)` : 'none'
|
||||
),
|
||||
...style,
|
||||
...inheritedStyle,
|
||||
}}
|
||||
>
|
||||
{item}
|
||||
</animated.div>
|
||||
)}
|
||||
{(item) => ({ y, ...style }) => (
|
||||
<animated.div
|
||||
style={{
|
||||
transform: interpolate([y], (y) =>
|
||||
y !== 0 ? `translate3d(0, ${y}px,0)` : 'none'
|
||||
),
|
||||
...style,
|
||||
...inheritedStyle,
|
||||
}}
|
||||
>
|
||||
{item}
|
||||
</animated.div>
|
||||
)}
|
||||
</Trail>
|
||||
)
|
||||
export const fromTop = ({
|
||||
|
@ -65,21 +63,19 @@ export const fromTop = ({
|
|||
to={{ opacity: 1, y: 0 }}
|
||||
items={children}
|
||||
>
|
||||
{(item) =>
|
||||
({ y, ...style }) =>
|
||||
(
|
||||
<animated.div
|
||||
style={{
|
||||
transform: interpolate([y], (y) =>
|
||||
y !== 0 ? `translate3d(0, ${y}px,0)` : 'none'
|
||||
),
|
||||
...style,
|
||||
...inheritedStyle,
|
||||
}}
|
||||
>
|
||||
{item}
|
||||
</animated.div>
|
||||
)}
|
||||
{(item) => ({ y, ...style }) => (
|
||||
<animated.div
|
||||
style={{
|
||||
transform: interpolate([y], (y) =>
|
||||
y !== 0 ? `translate3d(0, ${y}px,0)` : 'none'
|
||||
),
|
||||
...style,
|
||||
...inheritedStyle,
|
||||
}}
|
||||
>
|
||||
{item}
|
||||
</animated.div>
|
||||
)}
|
||||
</Trail>
|
||||
)
|
||||
|
||||
|
|
|
@ -208,3 +208,29 @@ input.ui__::placeholder {
|
|||
opacity: 0.6;
|
||||
color: grey;
|
||||
}
|
||||
@media screen {
|
||||
.screen-display-none {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media print {
|
||||
.ui__ print-display-none {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.print-break-avoid {
|
||||
page-break-inside: avoid;
|
||||
break-inside: avoid;
|
||||
}
|
||||
|
||||
.print-background-force {
|
||||
color-adjust: exact !important;
|
||||
-webkit-print-color-adjust: exact !important;
|
||||
print-color-adjust: exact !important;
|
||||
}
|
||||
|
||||
.ui__.toggle input[type='radio']:checked ~ * {
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -115,12 +115,10 @@ export const cleanSearchParams = (
|
|||
export const getRulesParamNames = (
|
||||
parsedRules: ParsedRules<DottedName>
|
||||
): [DottedName, ParamName][] =>
|
||||
(
|
||||
Object.entries(parsedRules) as [
|
||||
DottedName,
|
||||
{ rawNode: { 'identifiant court'?: ShortName } }
|
||||
][]
|
||||
).map(([dottedName, ruleNode]) => [
|
||||
(Object.entries(parsedRules) as [
|
||||
DottedName,
|
||||
{ rawNode: { 'identifiant court'?: ShortName } }
|
||||
][]).map(([dottedName, ruleNode]) => [
|
||||
dottedName,
|
||||
ruleNode.rawNode['identifiant court'] || dottedName,
|
||||
])
|
||||
|
|
|
@ -41,15 +41,17 @@ export const attributesToTranslate = [
|
|||
'identifiant court',
|
||||
]
|
||||
|
||||
const translateProp =
|
||||
(lang: string, translation: Translation) => (rule: Rule, prop: string) => {
|
||||
if (prop === 'suggestions' && rule?.suggestions) {
|
||||
return translateSuggestion(prop, rule, translation, lang)
|
||||
}
|
||||
let propTrans = translation[prop + '.' + lang]
|
||||
propTrans = propTrans?.replace(/^\[automatic\] /, '')
|
||||
return propTrans ? assoc(prop, propTrans, rule) : rule
|
||||
const translateProp = (lang: string, translation: Translation) => (
|
||||
rule: Rule,
|
||||
prop: string
|
||||
) => {
|
||||
if (prop === 'suggestions' && rule?.suggestions) {
|
||||
return translateSuggestion(prop, rule, translation, lang)
|
||||
}
|
||||
let propTrans = translation[prop + '.' + lang]
|
||||
propTrans = propTrans?.replace(/^\[automatic\] /, '')
|
||||
return propTrans ? assoc(prop, propTrans, rule) : rule
|
||||
}
|
||||
|
||||
function translateRule<Names extends string>(
|
||||
lang: string,
|
||||
|
|
|
@ -71,6 +71,8 @@ Exemples: Examples
|
|||
Exemples de simulation de salaire: Examples of salary simulations
|
||||
Exonérations: Exemptions
|
||||
Explorez notre documentation: Explore our documentation
|
||||
ExportSimulation:
|
||||
Banner: "To save this simulation: <2>Print or export as PDF</2>"
|
||||
Faire une simulation: Launch a simulation
|
||||
Fiche de paie: Payslip
|
||||
Gestion des données personnelles: Management of personal data
|
||||
|
@ -1354,6 +1356,10 @@ pages:
|
|||
title: PAMC diet simulators
|
||||
shortname: PAMC
|
||||
title: "PAMC: contribution and income simulators"
|
||||
print-info:
|
||||
recover: Find it, as well as other tools to help create and manage a business on <2>mycompanyinfrance.fr</2>
|
||||
date: This simulation was performed on
|
||||
title: Would you like to recover this simulation?
|
||||
profession-libérale:
|
||||
meta:
|
||||
description: Net Income Calculation for Self-Employed Persons in Liberal Income
|
||||
|
|
|
@ -24,6 +24,8 @@ En savoir plus: En savoir plus
|
|||
Entreprise Individuelle: Entreprise Individuelle
|
||||
Exonérations: Exonérations
|
||||
Explorez notre documentation: Explorez notre documentation
|
||||
ExportSimulation:
|
||||
Banner: "Pour conserver cette simulation : <2>Imprimer ou sauvegarder en PDF</2>"
|
||||
Fiche de paie: Fiche de paie
|
||||
Gestion des données personnelles: Gestion des données personnelles
|
||||
Gérant majoritaire: Gérant majoritaire
|
||||
|
@ -1006,6 +1008,10 @@ pages:
|
|||
title: Simulateurs régime PAMC
|
||||
shortname: PAMC
|
||||
title: "PAMC : simulateurs de cotisations et de revenu"
|
||||
print-info:
|
||||
recover: Retrouvez la, ainsi que d'autres outils d'aide à la création et à la gestion d'entreprise, sur <2>mon-entreprise.fr</2>
|
||||
date: Cette simulation a été effectuée le
|
||||
title: Vous souhaitez retrouver cette simulation ?
|
||||
profession-libérale:
|
||||
meta:
|
||||
description: Calcul du revenu net pour les indépendants en libéral à l'impôt sur
|
||||
|
|
|
@ -45,12 +45,10 @@ export default function ResultatsSimples() {
|
|||
Vous pouvez reporter les montants suivants dans votre déclaration,
|
||||
calculés à partir des informations saisies.
|
||||
</p>
|
||||
{(
|
||||
[
|
||||
'aide déclaration revenu indépendant 2020 . résultat simple . cotisations obligatoires',
|
||||
'aide déclaration revenu indépendant 2020 . résultat simple . total charges sociales déductible',
|
||||
] as const
|
||||
).map((dottedName) => {
|
||||
{([
|
||||
'aide déclaration revenu indépendant 2020 . résultat simple . cotisations obligatoires',
|
||||
'aide déclaration revenu indépendant 2020 . résultat simple . total charges sociales déductible',
|
||||
] as const).map((dottedName) => {
|
||||
const r = engine.getRule(dottedName)
|
||||
if (engine.evaluate(dottedName).nodeValue === false) {
|
||||
return null
|
||||
|
@ -116,15 +114,13 @@ export default function ResultatsSimples() {
|
|||
grid-template-columns: repeat(3, auto);
|
||||
`}
|
||||
>
|
||||
{(
|
||||
[
|
||||
'aide déclaration revenu indépendant 2020 . réduction covid . total',
|
||||
'aide déclaration revenu indépendant 2020 . résultat simple . revenu net fiscal',
|
||||
'aide déclaration revenu indépendant 2020 . résultat simple . CSG déductible',
|
||||
'aide déclaration revenu indépendant 2020 . résultat simple . CFP',
|
||||
'aide déclaration revenu indépendant 2020 . résultat simple . assiette sociale',
|
||||
] as const
|
||||
).map((dottedName) => {
|
||||
{([
|
||||
'aide déclaration revenu indépendant 2020 . réduction covid . total',
|
||||
'aide déclaration revenu indépendant 2020 . résultat simple . revenu net fiscal',
|
||||
'aide déclaration revenu indépendant 2020 . résultat simple . CSG déductible',
|
||||
'aide déclaration revenu indépendant 2020 . résultat simple . CFP',
|
||||
'aide déclaration revenu indépendant 2020 . résultat simple . assiette sociale',
|
||||
] as const).map((dottedName) => {
|
||||
const r = engine.getRule(dottedName)
|
||||
if (engine.evaluate(dottedName).nodeValue === false) {
|
||||
return null
|
||||
|
|
|
@ -46,15 +46,13 @@ export default function ResultatsParFormulaire() {
|
|||
déclaration correcte.{' '}
|
||||
</p>
|
||||
<p>En cas de doute, référez-vous à votre expert comptable.</p>
|
||||
{(
|
||||
[
|
||||
'aide déclaration revenu indépendant 2020 . formulaire 2035',
|
||||
'aide déclaration revenu indépendant 2020 . formulaire 2033',
|
||||
'aide déclaration revenu indépendant 2020 . formulaire 2050',
|
||||
'aide déclaration revenu indépendant 2020 . formulaire 2042',
|
||||
'aide déclaration revenu indépendant 2020 . formulaire 2042 PRO C',
|
||||
] as const
|
||||
).map((dottedName) => (
|
||||
{([
|
||||
'aide déclaration revenu indépendant 2020 . formulaire 2035',
|
||||
'aide déclaration revenu indépendant 2020 . formulaire 2033',
|
||||
'aide déclaration revenu indépendant 2020 . formulaire 2050',
|
||||
'aide déclaration revenu indépendant 2020 . formulaire 2042',
|
||||
'aide déclaration revenu indépendant 2020 . formulaire 2042 PRO C',
|
||||
] as const).map((dottedName) => (
|
||||
<DeclarationForm key={dottedName} dottedName={dottedName} />
|
||||
))}
|
||||
<Condition expression="aide déclaration revenu indépendant 2020 . informations résultat par formulaire">
|
||||
|
|
|
@ -32,8 +32,9 @@ import illustration from './undraw_fill_in_mie5.svg'
|
|||
*
|
||||
* Le but est de faire valider la version plus complète pour la déclaration de revenu 2021.
|
||||
*/
|
||||
const FEATURE_FLAG_RESULTATS_COMPLETS =
|
||||
document.location.search.includes('next')
|
||||
const FEATURE_FLAG_RESULTATS_COMPLETS = document.location.search.includes(
|
||||
'next'
|
||||
)
|
||||
|
||||
export default function AideDéclarationIndépendant() {
|
||||
useSimulationConfig(simulationConfig)
|
||||
|
|
|
@ -34,12 +34,10 @@ export default function FieldsPDF({ fields }: FieldsPDFProps) {
|
|||
{formatValue(engine.evaluate(dottedName)) +
|
||||
(API === 'commune'
|
||||
? ` (${
|
||||
(
|
||||
engine.evaluate(dottedName).nodeValue as Record<
|
||||
string,
|
||||
unknown
|
||||
>
|
||||
)?.codePostal as string
|
||||
(engine.evaluate(dottedName).nodeValue as Record<
|
||||
string,
|
||||
unknown
|
||||
>)?.codePostal as string
|
||||
})`
|
||||
: '')}{' '}
|
||||
</Text>
|
||||
|
|
|
@ -222,15 +222,15 @@ activité transfrontalière simultanée . activité salariée . profession:
|
|||
activité transfrontalière simultanée . activité salariée . période:
|
||||
type: groupe
|
||||
formule: oui
|
||||
activité transfrontalière simultanée . activité salariée . période . date de début du contrat:
|
||||
? activité transfrontalière simultanée . activité salariée . période . date de début du contrat
|
||||
: type: date
|
||||
? activité transfrontalière simultanée . activité salariée . période . date de fin connue
|
||||
: question: Votre contrat salarié a-t'il une date de fin ?
|
||||
? activité transfrontalière simultanée . activité salariée . période . date de fin
|
||||
: applicable si: date de fin connue
|
||||
type: date
|
||||
activité transfrontalière simultanée . activité salariée . période . date de fin connue:
|
||||
question: Votre contrat salarié a-t'il une date de fin ?
|
||||
activité transfrontalière simultanée . activité salariée . période . date de fin:
|
||||
applicable si: date de fin connue
|
||||
type: date
|
||||
activité transfrontalière simultanée . activité salariée . période . vérification:
|
||||
titre: Date d'activité salariée non valides
|
||||
? activité transfrontalière simultanée . activité salariée . période . vérification
|
||||
: titre: Date d'activité salariée non valides
|
||||
formule: date de début du contrat > date de fin
|
||||
type: notification
|
||||
description: La date de fin du contrat ne peut être antérieure à la date de début
|
||||
|
@ -246,32 +246,32 @@ activité transfrontalière simultanée . activité salariée . employeur . adre
|
|||
type: texte
|
||||
activité transfrontalière simultanée . activité salariée . employeur . ville:
|
||||
type: texte
|
||||
activité transfrontalière simultanée . activité salariée . employeur . code postal:
|
||||
type: texte
|
||||
? activité transfrontalière simultanée . activité salariée . employeur . code postal
|
||||
: type: texte
|
||||
|
||||
activité transfrontalière simultanée . activité salariée . lieu d'exercice:
|
||||
titre: Lieu effectif d'activité
|
||||
type: groupe
|
||||
formule: oui
|
||||
|
||||
activité transfrontalière simultanée . activité salariée . lieu d'exercice . employeur:
|
||||
question: Exercerez-vous effectivement cette activité salariée dans le pays de votre employeur ?
|
||||
? activité transfrontalière simultanée . activité salariée . lieu d'exercice . employeur
|
||||
: question: Exercerez-vous effectivement cette activité salariée dans le pays de votre employeur ?
|
||||
description: Votre activité salariée peut-être exercé depuis un autre pays que celui de l'employeur par exemple en cas de télétravail.
|
||||
|
||||
activité transfrontalière simultanée . activité salariée . lieu d'exercice . lieu de résidence:
|
||||
question: Exercerez-vous cette activité salariée dans votre pays de résidence ?
|
||||
? activité transfrontalière simultanée . activité salariée . lieu d'exercice . lieu de résidence
|
||||
: question: Exercerez-vous cette activité salariée dans votre pays de résidence ?
|
||||
non applicable si: employeur
|
||||
|
||||
activité transfrontalière simultanée . activité salariée . lieu d'exercice . pays:
|
||||
non applicable si:
|
||||
? activité transfrontalière simultanée . activité salariée . lieu d'exercice . pays
|
||||
: non applicable si:
|
||||
une de ces conditions:
|
||||
- lieu de résidence
|
||||
- employeur
|
||||
question: Quel sera le pays dans lequel vous exercerez cette activité salariée ?
|
||||
API: pays européen
|
||||
|
||||
activité transfrontalière simultanée . activité salariée . lieu d'exercice . pays . autre:
|
||||
applicable si: pays = 'Autre'
|
||||
? activité transfrontalière simultanée . activité salariée . lieu d'exercice . pays . autre
|
||||
: applicable si: pays = 'Autre'
|
||||
titre: Nom du pays
|
||||
type: texte
|
||||
|
||||
|
@ -280,12 +280,12 @@ activité transfrontalière simultanée . activité salariée . revenus:
|
|||
type: groupe
|
||||
formule: oui
|
||||
|
||||
activité transfrontalière simultanée . activité salariée . revenus . taux horaire:
|
||||
type: texte
|
||||
? activité transfrontalière simultanée . activité salariée . revenus . taux horaire
|
||||
: type: texte
|
||||
question: Quel est le taux horaire brut (dans la monnaie du pays d'accueil) ?
|
||||
|
||||
activité transfrontalière simultanée . activité salariée . revenus . nombre d'heures:
|
||||
type: nombre
|
||||
? activité transfrontalière simultanée . activité salariée . revenus . nombre d'heures
|
||||
: type: nombre
|
||||
unité: heures/semaine
|
||||
question: Quel est le temps de travail hebdomadaire inscrit au contrat de travail ?
|
||||
|
||||
|
@ -294,16 +294,16 @@ activité transfrontalière simultanée . activité salariée . revenus . revenu
|
|||
type: nombre
|
||||
unité: €/an
|
||||
|
||||
activité transfrontalière simultanée . activité salariée . revenus . activité substantielle:
|
||||
question: >
|
||||
? activité transfrontalière simultanée . activité salariée . revenus . activité substantielle
|
||||
: question: >
|
||||
Considérez-vous que votre activité salariée représentera plus de 5% de votre activité professionnelle pour les 12 prochains mois ?
|
||||
|
||||
activité transfrontalière simultanée . activité salariée . revenus . articulation activité indépendante:
|
||||
question: Comment votre activité salariée s'articulera-t-elle avec votre activité indépendante au cours des 12 prochains mois (périodes, revenu, etc.) ?
|
||||
? activité transfrontalière simultanée . activité salariée . revenus . articulation activité indépendante
|
||||
: question: Comment votre activité salariée s'articulera-t-elle avec votre activité indépendante au cours des 12 prochains mois (périodes, revenu, etc.) ?
|
||||
type: paragraphe
|
||||
|
||||
activité transfrontalière simultanée . activité salariée . activité indépendante additionnelle:
|
||||
question: >
|
||||
? activité transfrontalière simultanée . activité salariée . activité indépendante additionnelle
|
||||
: question: >
|
||||
Exercez-vous également une activité non salariée à l'étranger ?
|
||||
|
||||
activité transfrontalière simultanée . part substantielle France:
|
||||
|
@ -336,21 +336,21 @@ activité transfrontalière simultanée . activité non salariée . n°1:
|
|||
formule: oui
|
||||
activité transfrontalière simultanée . activité non salariée . n°1 . pays:
|
||||
API: pays européen
|
||||
activité transfrontalière simultanée . activité non salariée . n°1 . pays . autre:
|
||||
applicable si: pays = 'Autre'
|
||||
? activité transfrontalière simultanée . activité non salariée . n°1 . pays . autre
|
||||
: applicable si: pays = 'Autre'
|
||||
titre: Nom du pays
|
||||
type: texte
|
||||
|
||||
activité transfrontalière simultanée . activité non salariée . n°1 . nom de l'entreprise:
|
||||
type: texte
|
||||
? activité transfrontalière simultanée . activité non salariée . n°1 . nom de l'entreprise
|
||||
: type: texte
|
||||
activité transfrontalière simultanée . activité non salariée . n°1 . adresse:
|
||||
type: texte
|
||||
activité transfrontalière simultanée . activité non salariée . n°1 . ville:
|
||||
type: texte
|
||||
activité transfrontalière simultanée . activité non salariée . n°1 . code postal:
|
||||
type: texte
|
||||
activité transfrontalière simultanée . activité non salariée . n°1 . date de début d'activité:
|
||||
type: date
|
||||
? activité transfrontalière simultanée . activité non salariée . n°1 . code postal
|
||||
: type: texte
|
||||
? activité transfrontalière simultanée . activité non salariée . n°1 . date de début d'activité
|
||||
: type: date
|
||||
|
||||
activité transfrontalière simultanée . activité non salariée . n°2:
|
||||
titre: activité non salarié n°2
|
||||
|
@ -359,20 +359,20 @@ activité transfrontalière simultanée . activité non salariée . n°2:
|
|||
formule: oui
|
||||
activité transfrontalière simultanée . activité non salariée . n°2 . pays:
|
||||
API: pays européen
|
||||
activité transfrontalière simultanée . activité non salariée . n°2 . pays . autre:
|
||||
applicable si: pays = 'Autre'
|
||||
? activité transfrontalière simultanée . activité non salariée . n°2 . pays . autre
|
||||
: applicable si: pays = 'Autre'
|
||||
titre: Nom du pays
|
||||
type: texte
|
||||
activité transfrontalière simultanée . activité non salariée . n°2 . nom de l'entreprise:
|
||||
type: texte
|
||||
? activité transfrontalière simultanée . activité non salariée . n°2 . nom de l'entreprise
|
||||
: type: texte
|
||||
activité transfrontalière simultanée . activité non salariée . n°2 . adresse:
|
||||
type: texte
|
||||
activité transfrontalière simultanée . activité non salariée . n°2 . ville:
|
||||
type: texte
|
||||
activité transfrontalière simultanée . activité non salariée . n°2 . code postal:
|
||||
type: texte
|
||||
activité transfrontalière simultanée . activité non salariée . n°2 . date de début d'activité:
|
||||
type: date
|
||||
? activité transfrontalière simultanée . activité non salariée . n°2 . code postal
|
||||
: type: texte
|
||||
? activité transfrontalière simultanée . activité non salariée . n°2 . date de début d'activité
|
||||
: type: date
|
||||
|
||||
activité transfrontalière simultanée . activité non salariée . n°3:
|
||||
titre: activité non salarié n°3
|
||||
|
@ -381,23 +381,23 @@ activité transfrontalière simultanée . activité non salariée . n°3:
|
|||
formule: oui
|
||||
activité transfrontalière simultanée . activité non salariée . n°3 . pays:
|
||||
API: pays européen
|
||||
activité transfrontalière simultanée . activité non salariée . n°3 . pays . autre:
|
||||
applicable si: pays = 'Autre'
|
||||
? activité transfrontalière simultanée . activité non salariée . n°3 . pays . autre
|
||||
: applicable si: pays = 'Autre'
|
||||
titre: Nom du pays
|
||||
type: texte
|
||||
activité transfrontalière simultanée . activité non salariée . n°3 . nom de l'entreprise:
|
||||
type: texte
|
||||
? activité transfrontalière simultanée . activité non salariée . n°3 . nom de l'entreprise
|
||||
: type: texte
|
||||
activité transfrontalière simultanée . activité non salariée . n°3 . adresse:
|
||||
type: texte
|
||||
activité transfrontalière simultanée . activité non salariée . n°3 . ville:
|
||||
type: texte
|
||||
activité transfrontalière simultanée . activité non salariée . n°3 . code postal:
|
||||
type: texte
|
||||
activité transfrontalière simultanée . activité non salariée . n°3 . date de début d'activité:
|
||||
type: date
|
||||
? activité transfrontalière simultanée . activité non salariée . n°3 . code postal
|
||||
: type: texte
|
||||
? activité transfrontalière simultanée . activité non salariée . n°3 . date de début d'activité
|
||||
: type: date
|
||||
|
||||
activité transfrontalière simultanée . activité non salariée . pays centre d'intérêt:
|
||||
type: groupe
|
||||
? activité transfrontalière simultanée . activité non salariée . pays centre d'intérêt
|
||||
: type: groupe
|
||||
formule: oui
|
||||
titre: Quel sera votre pays "centre d'intêret" pour les 12 prochains mois ?
|
||||
non applicable si:
|
||||
|
@ -430,11 +430,11 @@ activité transfrontalière simultanée . activité non salariée . pays centre
|
|||
circonstances (notamment ses projets), de faire des Pays-Bas le centre
|
||||
d’intérêt de son activité.
|
||||
|
||||
activité transfrontalière simultanée . activité non salariée . pays centre d'intérêt . pays:
|
||||
API: pays européen
|
||||
? activité transfrontalière simultanée . activité non salariée . pays centre d'intérêt . pays
|
||||
: API: pays européen
|
||||
titre: Pays "centre d'intêret"
|
||||
activité transfrontalière simultanée . activité non salariée . pays centre d'intérêt . pays . autre:
|
||||
applicable si: pays = 'Autre'
|
||||
? activité transfrontalière simultanée . activité non salariée . pays centre d'intérêt . pays . autre
|
||||
: applicable si: pays = 'Autre'
|
||||
titre: Nom du pays
|
||||
type: texte
|
||||
commentaires additionnels:
|
||||
|
|
|
@ -290,8 +290,9 @@ type CompanySectionProps = {
|
|||
export const CompanySection = ({ company }: CompanySectionProps) => {
|
||||
const [searchModal, showSearchModal] = useState(false)
|
||||
const [autoEntrepreneurModal, showAutoEntrepreneurModal] = useState(false)
|
||||
const [DirigeantMajoritaireModal, showDirigeantMajoritaireModal] =
|
||||
useState(false)
|
||||
const [DirigeantMajoritaireModal, showDirigeantMajoritaireModal] = useState(
|
||||
false
|
||||
)
|
||||
|
||||
const companyRef = useRef<Company | null>(null)
|
||||
useEffect(() => {
|
||||
|
|
|
@ -9,18 +9,27 @@ import 'Components/TargetSelection.css'
|
|||
import { EngineContext, useEngine } from 'Components/utils/EngineContext'
|
||||
import useSimulationConfig from 'Components/utils/useSimulationConfig'
|
||||
import ircecSrc from 'Images/logos-caisses-retraite/ircec.jpg'
|
||||
import { useContext } from 'react'
|
||||
import { useContext, useState } from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import styled from 'styled-components'
|
||||
import config from './configs/artiste-auteur.yaml'
|
||||
|
||||
export default function ArtisteAuteur() {
|
||||
useSimulationConfig(config)
|
||||
const [animationDisabled, setAnimationDisabled] = useState(false)
|
||||
|
||||
return (
|
||||
<>
|
||||
<SimulateurWarning simulateur="artiste-auteur" />
|
||||
<Simulation explanations={<CotisationsResult />}>
|
||||
<Simulation
|
||||
userWillExport={() => {
|
||||
setAnimationDisabled(true)
|
||||
}}
|
||||
disableAnimation={animationDisabled}
|
||||
explanations={
|
||||
<CotisationsResult disableAnimation={animationDisabled} />
|
||||
}
|
||||
>
|
||||
<PeriodSwitch />
|
||||
|
||||
<SimulationGoals className="plain">
|
||||
|
@ -32,12 +41,17 @@ export default function ArtisteAuteur() {
|
|||
</>
|
||||
)
|
||||
}
|
||||
function CotisationsResult() {
|
||||
|
||||
interface CotisationResultProps {
|
||||
disableAnimation: boolean
|
||||
}
|
||||
|
||||
function CotisationsResult({ disableAnimation }: CotisationResultProps) {
|
||||
return (
|
||||
<>
|
||||
<CotisationsParOrganisme />
|
||||
<Condition expression="artiste-auteur . cotisations > 0">
|
||||
<RepartitionCotisations />
|
||||
<RepartitionCotisations disableAnimation={disableAnimation} />
|
||||
</Condition>
|
||||
</>
|
||||
)
|
||||
|
@ -98,7 +112,13 @@ const branches = [
|
|||
},
|
||||
] as const
|
||||
|
||||
function RepartitionCotisations() {
|
||||
interface RepartitionCotisationsProps {
|
||||
disableAnimation: boolean
|
||||
}
|
||||
|
||||
function RepartitionCotisations({
|
||||
disableAnimation,
|
||||
}: RepartitionCotisationsProps) {
|
||||
const engine = useContext(EngineContext)
|
||||
const cotisations = branches.map((branch) => ({
|
||||
...branch,
|
||||
|
@ -117,6 +137,7 @@ function RepartitionCotisations() {
|
|||
<DistributionBranch
|
||||
key={cotisation.dottedName}
|
||||
maximum={maximum}
|
||||
disableAnimation={disableAnimation}
|
||||
{...cotisation}
|
||||
/>
|
||||
))}
|
||||
|
|
|
@ -6,14 +6,21 @@ import Simulation from 'Components/Simulation'
|
|||
import { SimulationGoal, SimulationGoals } from 'Components/SimulationGoals'
|
||||
import StackedBarChart from 'Components/StackedBarChart'
|
||||
import { ThemeColorsContext } from 'Components/utils/colors'
|
||||
import { default as React, useContext } from 'react'
|
||||
import { default as React, useContext, useState } from 'react'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
|
||||
export default function AutoEntrepreneur() {
|
||||
const [animationDisabled, setAnimationDisabled] = useState(false)
|
||||
return (
|
||||
<>
|
||||
<SimulateurWarning simulateur="auto-entrepreneur" />
|
||||
<Simulation explanations={<Explanation />}>
|
||||
<Simulation
|
||||
userWillExport={() => {
|
||||
setAnimationDisabled(true)
|
||||
}}
|
||||
disableAnimation={animationDisabled}
|
||||
explanations={<Explanation disableAnimation={animationDisabled} />}
|
||||
>
|
||||
<PeriodSwitch />
|
||||
<SimulationGoals className="plain">
|
||||
<ChiffreAffairesActivitéMixte dottedName="dirigeant . auto-entrepreneur . chiffre d'affaires" />
|
||||
|
@ -36,8 +43,11 @@ export default function AutoEntrepreneur() {
|
|||
</>
|
||||
)
|
||||
}
|
||||
interface ExplanationProps {
|
||||
disableAnimation: boolean
|
||||
}
|
||||
|
||||
function Explanation() {
|
||||
function Explanation({ disableAnimation }: ExplanationProps) {
|
||||
const { t } = useTranslation()
|
||||
const { palettes } = useContext(ThemeColorsContext)
|
||||
return (
|
||||
|
@ -46,6 +56,7 @@ function Explanation() {
|
|||
<Trans>Répartition du chiffre d'affaires</Trans>
|
||||
</h2>
|
||||
<StackedBarChart
|
||||
disableAnimation={disableAnimation}
|
||||
data={[
|
||||
{
|
||||
dottedName: 'dirigeant . auto-entrepreneur . net après impôt',
|
||||
|
|
|
@ -27,6 +27,7 @@ declare global {
|
|||
|
||||
export default function ChômagePartiel() {
|
||||
const inIframe = useContext(IsEmbeddedContext)
|
||||
const [animationDisabled, setAnimationDisabled] = useState(false)
|
||||
useEffect(() => {
|
||||
if (inIframe) {
|
||||
return
|
||||
|
@ -56,6 +57,10 @@ export default function ChômagePartiel() {
|
|||
</ul>
|
||||
</Warning>
|
||||
<Simulation
|
||||
userWillExport={() => {
|
||||
setAnimationDisabled(true)
|
||||
}}
|
||||
disableAnimation={animationDisabled}
|
||||
results={<ExplanationSection />}
|
||||
customEndMessages={
|
||||
<span className="ui__ notice">Voir les résultats au-dessus</span>
|
||||
|
|
|
@ -10,16 +10,31 @@ import { SimulationGoal, SimulationGoals } from 'Components/SimulationGoals'
|
|||
import { useEngine } from 'Components/utils/EngineContext'
|
||||
import { SitePathsContext } from 'Components/utils/SitePathsContext'
|
||||
import { DottedName } from 'modele-social'
|
||||
import { useContext } from 'react'
|
||||
import { useContext, useState } from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { useDispatch } from 'react-redux'
|
||||
import { Link } from 'react-router-dom'
|
||||
|
||||
export function IndépendantPLSimulation() {
|
||||
interface IndépendantSimulationProps {
|
||||
disableAnimation: boolean
|
||||
}
|
||||
|
||||
export function IndépendantPLSimulation({
|
||||
disableAnimation,
|
||||
}: IndépendantSimulationProps) {
|
||||
const [animationDisabled, setAnimationDisabled] = useState(false)
|
||||
return (
|
||||
<>
|
||||
<SimulateurWarning simulateur="profession-libérale" />
|
||||
<Simulation explanations={<IndépendantExplanation />}>
|
||||
<Simulation
|
||||
userWillExport={() => {
|
||||
setAnimationDisabled(true)
|
||||
}}
|
||||
disableAnimation={animationDisabled}
|
||||
explanations={
|
||||
<IndépendantExplanation disableAnimation={animationDisabled} />
|
||||
}
|
||||
>
|
||||
<PeriodSwitch />
|
||||
<IndépendantSimulationGoals />
|
||||
</Simulation>
|
||||
|
@ -27,11 +42,22 @@ export function IndépendantPLSimulation() {
|
|||
)
|
||||
}
|
||||
|
||||
export function EntrepriseIndividuelle() {
|
||||
export function EntrepriseIndividuelle({
|
||||
disableAnimation,
|
||||
}: IndépendantSimulationProps) {
|
||||
const [animationDisabled, setAnimationDisabled] = useState(false)
|
||||
return (
|
||||
<>
|
||||
<SimulateurWarning simulateur="entreprise-individuelle" />
|
||||
<Simulation explanations={<IndépendantExplanation />}>
|
||||
<Simulation
|
||||
userWillExport={() => {
|
||||
setAnimationDisabled(true)
|
||||
}}
|
||||
disableAnimation={animationDisabled}
|
||||
explanations={
|
||||
<IndépendantExplanation disableAnimation={animationDisabled} />
|
||||
}
|
||||
>
|
||||
<PeriodSwitch />
|
||||
<IndépendantSimulationGoals />
|
||||
</Simulation>
|
||||
|
@ -39,12 +65,23 @@ export function EntrepriseIndividuelle() {
|
|||
)
|
||||
}
|
||||
|
||||
export default function IndépendantSimulation() {
|
||||
export default function IndépendantSimulation({
|
||||
disableAnimation,
|
||||
}: IndépendantSimulationProps) {
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
const [animationDisabled, setAnimationDisabled] = useState(false)
|
||||
return (
|
||||
<>
|
||||
<SimulateurWarning simulateur="indépendant" />
|
||||
<Simulation explanations={<IndépendantExplanation />}>
|
||||
<Simulation
|
||||
userWillExport={() => {
|
||||
setAnimationDisabled(true)
|
||||
}}
|
||||
disableAnimation={animationDisabled}
|
||||
explanations={
|
||||
<IndépendantExplanation disableAnimation={animationDisabled} />
|
||||
}
|
||||
>
|
||||
<div
|
||||
css={`
|
||||
display: flex;
|
||||
|
@ -134,7 +171,12 @@ function ImpositionSwitch() {
|
|||
return (
|
||||
<span className="base ui__ small radio toggle">
|
||||
{(['IR', 'IS'] as const).map((imposition) => (
|
||||
<label key={imposition}>
|
||||
<label
|
||||
key={imposition}
|
||||
className={
|
||||
currentImposition !== imposition ? 'ui__ print-display-none' : ''
|
||||
}
|
||||
>
|
||||
<input
|
||||
name="entreprise . imposition"
|
||||
type="radio"
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { Condition } from 'Components/EngineValue'
|
||||
import PreviousSimulationBanner from 'Components/PreviousSimulationBanner'
|
||||
import ExportRecover from 'Components/simulationExplanation/ExportRecover'
|
||||
import { ThemeColorsProvider } from 'Components/utils/colors'
|
||||
import { IsEmbeddedContext } from 'Components/utils/embeddedContext'
|
||||
import Emoji from 'Components/utils/Emoji'
|
||||
|
@ -89,6 +90,7 @@ export default function PageData({
|
|||
{!inIframe && (
|
||||
<>
|
||||
{seoExplanations}
|
||||
<ExportRecover></ExportRecover>
|
||||
<NextSteps
|
||||
iframePath={privateIframe ? undefined : iframePath}
|
||||
nextSteps={nextSteps}
|
||||
|
@ -118,7 +120,7 @@ function NextSteps({ iframePath, nextSteps }: NextStepsProps) {
|
|||
return null
|
||||
}
|
||||
return (
|
||||
<section>
|
||||
<section className="ui__ print-display-none">
|
||||
<h2 className="ui__ h h3">
|
||||
<Trans>Ressources utiles</Trans>
|
||||
</h2>
|
||||
|
@ -196,27 +198,32 @@ export function SimulatorRessourceCard({
|
|||
|
||||
const guidesUrssaf = [
|
||||
{
|
||||
url: 'https://www.urssaf.fr/portail/files/live/sites/urssaf/files/documents/Diaporama_Medecins.pdf',
|
||||
url:
|
||||
'https://www.urssaf.fr/portail/files/live/sites/urssaf/files/documents/Diaporama_Medecins.pdf',
|
||||
associatedRule: "dirigeant . indépendant . PL . métier = 'santé . médecin'",
|
||||
title: 'Guide Urssaf pour les médecins libéraux',
|
||||
},
|
||||
{
|
||||
url: 'https://www.urssaf.fr/portail/files/live/sites/urssaf/files/documents/Diaporama_PL_statuts_hors_AE_et_PAM.pdf',
|
||||
url:
|
||||
'https://www.urssaf.fr/portail/files/live/sites/urssaf/files/documents/Diaporama_PL_statuts_hors_AE_et_PAM.pdf',
|
||||
associatedRule: 'entreprise . activité . libérale réglementée',
|
||||
title: 'Guide Urssaf pour les professions libérales réglementées',
|
||||
},
|
||||
{
|
||||
url: 'https://www.autoentrepreneur.urssaf.fr/portail/files/Guides/Metropole/Presentation_AE.pdf',
|
||||
url:
|
||||
'https://www.autoentrepreneur.urssaf.fr/portail/files/Guides/Metropole/Presentation_AE.pdf',
|
||||
associatedRule: 'dirigeant . auto-entrepreneur',
|
||||
title: 'Guide Urssaf pour les auto-entrepreneurs',
|
||||
},
|
||||
{
|
||||
url: 'http://www.secu-artistes-auteurs.fr/sites/default/files/pdf/Guide%20pratique%20de%20d%C3%A9but%20d%27activit%C3%A9.pdf',
|
||||
url:
|
||||
'http://www.secu-artistes-auteurs.fr/sites/default/files/pdf/Guide%20pratique%20de%20d%C3%A9but%20d%27activit%C3%A9.pdf',
|
||||
associatedRule: "dirigeant = 'artiste-auteur'",
|
||||
title: 'Guide Urssaf pour les artistes-auteurs',
|
||||
},
|
||||
{
|
||||
url: 'https://www.urssaf.fr/portail/files/live/sites/urssaf/files/documents/Diaporama_TI_statuts_hors_AE.pdf',
|
||||
url:
|
||||
'https://www.urssaf.fr/portail/files/live/sites/urssaf/files/documents/Diaporama_TI_statuts_hors_AE.pdf',
|
||||
associatedRule: 'dirigeant',
|
||||
title: 'Guide Urssaf pour les indépendants',
|
||||
},
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import Banner from 'Components/Banner'
|
||||
import { useState } from 'react'
|
||||
import Simulation from 'Components/Simulation'
|
||||
import SalaryExplanation from 'Components/simulationExplanation/SalaryExplanation'
|
||||
import { SitePathsContext } from 'Components/utils/SitePathsContext'
|
||||
|
@ -7,12 +8,19 @@ import { Trans } from 'react-i18next'
|
|||
import { Link } from 'react-router-dom'
|
||||
|
||||
export default function SalariéSimulation() {
|
||||
const [animationDisabled, setAnimationDisabled] = useState(false)
|
||||
const sitePaths = useContext(SitePathsContext)
|
||||
|
||||
return (
|
||||
<>
|
||||
<Simulation
|
||||
explanations={<SalaryExplanation />}
|
||||
userWillExport={() => {
|
||||
setAnimationDisabled(true)
|
||||
}}
|
||||
disableAnimation={animationDisabled}
|
||||
explanations={
|
||||
<SalaryExplanation disableAnimation={animationDisabled} />
|
||||
}
|
||||
customEndMessages={
|
||||
<>
|
||||
<Trans i18nKey="simulation-end.hiring.text">
|
||||
|
|
|
@ -59,7 +59,7 @@ export default function Simulateurs() {
|
|||
{(!lastState || lastState?.fromSimulateurs) && (
|
||||
<Link
|
||||
to={sitePaths.simulateurs.index}
|
||||
className="ui__ simple small push-left button"
|
||||
className="ui__ simple small push-left button print-display-none"
|
||||
>
|
||||
← <Trans>Voir les autres simulateurs</Trans>
|
||||
</Link>
|
||||
|
|
|
@ -4,7 +4,7 @@ import Simulation from 'Components/Simulation'
|
|||
import SalaryExplanation from 'Components/simulationExplanation/SalaryExplanation'
|
||||
import Emoji from 'Components/utils/Emoji'
|
||||
import { SitePathsContext } from 'Components/utils/SitePathsContext'
|
||||
import React, { useContext, useMemo } from 'react'
|
||||
import React, { useContext, useMemo, useState } from 'react'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import { SimulationConfig } from 'Reducers/rootReducer'
|
||||
import { constructLocalizedSitePath } from '../../sitePaths'
|
||||
|
@ -139,74 +139,77 @@ export function getSimulatorsData({
|
|||
shortName: t('pages.simulateurs.salarié.shortname', 'Salarié'),
|
||||
seoExplanations: (
|
||||
<Trans i18nKey="pages.simulateurs.salarié.seo">
|
||||
<h2>Comment calculer le salaire net ?</h2>
|
||||
<p>
|
||||
Lors de l'entretien d'embauche l'employeur propose en général une
|
||||
rémunération exprimée en « brut ». Le montant annoncé inclut ainsi
|
||||
les cotisations salariales, qui servent à financer la protection
|
||||
sociale du salarié et qui sont retranchées du salaire « net » perçu
|
||||
par le salarié.
|
||||
</p>
|
||||
<p>
|
||||
Vous pouvez utiliser notre simulateur pour convertir le{' '}
|
||||
<strong>salaire brut en net</strong> : il vous suffit pour cela
|
||||
saisir la rémunération annoncée dans la case salaire brut. La
|
||||
simulation peut-être affinée en répondant aux différentes questions
|
||||
(CDD, statut cadre, heures supplémentaires, temps partiel,
|
||||
titre-restaurants, etc.).
|
||||
</p>
|
||||
<img
|
||||
src={
|
||||
language === 'fr'
|
||||
? urlIllustrationNetBrut
|
||||
: urlIllustrationNetBrutEn
|
||||
}
|
||||
alt={t(
|
||||
'pages.simulateurs.salarié.alt-image1',
|
||||
'Salaire net (perçu par le salarié) = Salaire brut (inscrit dans le contrat de travail) - cotisations salariales (retraite, csg, etc)'
|
||||
)}
|
||||
css={`
|
||||
width: 100%;
|
||||
`}
|
||||
/>
|
||||
<p>
|
||||
Par ailleurs depuis 2019, l'
|
||||
<RuleLink dottedName="impôt">impôt sur le revenu</RuleLink> est
|
||||
prélevé à la source. Pour ce faire, la direction générale des
|
||||
finances publiques (DGFiP) transmet à l'employeur le taux
|
||||
d'imposition calculé à partir de la déclaration de revenu du
|
||||
salarié. Si ce taux est inconnu, par exemple lors d'une première
|
||||
année d'activité, l'employeur utilise le{' '}
|
||||
<RuleLink dottedName="impôt . taux neutre d'impôt sur le revenu">
|
||||
taux neutre
|
||||
</RuleLink>
|
||||
.
|
||||
</p>
|
||||
<h2>Comment calculer le coût d'embauche ?</h2>
|
||||
<p>
|
||||
Si vous cherchez à embaucher, vous pouvez calculer le coût total de
|
||||
la rémunération de votre salarié, ainsi que les montants de
|
||||
cotisations patronales et salariales correspondant. Cela vous permet
|
||||
de définir le niveau de rémunération en connaissant le montant
|
||||
global de charge que cela représente pour votre entreprise.
|
||||
</p>
|
||||
<p>
|
||||
En plus du salaire, notre simulateur prend en compte le calcul des
|
||||
avantages en nature (téléphone, véhicule de fonction, etc.), ainsi
|
||||
que la mutuelle santé obligatoire.
|
||||
</p>
|
||||
<p>
|
||||
Il existe des{' '}
|
||||
<RuleLink dottedName="contrat salarié . aides employeur">
|
||||
aides différées
|
||||
</RuleLink>{' '}
|
||||
à l'embauche qui ne sont pas toutes prises en compte par notre
|
||||
simulateur, vous pouvez les retrouver sur{' '}
|
||||
<a href="http://www.aides-entreprises.fr" target="_blank">
|
||||
le portail officiel
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
<section className="ui__ print-break-avoid">
|
||||
<h2>Comment calculer le salaire net ?</h2>
|
||||
<p>
|
||||
Lors de l'entretien d'embauche l'employeur propose en général une
|
||||
rémunération exprimée en « brut ». Le montant annoncé inclut ainsi
|
||||
les cotisations salariales, qui servent à financer la protection
|
||||
sociale du salarié et qui sont retranchées du salaire « net »
|
||||
perçu par le salarié.
|
||||
</p>
|
||||
<p>
|
||||
Vous pouvez utiliser notre simulateur pour convertir le{' '}
|
||||
<strong>salaire brut en net</strong> : il vous suffit pour cela
|
||||
saisir la rémunération annoncée dans la case salaire brut. La
|
||||
simulation peut-être affinée en répondant aux différentes
|
||||
questions (CDD, statut cadre, heures supplémentaires, temps
|
||||
partiel, titre-restaurants, etc.).
|
||||
</p>
|
||||
<img
|
||||
src={
|
||||
language === 'fr'
|
||||
? urlIllustrationNetBrut
|
||||
: urlIllustrationNetBrutEn
|
||||
}
|
||||
alt={t(
|
||||
'pages.simulateurs.salarié.alt-image1',
|
||||
'Salaire net (perçu par le salarié) = Salaire brut (inscrit dans le contrat de travail) - cotisations salariales (retraite, csg, etc)'
|
||||
)}
|
||||
css={`
|
||||
width: 100%;
|
||||
`}
|
||||
/>
|
||||
<p>
|
||||
Par ailleurs depuis 2019, l'
|
||||
<RuleLink dottedName="impôt">impôt sur le revenu</RuleLink> est
|
||||
prélevé à la source. Pour ce faire, la direction générale des
|
||||
finances publiques (DGFiP) transmet à l'employeur le taux
|
||||
d'imposition calculé à partir de la déclaration de revenu du
|
||||
salarié. Si ce taux est inconnu, par exemple lors d'une première
|
||||
année d'activité, l'employeur utilise le{' '}
|
||||
<RuleLink dottedName="impôt . taux neutre d'impôt sur le revenu">
|
||||
taux neutre
|
||||
</RuleLink>
|
||||
.
|
||||
</p>
|
||||
<h2>Comment calculer le coût d'embauche ?</h2>
|
||||
<p>
|
||||
Si vous cherchez à embaucher, vous pouvez calculer le coût total
|
||||
de la rémunération de votre salarié, ainsi que les montants de
|
||||
cotisations patronales et salariales correspondant. Cela vous
|
||||
permet de définir le niveau de rémunération en connaissant le
|
||||
montant global de charge que cela représente pour votre
|
||||
entreprise.
|
||||
</p>
|
||||
<p>
|
||||
En plus du salaire, notre simulateur prend en compte le calcul des
|
||||
avantages en nature (téléphone, véhicule de fonction, etc.), ainsi
|
||||
que la mutuelle santé obligatoire.
|
||||
</p>
|
||||
<p>
|
||||
Il existe des{' '}
|
||||
<RuleLink dottedName="contrat salarié . aides employeur">
|
||||
aides différées
|
||||
</RuleLink>{' '}
|
||||
à l'embauche qui ne sont pas toutes prises en compte par notre
|
||||
simulateur, vous pouvez les retrouver sur{' '}
|
||||
<a href="http://www.aides-entreprises.fr" target="_blank">
|
||||
le portail officiel
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
</section>
|
||||
</Trans>
|
||||
),
|
||||
nextSteps: ['chômage-partiel', 'aides-embauche'],
|
||||
|
@ -244,7 +247,9 @@ export function getSimulatorsData({
|
|||
'Entreprise individuelle (EI) : simulateur de revenus'
|
||||
),
|
||||
},
|
||||
component: EntrepriseIndividuelle,
|
||||
component: () => {
|
||||
return <EntrepriseIndividuelle disableAnimation={false} />
|
||||
},
|
||||
path: sitePaths.simulateurs['entreprise-individuelle'],
|
||||
shortName: t('pages.simulateurs.ei.shortname', 'EI'),
|
||||
title: t(
|
||||
|
@ -253,67 +258,70 @@ export function getSimulatorsData({
|
|||
),
|
||||
seoExplanations: (
|
||||
<Trans i18nKey="pages.simulateurs.ei.seo explanation">
|
||||
<h2>
|
||||
Comment calculer le revenu net d'un dirigeant d'entreprise
|
||||
individuelle (EI) ?
|
||||
</h2>
|
||||
<p>
|
||||
Un dirigeant d'entreprise individuelle doit payer des cotisations et
|
||||
contributions sociales à l'administration. Ces cotisations servent
|
||||
au financement de la sécurité sociale, et ouvrent des droits
|
||||
notamment pour la retraite et pour l'assurance maladie. Elles
|
||||
permettent également de financer la formation professionnelle.
|
||||
</p>
|
||||
<p>
|
||||
<Emoji emoji="👉" />{' '}
|
||||
<RuleLink dottedName="dirigeant . indépendant . cotisations et contributions">
|
||||
Voir le détail du calcul des cotisations
|
||||
</RuleLink>
|
||||
</p>
|
||||
<p>
|
||||
Il ne faut pas oublier de retrancher toutes les dépenses effectuées
|
||||
dans le cadre de l'activité professionnelle (équipements, matières
|
||||
premières, local, transport). Ces dernières sont déductibles du
|
||||
résultat de l'entreprise, cela veut dire que vous ne payerez pas
|
||||
d'impôt ou de cotisations sur leur montant (sauf si vous avez opté
|
||||
pour l'option micro-fiscal).
|
||||
</p>
|
||||
<p>
|
||||
La formule de calcul complète est donc :
|
||||
<blockquote>
|
||||
<strong>
|
||||
Revenu net = Chiffres d'affaires − Dépenses professionnelles -
|
||||
Cotisations sociales
|
||||
</strong>
|
||||
</blockquote>
|
||||
</p>
|
||||
<h2>
|
||||
Comment calculer les cotisations sociales d'une entreprise
|
||||
individuelle ?
|
||||
</h2>
|
||||
<p>
|
||||
Le dirigeant d'une entreprise individuelle paye des cotisations
|
||||
sociales, proportionnelle au{' '}
|
||||
<RuleLink dottedName="entreprise . résultat fiscal">
|
||||
résultat fiscal
|
||||
</RuleLink>{' '}
|
||||
de l'entreprise. Leur montant varie également en fonction du type
|
||||
d'activité (profession libérale, artisan, commerçants, etc), où des
|
||||
éventuelles exonérations accordées (ACRE, ZFU, RSA, etc.).
|
||||
</p>
|
||||
<p>
|
||||
{' '}
|
||||
Comme le résultat d'une entreprise n'est connu qu'à la fin de
|
||||
l'exercice comptable, le dirigeant paye des cotisations
|
||||
provisionnelles qui seront ensuite régularisée une fois le revenu
|
||||
réel déclaré, l'année suivante.
|
||||
</p>
|
||||
<p>
|
||||
Ce simulateur permet de calculer le montant exact des cotisations
|
||||
sociale en partant d'un chiffre d'affaires ou d'un revenu net
|
||||
souhaité. Vous pourrez préciser votre situation en répondant aux
|
||||
questions s'affichant en dessous de la simulation.
|
||||
</p>
|
||||
<section className="ui__ print-break-avoid">
|
||||
<h2>
|
||||
Comment calculer le revenu net d'un dirigeant d'entreprise
|
||||
individuelle (EI) ?
|
||||
</h2>
|
||||
<p>
|
||||
Un dirigeant d'entreprise individuelle doit payer des cotisations
|
||||
et contributions sociales à l'administration. Ces cotisations
|
||||
servent au financement de la sécurité sociale, et ouvrent des
|
||||
droits notamment pour la retraite et pour l'assurance maladie.
|
||||
Elles permettent également de financer la formation
|
||||
professionnelle.
|
||||
</p>
|
||||
<p>
|
||||
<Emoji emoji="👉" />{' '}
|
||||
<RuleLink dottedName="dirigeant . indépendant . cotisations et contributions">
|
||||
Voir le détail du calcul des cotisations
|
||||
</RuleLink>
|
||||
</p>
|
||||
<p>
|
||||
Il ne faut pas oublier de retrancher toutes les dépenses
|
||||
effectuées dans le cadre de l'activité professionnelle
|
||||
(équipements, matières premières, local, transport). Ces dernières
|
||||
sont déductibles du résultat de l'entreprise, cela veut dire que
|
||||
vous ne payerez pas d'impôt ou de cotisations sur leur montant
|
||||
(sauf si vous avez opté pour l'option micro-fiscal).
|
||||
</p>
|
||||
<p>
|
||||
La formule de calcul complète est donc :
|
||||
<blockquote>
|
||||
<strong>
|
||||
Revenu net = Chiffres d'affaires − Dépenses professionnelles -
|
||||
Cotisations sociales
|
||||
</strong>
|
||||
</blockquote>
|
||||
</p>
|
||||
<h2>
|
||||
Comment calculer les cotisations sociales d'une entreprise
|
||||
individuelle ?
|
||||
</h2>
|
||||
<p>
|
||||
Le dirigeant d'une entreprise individuelle paye des cotisations
|
||||
sociales, proportionnelle au{' '}
|
||||
<RuleLink dottedName="entreprise . résultat fiscal">
|
||||
résultat fiscal
|
||||
</RuleLink>{' '}
|
||||
de l'entreprise. Leur montant varie également en fonction du type
|
||||
d'activité (profession libérale, artisan, commerçants, etc), où
|
||||
des éventuelles exonérations accordées (ACRE, ZFU, RSA, etc.).
|
||||
</p>
|
||||
<p>
|
||||
{' '}
|
||||
Comme le résultat d'une entreprise n'est connu qu'à la fin de
|
||||
l'exercice comptable, le dirigeant paye des cotisations
|
||||
provisionnelles qui seront ensuite régularisée une fois le revenu
|
||||
réel déclaré, l'année suivante.
|
||||
</p>
|
||||
<p>
|
||||
Ce simulateur permet de calculer le montant exact des cotisations
|
||||
sociale en partant d'un chiffre d'affaires ou d'un revenu net
|
||||
souhaité. Vous pourrez préciser votre situation en répondant aux
|
||||
questions s'affichant en dessous de la simulation.
|
||||
</p>
|
||||
</section>
|
||||
</Trans>
|
||||
),
|
||||
nextSteps: ['comparaison-statuts'],
|
||||
|
@ -345,7 +353,9 @@ export function getSimulatorsData({
|
|||
'EIRL : simulateur de revenus pour dirigeant'
|
||||
),
|
||||
},
|
||||
component: IndépendantSimulation,
|
||||
component: () => {
|
||||
return <IndépendantSimulation disableAnimation={false} />
|
||||
},
|
||||
path: sitePaths.simulateurs.eirl,
|
||||
shortName: t('pages.simulateurs.eirl.shortname', 'EIRL'),
|
||||
title: t('pages.simulateurs.eirl.title', "Simulateur d'EIRL"),
|
||||
|
@ -383,52 +393,63 @@ export function getSimulatorsData({
|
|||
shortName: t('pages.simulateurs.sasu.shortname', 'SASU'),
|
||||
title: t('pages.simulateurs.sasu.title', 'Simulateur de SASU'),
|
||||
component: function SasuSimulation() {
|
||||
const [animationDisabled, setAnimationDisabled] = useState(false)
|
||||
return (
|
||||
<>
|
||||
<SimulateurWarning simulateur="sasu" />
|
||||
<Simulation explanations={<SalaryExplanation />} />
|
||||
<Simulation
|
||||
userWillExport={() => {
|
||||
setAnimationDisabled(true)
|
||||
}}
|
||||
disableAnimation={animationDisabled}
|
||||
explanations={
|
||||
<SalaryExplanation disableAnimation={animationDisabled} />
|
||||
}
|
||||
/>
|
||||
</>
|
||||
)
|
||||
},
|
||||
seoExplanations: (
|
||||
<Trans i18nKey="pages.simulateurs.sasu.seo-explanation">
|
||||
<h2>Comment calculer le salaire d'un dirigeant de SASU ? </h2>
|
||||
<p>
|
||||
Comme pour un salarié classique, le{' '}
|
||||
<strong>dirigeant de sasu</strong> paye des cotisations sociales sur
|
||||
la rémunération qu'il se verse. Les cotisations sont calculées de la
|
||||
même manière que pour le salarié : elles sont décomposées en partie
|
||||
employeur et partie salarié et sont exprimées comme un pourcentage
|
||||
du salaire brut.
|
||||
</p>
|
||||
<p>
|
||||
Le dirigeant assimilé-salarié ne paye pas de{' '}
|
||||
<strong>cotisations chômage</strong>. Par ailleurs, il ne bénéficie
|
||||
pas de la{' '}
|
||||
<RuleLink dottedName="contrat salarié . réduction générale">
|
||||
réduction générale de cotisations
|
||||
</RuleLink>{' '}
|
||||
ni des dispositifs encadrés par le code du travail comme les{' '}
|
||||
<RuleLink dottedName="contrat salarié . temps de travail . heures supplémentaires">
|
||||
heures supplémentaires
|
||||
</RuleLink>{' '}
|
||||
ou les primes.
|
||||
</p>
|
||||
<p>
|
||||
Il peut en revanche prétendre à la{' '}
|
||||
<RuleLink dottedName="dirigeant . assimilé salarié . réduction ACRE">
|
||||
réduction ACRE
|
||||
</RuleLink>{' '}
|
||||
en debut d'activité, sous certaines conditions.
|
||||
</p>
|
||||
<p>
|
||||
Vous pouvez utiliser notre simulateur pour calculer la{' '}
|
||||
<strong>rémunération nette</strong> à partir d'un montant superbrut
|
||||
alloué à la rémunération du dirigeant. Il vous suffit pour cela
|
||||
saisir le montant total alloué dans la case "total chargé". La
|
||||
simulation peut ensuite être affinée en répondant aux différentes
|
||||
questions.
|
||||
</p>
|
||||
<section className="ui__ print-break-avoid">
|
||||
<h2>Comment calculer le salaire d'un dirigeant de SASU ? </h2>
|
||||
<p>
|
||||
Comme pour un salarié classique, le{' '}
|
||||
<strong>dirigeant de sasu</strong> paye des cotisations sociales
|
||||
sur la rémunération qu'il se verse. Les cotisations sont calculées
|
||||
de la même manière que pour le salarié : elles sont décomposées en
|
||||
partie employeur et partie salarié et sont exprimées comme un
|
||||
pourcentage du salaire brut.
|
||||
</p>
|
||||
<p>
|
||||
Le dirigeant assimilé-salarié ne paye pas de{' '}
|
||||
<strong>cotisations chômage</strong>. Par ailleurs, il ne
|
||||
bénéficie pas de la{' '}
|
||||
<RuleLink dottedName="contrat salarié . réduction générale">
|
||||
réduction générale de cotisations
|
||||
</RuleLink>{' '}
|
||||
ni des dispositifs encadrés par le code du travail comme les{' '}
|
||||
<RuleLink dottedName="contrat salarié . temps de travail . heures supplémentaires">
|
||||
heures supplémentaires
|
||||
</RuleLink>{' '}
|
||||
ou les primes.
|
||||
</p>
|
||||
<p>
|
||||
Il peut en revanche prétendre à la{' '}
|
||||
<RuleLink dottedName="dirigeant . assimilé salarié . réduction ACRE">
|
||||
réduction ACRE
|
||||
</RuleLink>{' '}
|
||||
en debut d'activité, sous certaines conditions.
|
||||
</p>
|
||||
<p>
|
||||
Vous pouvez utiliser notre simulateur pour calculer la{' '}
|
||||
<strong>rémunération nette</strong> à partir d'un montant
|
||||
superbrut alloué à la rémunération du dirigeant. Il vous suffit
|
||||
pour cela saisir le montant total alloué dans la case "total
|
||||
chargé". La simulation peut ensuite être affinée en répondant aux
|
||||
différentes questions.
|
||||
</p>
|
||||
</section>
|
||||
</Trans>
|
||||
),
|
||||
nextSteps: ['is', 'comparaison-statuts'],
|
||||
|
@ -469,7 +490,9 @@ export function getSimulatorsData({
|
|||
path: sitePaths.simulateurs.eurl,
|
||||
shortName: t('pages.simulateurs.sasu.shortname', 'EURL'),
|
||||
title: t('pages.simulateurs.sasu.title', "Simulateur d'EURL"),
|
||||
component: IndépendantSimulation,
|
||||
component: () => {
|
||||
return <IndépendantSimulation disableAnimation={false} />
|
||||
},
|
||||
nextSteps: ['is', 'comparaison-statuts'],
|
||||
},
|
||||
'auto-entrepreneur': {
|
||||
|
@ -508,67 +531,70 @@ export function getSimulatorsData({
|
|||
),
|
||||
seoExplanations: (
|
||||
<Trans i18nKey="pages.simulateurs.auto-entrepreneur.seo explanation">
|
||||
<h2>Comment calculer le revenu net d'un auto-entrepreneur ?</h2>
|
||||
<p>
|
||||
Un auto-entrepreneur doit payer des cotisations et contributions
|
||||
sociales à l'administration. Ces cotisations servent au financement
|
||||
de la sécurité sociale, et ouvrent des droits notamment pour la
|
||||
retraite et pour l'assurance maladie. Elles permettent également de
|
||||
financer la formation professionnelle. Leur montant varie en
|
||||
fonction du type d'activité.
|
||||
</p>
|
||||
<p>
|
||||
<Emoji emoji="👉" />{' '}
|
||||
<RuleLink dottedName="dirigeant . auto-entrepreneur . cotisations et contributions">
|
||||
Voir le détail du calcul des cotisations
|
||||
</RuleLink>
|
||||
</p>
|
||||
<p>
|
||||
Il ne faut pas oublier de retrancher toutes les dépenses effectuées
|
||||
dans le cadre de l'activité professionnelle (équipements, matières
|
||||
premières, local, transport). Bien qu'elles ne soient pas utilisées
|
||||
pour le calcul des cotisations et de l'impôt, elles doivent être
|
||||
prises en compte pour vérifier si l'activité est viable
|
||||
économiquement.
|
||||
</p>
|
||||
<p>
|
||||
La formule de calcul complète est donc :
|
||||
<blockquote>
|
||||
<strong>
|
||||
Revenu net = Chiffres d'affaires − Cotisations sociales −
|
||||
Dépenses professionnelles
|
||||
</strong>
|
||||
</blockquote>
|
||||
</p>
|
||||
<h2>
|
||||
Comment calculer l'impôt sur le revenu pour un auto-entrepreneur ?
|
||||
</h2>
|
||||
<p>
|
||||
Si vous avez opté pour le versement libératoire lors de la création
|
||||
de votre auto-entreprise, l'impôt sur le revenu est payé en même
|
||||
temps que les cotisations sociales.
|
||||
</p>
|
||||
<p>
|
||||
<Emoji emoji="👉" />{' '}
|
||||
<RuleLink dottedName="dirigeant . auto-entrepreneur . impôt . versement libératoire . montant">
|
||||
Voir comment est calculé le montant du versement libératoire
|
||||
</RuleLink>
|
||||
</p>
|
||||
<p>
|
||||
Sinon, vous serez imposé selon le barème standard de l'impôt sur le
|
||||
revenu. Le revenu imposable est alors calculé comme un pourcentage
|
||||
du chiffre d'affaires. C'est qu'on appel l'abattement forfaitaire.
|
||||
Ce pourcentage varie en fonction du type d'activité excercé. On dit
|
||||
qu'il est forfaitaire car il ne prends pas en compte les dépenses
|
||||
réelles effectuées dans le cadre de l'activité.
|
||||
</p>
|
||||
<p>
|
||||
<Emoji emoji="👉" />{' '}
|
||||
<RuleLink dottedName="dirigeant . auto-entrepreneur . impôt . revenu imposable">
|
||||
Voir le détail du calcul du revenu abattu pour un
|
||||
auto-entrepreneur
|
||||
</RuleLink>
|
||||
</p>
|
||||
<section className="ui__ print-break-avoid">
|
||||
<h2>Comment calculer le revenu net d'un auto-entrepreneur ?</h2>
|
||||
<p>
|
||||
Un auto-entrepreneur doit payer des cotisations et contributions
|
||||
sociales à l'administration. Ces cotisations servent au
|
||||
financement de la sécurité sociale, et ouvrent des droits
|
||||
notamment pour la retraite et pour l'assurance maladie. Elles
|
||||
permettent également de financer la formation professionnelle.
|
||||
Leur montant varie en fonction du type d'activité.
|
||||
</p>
|
||||
<p>
|
||||
<Emoji emoji="👉" />{' '}
|
||||
<RuleLink dottedName="dirigeant . auto-entrepreneur . cotisations et contributions">
|
||||
Voir le détail du calcul des cotisations
|
||||
</RuleLink>
|
||||
</p>
|
||||
<p>
|
||||
Il ne faut pas oublier de retrancher toutes les dépenses
|
||||
effectuées dans le cadre de l'activité professionnelle
|
||||
(équipements, matières premières, local, transport). Bien qu'elles
|
||||
ne soient pas utilisées pour le calcul des cotisations et de
|
||||
l'impôt, elles doivent être prises en compte pour vérifier si
|
||||
l'activité est viable économiquement.
|
||||
</p>
|
||||
<p>
|
||||
La formule de calcul complète est donc :
|
||||
<blockquote>
|
||||
<strong>
|
||||
Revenu net = Chiffres d'affaires − Cotisations sociales −
|
||||
Dépenses professionnelles
|
||||
</strong>
|
||||
</blockquote>
|
||||
</p>
|
||||
<h2>
|
||||
Comment calculer l'impôt sur le revenu pour un auto-entrepreneur ?
|
||||
</h2>
|
||||
<p>
|
||||
Si vous avez opté pour le versement libératoire lors de la
|
||||
création de votre auto-entreprise, l'impôt sur le revenu est payé
|
||||
en même temps que les cotisations sociales.
|
||||
</p>
|
||||
<p>
|
||||
<Emoji emoji="👉" />{' '}
|
||||
<RuleLink dottedName="dirigeant . auto-entrepreneur . impôt . versement libératoire . montant">
|
||||
Voir comment est calculé le montant du versement libératoire
|
||||
</RuleLink>
|
||||
</p>
|
||||
<p>
|
||||
Sinon, vous serez imposé selon le barème standard de l'impôt sur
|
||||
le revenu. Le revenu imposable est alors calculé comme un
|
||||
pourcentage du chiffre d'affaires. C'est qu'on appel l'abattement
|
||||
forfaitaire. Ce pourcentage varie en fonction du type d'activité
|
||||
excercé. On dit qu'il est forfaitaire car il ne prends pas en
|
||||
compte les dépenses réelles effectuées dans le cadre de
|
||||
l'activité.
|
||||
</p>
|
||||
<p>
|
||||
<Emoji emoji="👉" />{' '}
|
||||
<RuleLink dottedName="dirigeant . auto-entrepreneur . impôt . revenu imposable">
|
||||
Voir le détail du calcul du revenu abattu pour un
|
||||
auto-entrepreneur
|
||||
</RuleLink>
|
||||
</p>
|
||||
</section>
|
||||
</Trans>
|
||||
),
|
||||
nextSteps: ['indépendant', 'comparaison-statuts'],
|
||||
|
@ -594,7 +620,9 @@ export function getSimulatorsData({
|
|||
"Calcul du revenu net après impôt et des cotisations à partir du chiffre d'affaires et inversement"
|
||||
),
|
||||
},
|
||||
component: IndépendantSimulation,
|
||||
component: () => {
|
||||
return <IndépendantSimulation disableAnimation={false} />
|
||||
},
|
||||
nextSteps: ['comparaison-statuts', 'is'],
|
||||
},
|
||||
|
||||
|
@ -662,74 +690,77 @@ export function getSimulatorsData({
|
|||
),
|
||||
seoExplanations: (
|
||||
<Trans i18nKey="pages.simulateurs.chômage-partiel.seo">
|
||||
<h2>Comment calculer l'indemnité d'activité partielle ?</h2>
|
||||
<p>
|
||||
L'indemnité d'activité partielle de base est fixée par la loi à{' '}
|
||||
<strong>70% du brut</strong>. Elle est proratisée en fonction du
|
||||
nombre d'heures chômées. Pour un salarié à 2300 € brut mensuel, qui
|
||||
travaille à 50% de son temps usuel, cela donne{' '}
|
||||
<strong>2300 € × 50% × 70% = 805 €</strong>
|
||||
</p>
|
||||
<p>
|
||||
A cette indemnité de base s'ajoute l'indemnité complémentaire pour
|
||||
les salaires proches du SMIC. Ce complément intervient lorsque le
|
||||
cumul de la rémunération et de l'indemnité de base est en dessous
|
||||
d'un SMIC net. Ces indemnités sont prises en charge par l'employeur,
|
||||
qui sera ensuite remboursé en parti ou en totalité par l'État.
|
||||
</p>
|
||||
<p>
|
||||
👉{' '}
|
||||
<RuleLink dottedName="contrat salarié . activité partielle . indemnités">
|
||||
Voir le détail du calcul de l'indemnité
|
||||
</RuleLink>
|
||||
</p>
|
||||
<h2>Comment calculer la part remboursée par l'État ?</h2>
|
||||
<p>
|
||||
L'État prend en charge une partie de l'indemnité partielle pour les
|
||||
salaires allant jusqu'à <strong>4,5 SMIC</strong>, avec un minimum à
|
||||
8,03€ par heures chômée. Concrètement, cela abouti à une prise en
|
||||
charge à<strong>100%</strong> pour les salaires proches du SMIC.
|
||||
Celle-ci diminue progressivement jusqu'à se stabiliser à{' '}
|
||||
<strong>93%</strong> pour les salaires compris{' '}
|
||||
<strong>entre 2000 € et 7000 €</strong> (salaire correspondant à la
|
||||
limite de 4,5 SMIC).
|
||||
</p>
|
||||
<p>
|
||||
👉{' '}
|
||||
<RuleLink dottedName="contrat salarié . activité partielle . indemnisation entreprise">
|
||||
Voir le détail du calcul du remboursement de l'indemnité
|
||||
</RuleLink>
|
||||
</p>
|
||||
<h2>Comment déclarer une activité partielle ?</h2>
|
||||
<p>
|
||||
Face à la crise du coronavirus, les modalités de passage en activité
|
||||
partielle ont été allégées. L'employeur est autorisé a placer ses
|
||||
salariés en activité partielle avant que la demande officielle ne
|
||||
soit déposée. Celui-ci dispose ensuite d'un délai de{' '}
|
||||
<strong>30 jours</strong> pour se mettre en règle. Les indemnités
|
||||
seront versées avec un effet rétro-actif débutant à la mise en place
|
||||
du chômage partiel.
|
||||
</p>
|
||||
<p>
|
||||
👉{' '}
|
||||
<a href="https://www.service-public.fr/professionnels-entreprises/vosdroits/R31001">
|
||||
Effectuer la demande de chômage partiel
|
||||
</a>
|
||||
</p>
|
||||
<h2>
|
||||
{' '}
|
||||
Quelles sont les cotisations sociales à payer pour l'indemnité
|
||||
d'activité partielle ?
|
||||
</h2>
|
||||
<p>
|
||||
L'indemnité d'activité partielle est soumise à la CSG/CRDS et à une
|
||||
contribution maladie dans certains cas. Pour en savoir plus, voir la
|
||||
page explicative sur{' '}
|
||||
<a href="https://www.urssaf.fr/portail/home/employeur/reduire-ou-cesser-lactivite/la-reduction-ou-la-cessation-tem/lactivite-partielle-dispositif-d/le-regime-social-de-lindemnite-d.html">
|
||||
le site de l'Urssaf
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
<section className="ui__ print-break-avoid">
|
||||
<h2>Comment calculer l'indemnité d'activité partielle ?</h2>
|
||||
<p>
|
||||
L'indemnité d'activité partielle de base est fixée par la loi à{' '}
|
||||
<strong>70% du brut</strong>. Elle est proratisée en fonction du
|
||||
nombre d'heures chômées. Pour un salarié à 2300 € brut mensuel,
|
||||
qui travaille à 50% de son temps usuel, cela donne{' '}
|
||||
<strong>2300 € × 50% × 70% = 805 €</strong>
|
||||
</p>
|
||||
<p>
|
||||
A cette indemnité de base s'ajoute l'indemnité complémentaire pour
|
||||
les salaires proches du SMIC. Ce complément intervient lorsque le
|
||||
cumul de la rémunération et de l'indemnité de base est en dessous
|
||||
d'un SMIC net. Ces indemnités sont prises en charge par
|
||||
l'employeur, qui sera ensuite remboursé en parti ou en totalité
|
||||
par l'État.
|
||||
</p>
|
||||
<p>
|
||||
👉{' '}
|
||||
<RuleLink dottedName="contrat salarié . activité partielle . indemnités">
|
||||
Voir le détail du calcul de l'indemnité
|
||||
</RuleLink>
|
||||
</p>
|
||||
<h2>Comment calculer la part remboursée par l'État ?</h2>
|
||||
<p>
|
||||
L'État prend en charge une partie de l'indemnité partielle pour
|
||||
les salaires allant jusqu'à <strong>4,5 SMIC</strong>, avec un
|
||||
minimum à 8,03€ par heures chômée. Concrètement, cela abouti à une
|
||||
prise en charge à<strong>100%</strong> pour les salaires proches
|
||||
du SMIC. Celle-ci diminue progressivement jusqu'à se stabiliser à{' '}
|
||||
<strong>93%</strong> pour les salaires compris{' '}
|
||||
<strong>entre 2000 € et 7000 €</strong> (salaire correspondant à
|
||||
la limite de 4,5 SMIC).
|
||||
</p>
|
||||
<p>
|
||||
👉{' '}
|
||||
<RuleLink dottedName="contrat salarié . activité partielle . indemnisation entreprise">
|
||||
Voir le détail du calcul du remboursement de l'indemnité
|
||||
</RuleLink>
|
||||
</p>
|
||||
<h2>Comment déclarer une activité partielle ?</h2>
|
||||
<p>
|
||||
Face à la crise du coronavirus, les modalités de passage en
|
||||
activité partielle ont été allégées. L'employeur est autorisé a
|
||||
placer ses salariés en activité partielle avant que la demande
|
||||
officielle ne soit déposée. Celui-ci dispose ensuite d'un délai de{' '}
|
||||
<strong>30 jours</strong> pour se mettre en règle. Les indemnités
|
||||
seront versées avec un effet rétro-actif débutant à la mise en
|
||||
place du chômage partiel.
|
||||
</p>
|
||||
<p>
|
||||
👉{' '}
|
||||
<a href="https://www.service-public.fr/professionnels-entreprises/vosdroits/R31001">
|
||||
Effectuer la demande de chômage partiel
|
||||
</a>
|
||||
</p>
|
||||
<h2>
|
||||
{' '}
|
||||
Quelles sont les cotisations sociales à payer pour l'indemnité
|
||||
d'activité partielle ?
|
||||
</h2>
|
||||
<p>
|
||||
L'indemnité d'activité partielle est soumise à la CSG/CRDS et à
|
||||
une contribution maladie dans certains cas. Pour en savoir plus,
|
||||
voir la page explicative sur{' '}
|
||||
<a href="https://www.urssaf.fr/portail/home/employeur/reduire-ou-cesser-lactivite/la-reduction-ou-la-cessation-tem/lactivite-partielle-dispositif-d/le-regime-social-de-lindemnite-d.html">
|
||||
le site de l'Urssaf
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
</section>
|
||||
</Trans>
|
||||
),
|
||||
nextSteps: ['salarié', 'aides-embauche'],
|
||||
|
@ -844,7 +875,9 @@ export function getSimulatorsData({
|
|||
'pages.simulateurs.médecin.title',
|
||||
'Simulateur de revenus pour médecin en libéral'
|
||||
),
|
||||
component: IndépendantPLSimulation,
|
||||
component: () => {
|
||||
return <IndépendantPLSimulation disableAnimation={false} />
|
||||
},
|
||||
},
|
||||
'chirurgien-dentiste': {
|
||||
config: dentisteConfig,
|
||||
|
@ -863,7 +896,9 @@ export function getSimulatorsData({
|
|||
'pages.simulateurs.chirurgien-dentiste.title',
|
||||
'Simulateur de revenus pour chirurgien-dentiste en libéral'
|
||||
),
|
||||
component: IndépendantPLSimulation,
|
||||
component: () => {
|
||||
return <IndépendantPLSimulation disableAnimation={false} />
|
||||
},
|
||||
},
|
||||
'sage-femme': {
|
||||
config: sageFemmeConfig,
|
||||
|
@ -879,7 +914,9 @@ export function getSimulatorsData({
|
|||
'pages.simulateurs.sage-femme.title',
|
||||
'Simulateur de revenus pour sage-femme en libéral'
|
||||
),
|
||||
component: IndépendantPLSimulation,
|
||||
component: () => {
|
||||
return <IndépendantPLSimulation disableAnimation={false} />
|
||||
},
|
||||
},
|
||||
'auxiliaire-médical': {
|
||||
config: auxiliaireConfig,
|
||||
|
@ -899,7 +936,9 @@ export function getSimulatorsData({
|
|||
'pages.simulateurs.auxiliaire.title',
|
||||
'Simulateur de revenus pour auxiliaire médical en libéral'
|
||||
),
|
||||
component: IndépendantPLSimulation,
|
||||
component: () => {
|
||||
return <IndépendantPLSimulation disableAnimation={false} />
|
||||
},
|
||||
},
|
||||
avocat: {
|
||||
config: avocatConfig,
|
||||
|
@ -915,7 +954,9 @@ export function getSimulatorsData({
|
|||
'pages.simulateurs.avocat.title',
|
||||
'Simulateur de revenus pour avocat en libéral'
|
||||
),
|
||||
component: IndépendantPLSimulation,
|
||||
component: () => {
|
||||
return <IndépendantPLSimulation disableAnimation={false} />
|
||||
},
|
||||
},
|
||||
'expert-comptable': {
|
||||
config: expertComptableConfig,
|
||||
|
@ -934,7 +975,9 @@ export function getSimulatorsData({
|
|||
'pages.simulateurs.expert-comptable.title',
|
||||
'Simulateur de revenus pour expert comptable et commissaire aux comptes en libéral'
|
||||
),
|
||||
component: IndépendantPLSimulation,
|
||||
component: () => {
|
||||
return <IndépendantPLSimulation disableAnimation={false} />
|
||||
},
|
||||
},
|
||||
'profession-libérale': {
|
||||
config: professionLibéraleConfig,
|
||||
|
@ -962,7 +1005,9 @@ export function getSimulatorsData({
|
|||
'pages.simulateurs.profession-libérale.title',
|
||||
'Simulateur de revenus pour profession libérale'
|
||||
),
|
||||
component: IndépendantPLSimulation,
|
||||
component: () => {
|
||||
return <IndépendantPLSimulation disableAnimation={false} />
|
||||
},
|
||||
},
|
||||
pamc: {
|
||||
private: true,
|
||||
|
@ -1063,35 +1108,40 @@ export function getSimulatorsData({
|
|||
component: ISSimulation,
|
||||
seoExplanations: (
|
||||
<Trans i18nKey="pages.simulateurs.is.seo">
|
||||
<h2>Comment est calculé l’impôt sur les sociétés ?</h2>
|
||||
<p>
|
||||
L’impôt sur les sociétés s’applique aux bénéfices réalisés par les
|
||||
sociétés de capitaux (SA, SAS, SASU, SARL, etc.) et sur option
|
||||
facultative pour certaines autres sociétés (EIRL, EURL, SNC, etc.).
|
||||
</p>
|
||||
<p>
|
||||
Il est calculé sur la base des bénéfices réalisés en France au cours
|
||||
de l’exercice comptable. La durée d’un exercice est normalement d’un
|
||||
an mais il peut être plus court ou plus long (notamment en début
|
||||
d’activité ou à la dissolution de l’entreprise). Dans ce cas le
|
||||
barème de l’impôt est pro-ratisé en fonction de la durée de
|
||||
l’exercice, ce qui est pris en compte dans le simulateur en
|
||||
modifiant les dates de début et de fin de l’exercice.
|
||||
</p>
|
||||
<h2>Taux réduit et régimes spécifiques</h2>
|
||||
<p>
|
||||
Les PME réalisant moins de 7,63 millions d’euros de chiffre
|
||||
d’affaires et dont le capital est détenu à 75% par des personnes
|
||||
physiques bénéficient d’un taux réduit d’impôt sur les sociétés. Ce
|
||||
taux est pris en compte sur le simulateur et il n’est pour l’instant
|
||||
pas possible de simuler l’inéligibilité aux taux réduits.
|
||||
</p>
|
||||
<p>
|
||||
Enfin il existe des régimes d’impositions spécifiques avec des taux
|
||||
dédiés pour certains types de plus-values (cession de titres,
|
||||
cession de brevets). Ces régimes ne sont pas intégrés dans le
|
||||
simulateur.
|
||||
</p>
|
||||
<section className="ui__ print-break-avoid">
|
||||
<h2>Comment est calculé l’impôt sur les sociétés ?</h2>
|
||||
<p>
|
||||
L’impôt sur les sociétés s’applique aux bénéfices réalisés par les
|
||||
sociétés de capitaux (SA, SAS, SASU, SARL, etc.) et sur option
|
||||
facultative pour certaines autres sociétés (EIRL, EURL, SNC,
|
||||
etc.).
|
||||
</p>
|
||||
<p>
|
||||
Il est calculé sur la base des bénéfices réalisés en France au
|
||||
cours de l’exercice comptable. La durée d’un exercice est
|
||||
normalement d’un an mais il peut être plus court ou plus long
|
||||
(notamment en début d’activité ou à la dissolution de
|
||||
l’entreprise). Dans ce cas le barème de l’impôt est pro-ratisé en
|
||||
fonction de la durée de l’exercice, ce qui est pris en compte dans
|
||||
le simulateur en modifiant les dates de début et de fin de
|
||||
l’exercice.
|
||||
</p>
|
||||
<h2>Taux réduit et régimes spécifiques</h2>
|
||||
<p>
|
||||
Les PME réalisant moins de 7,63 millions d’euros de chiffre
|
||||
d’affaires et dont le capital est détenu à 75% par des personnes
|
||||
physiques bénéficient d’un taux réduit d’impôt sur les sociétés.
|
||||
Ce taux est pris en compte sur le simulateur et il n’est pour
|
||||
l’instant pas possible de simuler l’inéligibilité aux taux
|
||||
réduits.
|
||||
</p>
|
||||
<p>
|
||||
Enfin il existe des régimes d’impositions spécifiques avec des
|
||||
taux dédiés pour certains types de plus-values (cession de titres,
|
||||
cession de brevets). Ces régimes ne sont pas intégrés dans le
|
||||
simulateur.
|
||||
</p>
|
||||
</section>
|
||||
</Trans>
|
||||
),
|
||||
nextSteps: ['salarié', 'comparaison-statuts'],
|
||||
|
|
|
@ -41,9 +41,9 @@ export default function VotreSituation() {
|
|||
}
|
||||
|
||||
const déclarations = déclarationsSelector(state)
|
||||
const régimeGénéralDisponible = activitésEffectuéesSelector(state).some(
|
||||
(activité) => régimeGénéralDisponibleSelector(state, activité)
|
||||
)
|
||||
const régimeGénéralDisponible = activitésEffectuéesSelector(
|
||||
state
|
||||
).some((activité) => régimeGénéralDisponibleSelector(state, activité))
|
||||
|
||||
return (
|
||||
<Animate.fromBottom>
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
import { hasConditions } from './activitésData'
|
||||
|
||||
const filterActivités =
|
||||
(filter = () => true) =>
|
||||
(state) =>
|
||||
Object.entries(state)
|
||||
.filter(
|
||||
([activitéTitle, activitéData]) =>
|
||||
activitéData.effectuée && filter(activitéData, activitéTitle)
|
||||
)
|
||||
.map(([activité]) => activité)
|
||||
const filterActivités = (filter = () => true) => (state) =>
|
||||
Object.entries(state)
|
||||
.filter(
|
||||
([activitéTitle, activitéData]) =>
|
||||
activitéData.effectuée && filter(activitéData, activitéTitle)
|
||||
)
|
||||
.map(([activité]) => activité)
|
||||
|
||||
export const nextActivitéSelector = (state, currentActivité) =>
|
||||
filterActivités(
|
||||
|
|
|
@ -22,7 +22,7 @@ import SatisfactionChart from './SatisfactionChart'
|
|||
import { Page, PageChapter2, PageSatisfaction, StatsStruct } from './types'
|
||||
import { formatDay, formatMonth, Indicator, Indicators } from './utils'
|
||||
|
||||
const stats = statsJson as unknown as StatsStruct
|
||||
const stats = (statsJson as unknown) as StatsStruct
|
||||
|
||||
type Period = 'mois' | 'jours'
|
||||
type Chapter2 = PageChapter2 | 'PAM'
|
||||
|
|
|
@ -103,9 +103,9 @@ function simulation(
|
|||
unfoldedStep: null,
|
||||
}
|
||||
case 'BATCH_UPDATE_SITUATION': {
|
||||
return (
|
||||
Object.entries(action.situation as any) as Array<[Names, unknown]>
|
||||
).reduce<Simulation | null>(
|
||||
return (Object.entries(action.situation as any) as Array<
|
||||
[Names, unknown]
|
||||
>).reduce<Simulation | null>(
|
||||
(newState, [fieldName, value]) =>
|
||||
simulation(newState, {
|
||||
type: 'UPDATE_SITUATION',
|
||||
|
|
|
@ -97,21 +97,21 @@ const QUESTION_LIST: Array<Question> = keys(
|
|||
mergeAll(flatten(Object.values(LEGAL_STATUS_DETAILS)))
|
||||
)
|
||||
|
||||
const isCompatibleStatusWith =
|
||||
(answers: any) =>
|
||||
(statusRequirements: LegalStatusRequirements): boolean => {
|
||||
const stringify = map((x) => (!isNil(x) ? JSON.stringify(x) : x))
|
||||
const answerCompatibility = Object.values(
|
||||
mergeWith(
|
||||
(answer, statusValue) =>
|
||||
isNil(answer) || isNil(statusValue) || answer === statusValue,
|
||||
stringify(statusRequirements as any),
|
||||
stringify(answers)
|
||||
)
|
||||
const isCompatibleStatusWith = (answers: any) => (
|
||||
statusRequirements: LegalStatusRequirements
|
||||
): boolean => {
|
||||
const stringify = map((x) => (!isNil(x) ? JSON.stringify(x) : x))
|
||||
const answerCompatibility = Object.values(
|
||||
mergeWith(
|
||||
(answer, statusValue) =>
|
||||
isNil(answer) || isNil(statusValue) || answer === statusValue,
|
||||
stringify(statusRequirements as any),
|
||||
stringify(answers)
|
||||
)
|
||||
const isCompatibleStatus = answerCompatibility.every((x) => x !== false)
|
||||
return isCompatibleStatus
|
||||
}
|
||||
)
|
||||
const isCompatibleStatus = answerCompatibility.every((x) => x !== false)
|
||||
return isCompatibleStatus
|
||||
}
|
||||
const possibleStatus = (
|
||||
answers: Array<LegalStatusRequirements> | LegalStatusRequirements
|
||||
): Record<LegalStatus, boolean> =>
|
||||
|
@ -140,23 +140,24 @@ export const nextQuestionSelector = (state: RootState): Question | null => {
|
|||
).filter(isCompatibleStatusWith(legalStatusRequirements) as any)
|
||||
|
||||
const unansweredQuestions = difference(QUESTION_LIST, questionAnswered)
|
||||
const shannonEntropyByQuestion = unansweredQuestions.map(
|
||||
(question): [typeof question, number] => {
|
||||
const answerPopulation = Object.values(possibleStatusList).map(
|
||||
(status: any) => status[question]
|
||||
const shannonEntropyByQuestion = unansweredQuestions.map((question): [
|
||||
typeof question,
|
||||
number
|
||||
] => {
|
||||
const answerPopulation = Object.values(possibleStatusList).map(
|
||||
(status: any) => status[question]
|
||||
)
|
||||
const frequencyOfAnswers = Object.values(
|
||||
countBy(
|
||||
(x) => x,
|
||||
answerPopulation.filter((x) => x !== undefined)
|
||||
)
|
||||
const frequencyOfAnswers = Object.values(
|
||||
countBy(
|
||||
(x) => x,
|
||||
answerPopulation.filter((x) => x !== undefined)
|
||||
)
|
||||
).map((numOccurrence) => numOccurrence / answerPopulation.length)
|
||||
const shannonEntropy = -frequencyOfAnswers
|
||||
.map((p) => p * Math.log2(p))
|
||||
.reduce(add, 0)
|
||||
return [question, shannonEntropy]
|
||||
}
|
||||
)
|
||||
).map((numOccurrence) => numOccurrence / answerPopulation.length)
|
||||
const shannonEntropy = -frequencyOfAnswers
|
||||
.map((p) => p * Math.log2(p))
|
||||
.reduce(add, 0)
|
||||
return [question, shannonEntropy]
|
||||
})
|
||||
|
||||
const sortedPossibleNextQuestions = sortBy(
|
||||
([, entropy]) => -entropy,
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
import * as Sentry from '@sentry/react'
|
||||
import { Integrations } from '@sentry/tracing'
|
||||
|
||||
let branch: string | undefined =
|
||||
process.env.GITHUB_REF?.split('/')?.slice(-1)?.[0]
|
||||
let branch: string | undefined = process.env.GITHUB_REF?.split('/')?.slice(
|
||||
-1
|
||||
)?.[0]
|
||||
|
||||
if (branch === 'merge') {
|
||||
branch = process.env.GITHUB_HEAD_REF
|
||||
|
@ -27,7 +28,8 @@ export const productionMode = ['master', 'next'].includes(branch ?? '')
|
|||
|
||||
if (productionMode) {
|
||||
Sentry.init({
|
||||
dsn: 'https://92bbc21937b24136a2fe1b1d922b000f@o548798.ingest.sentry.io/5745615',
|
||||
dsn:
|
||||
'https://92bbc21937b24136a2fe1b1d922b000f@o548798.ingest.sentry.io/5745615',
|
||||
integrations: [new Integrations.BrowserTracing()],
|
||||
release,
|
||||
// Set tracesSampleRate to 1.0 to capture 100%
|
||||
|
|
|
@ -13,8 +13,11 @@ let runExamples = (examples, rule) =>
|
|||
const situation = Object.entries(ex.situation).reduce(
|
||||
(acc, [name, value]) => ({
|
||||
...acc,
|
||||
[disambiguateRuleReference(engine.parsedRules, rule.dottedName, name)]:
|
||||
value,
|
||||
[disambiguateRuleReference(
|
||||
engine.parsedRules,
|
||||
rule.dottedName,
|
||||
name
|
||||
)]: value,
|
||||
}),
|
||||
{}
|
||||
)
|
||||
|
|
|
@ -295,14 +295,16 @@ const traversePlancherNode: TraverseFunction<'plancher'> = (fn, node) => ({
|
|||
},
|
||||
})
|
||||
|
||||
const traverseRésoudreRéférenceCirculaireNode: TraverseFunction<'résoudre référence circulaire'> =
|
||||
(fn, node) => ({
|
||||
...node,
|
||||
explanation: {
|
||||
...node.explanation,
|
||||
valeur: fn(node.explanation.valeur),
|
||||
},
|
||||
})
|
||||
const traverseRésoudreRéférenceCirculaireNode: TraverseFunction<'résoudre référence circulaire'> = (
|
||||
fn,
|
||||
node
|
||||
) => ({
|
||||
...node,
|
||||
explanation: {
|
||||
...node.explanation,
|
||||
valeur: fn(node.explanation.valeur),
|
||||
},
|
||||
})
|
||||
|
||||
const traversePlafondNode: TraverseFunction<'plafond'> = (fn, node) => ({
|
||||
...node,
|
||||
|
|
|
@ -2,35 +2,33 @@ import { Evaluation, Unit } from './AST/types'
|
|||
import { simplifyNodeUnit } from './nodeUnits'
|
||||
import { formatUnit, serializeUnit } from './units'
|
||||
|
||||
export const numberFormatter =
|
||||
({
|
||||
export const numberFormatter = ({
|
||||
style,
|
||||
maximumFractionDigits = 2,
|
||||
minimumFractionDigits = 0,
|
||||
language,
|
||||
}: {
|
||||
style?: string
|
||||
maximumFractionDigits?: number
|
||||
minimumFractionDigits?: number
|
||||
language?: string
|
||||
}) => (value: number) => {
|
||||
// When we format currency we don't want to display a single decimal digit
|
||||
// ie 8,1€ but we want to display 8,10€
|
||||
const adaptedMinimumFractionDigits =
|
||||
style === 'currency' &&
|
||||
maximumFractionDigits >= 2 &&
|
||||
minimumFractionDigits === 0 &&
|
||||
!Number.isInteger(value)
|
||||
? 2
|
||||
: minimumFractionDigits
|
||||
return Intl.NumberFormat(language, {
|
||||
style,
|
||||
maximumFractionDigits = 2,
|
||||
minimumFractionDigits = 0,
|
||||
language,
|
||||
}: {
|
||||
style?: string
|
||||
maximumFractionDigits?: number
|
||||
minimumFractionDigits?: number
|
||||
language?: string
|
||||
}) =>
|
||||
(value: number) => {
|
||||
// When we format currency we don't want to display a single decimal digit
|
||||
// ie 8,1€ but we want to display 8,10€
|
||||
const adaptedMinimumFractionDigits =
|
||||
style === 'currency' &&
|
||||
maximumFractionDigits >= 2 &&
|
||||
minimumFractionDigits === 0 &&
|
||||
!Number.isInteger(value)
|
||||
? 2
|
||||
: minimumFractionDigits
|
||||
return Intl.NumberFormat(language, {
|
||||
style,
|
||||
currency: 'EUR',
|
||||
maximumFractionDigits,
|
||||
minimumFractionDigits: adaptedMinimumFractionDigits,
|
||||
}).format(value)
|
||||
}
|
||||
currency: 'EUR',
|
||||
maximumFractionDigits,
|
||||
minimumFractionDigits: adaptedMinimumFractionDigits,
|
||||
}).format(value)
|
||||
}
|
||||
|
||||
export const formatCurrency = (
|
||||
nodeValue: number | undefined,
|
||||
|
@ -170,10 +168,9 @@ export function serializeValue(
|
|||
{ nodeValue, unit }: { nodeValue: Evaluation; unit?: Unit },
|
||||
{ format }: { format: formatUnit }
|
||||
) {
|
||||
const serializedUnit = (
|
||||
unit && typeof nodeValue === 'number'
|
||||
? serializeUnit(unit, nodeValue, format)
|
||||
: ''
|
||||
const serializedUnit = (unit && typeof nodeValue === 'number'
|
||||
? serializeUnit(unit, nodeValue, format)
|
||||
: ''
|
||||
)?.replace(/\s*\/\s*/g, '/')
|
||||
return `${nodeValue} ${serializedUnit}`.trim()
|
||||
}
|
||||
|
|
|
@ -2,23 +2,19 @@
|
|||
The advantage of putting them here is to get prettier's JS formatting, since Nealrey doesn't support it https://github.com/kach/nearley/issues/310 */
|
||||
import { normalizeDateString } from './date'
|
||||
|
||||
export let binaryOperation =
|
||||
(operationType) =>
|
||||
([A, , operator, , B]) => ({
|
||||
[operator]: {
|
||||
operationType,
|
||||
explanation: [A, B],
|
||||
},
|
||||
})
|
||||
export let binaryOperation = (operationType) => ([A, , operator, , B]) => ({
|
||||
[operator]: {
|
||||
operationType,
|
||||
explanation: [A, B],
|
||||
},
|
||||
})
|
||||
|
||||
export let unaryOperation =
|
||||
(operationType) =>
|
||||
([operator, , A]) => ({
|
||||
[operator]: {
|
||||
operationType,
|
||||
explanation: [number([{ value: '0' }]), A],
|
||||
},
|
||||
})
|
||||
export let unaryOperation = (operationType) => ([operator, , A]) => ({
|
||||
[operator]: {
|
||||
operationType,
|
||||
explanation: [number([{ value: '0' }]), A],
|
||||
},
|
||||
})
|
||||
|
||||
export let variable = ([firstFragment, nextFragment], _, reject) => {
|
||||
const fragments = [firstFragment, ...nextFragment].map(({ value }) => value)
|
||||
|
|
|
@ -18,7 +18,7 @@ export type RecalculNode = {
|
|||
|
||||
const evaluateRecalcul: EvaluationFunction<'recalcul'> = function (node) {
|
||||
if (this.cache._meta.inRecalcul) {
|
||||
return defaultNode(null) as any as RecalculNode & EvaluatedNode
|
||||
return (defaultNode(null) as any) as RecalculNode & EvaluatedNode
|
||||
}
|
||||
|
||||
const amendedSituation = node.explanation.amendedSituation
|
||||
|
|
|
@ -14,83 +14,84 @@ export type RésoudreRéférenceCirculaireNode = {
|
|||
nodeKind: 'résoudre référence circulaire'
|
||||
}
|
||||
|
||||
export const evaluateRésoudreRéférenceCirculaire: EvaluationFunction<'résoudre référence circulaire'> =
|
||||
function (node) {
|
||||
const originalCache = this.cache
|
||||
let inversionNumberOfIterations = 0
|
||||
export const evaluateRésoudreRéférenceCirculaire: EvaluationFunction<'résoudre référence circulaire'> = function (
|
||||
node
|
||||
) {
|
||||
const originalCache = this.cache
|
||||
let inversionNumberOfIterations = 0
|
||||
|
||||
const evaluateWithValue = (
|
||||
n: number,
|
||||
unit: Unit = { numerators: [], denominators: [] }
|
||||
) => {
|
||||
inversionNumberOfIterations++
|
||||
this.resetCache()
|
||||
const evaluateWithValue = (
|
||||
n: number,
|
||||
unit: Unit = { numerators: [], denominators: [] }
|
||||
) => {
|
||||
inversionNumberOfIterations++
|
||||
this.resetCache()
|
||||
|
||||
this.parsedSituation[node.explanation.ruleToSolve] = {
|
||||
unit: unit,
|
||||
nodeKind: 'unité',
|
||||
explanation: {
|
||||
nodeKind: 'constant',
|
||||
nodeValue: n,
|
||||
type: 'number',
|
||||
} as ConstantNode,
|
||||
} as UnitéNode
|
||||
return this.evaluate(node.explanation.valeur)
|
||||
}
|
||||
|
||||
let nodeValue: number | null | undefined = null
|
||||
|
||||
const x0 = 0
|
||||
let valeur = evaluateWithValue(x0)
|
||||
|
||||
const y0 = valeur.nodeValue as number
|
||||
const unit = valeur.unit
|
||||
const missingVariables = valeur.missingVariables
|
||||
let i = 0
|
||||
if (y0 !== null) {
|
||||
// The `uniroot` function parameter. It will be called with its `min` and
|
||||
// `max` arguments, so we can use our cached nodes if the function is called
|
||||
// with the already computed x1 or x2.
|
||||
const test = (x: number): number => {
|
||||
if (x === x0) {
|
||||
return y0 - x0
|
||||
}
|
||||
valeur = evaluateWithValue(x, unit)
|
||||
const y = valeur.nodeValue
|
||||
i++
|
||||
return (y as number) - x
|
||||
}
|
||||
|
||||
const defaultMin = -1_000_000
|
||||
const defaultMax = 100_000_000
|
||||
|
||||
nodeValue = uniroot(test, defaultMin, defaultMax, 0.5, 30, 2)
|
||||
}
|
||||
|
||||
this.cache = originalCache
|
||||
|
||||
if (nodeValue === undefined) {
|
||||
nodeValue = null
|
||||
this.cache._meta.inversionFail = true
|
||||
}
|
||||
if (nodeValue !== null) {
|
||||
valeur = evaluateWithValue(nodeValue, unit)
|
||||
}
|
||||
delete this.parsedSituation[node.explanation.ruleToSolve]
|
||||
|
||||
return {
|
||||
...node,
|
||||
unit,
|
||||
nodeValue,
|
||||
this.parsedSituation[node.explanation.ruleToSolve] = {
|
||||
unit: unit,
|
||||
nodeKind: 'unité',
|
||||
explanation: {
|
||||
...node.explanation,
|
||||
valeur,
|
||||
inversionNumberOfIterations,
|
||||
},
|
||||
missingVariables,
|
||||
}
|
||||
nodeKind: 'constant',
|
||||
nodeValue: n,
|
||||
type: 'number',
|
||||
} as ConstantNode,
|
||||
} as UnitéNode
|
||||
return this.evaluate(node.explanation.valeur)
|
||||
}
|
||||
|
||||
let nodeValue: number | null | undefined = null
|
||||
|
||||
const x0 = 0
|
||||
let valeur = evaluateWithValue(x0)
|
||||
|
||||
const y0 = valeur.nodeValue as number
|
||||
const unit = valeur.unit
|
||||
const missingVariables = valeur.missingVariables
|
||||
let i = 0
|
||||
if (y0 !== null) {
|
||||
// The `uniroot` function parameter. It will be called with its `min` and
|
||||
// `max` arguments, so we can use our cached nodes if the function is called
|
||||
// with the already computed x1 or x2.
|
||||
const test = (x: number): number => {
|
||||
if (x === x0) {
|
||||
return y0 - x0
|
||||
}
|
||||
valeur = evaluateWithValue(x, unit)
|
||||
const y = valeur.nodeValue
|
||||
i++
|
||||
return (y as number) - x
|
||||
}
|
||||
|
||||
const defaultMin = -1_000_000
|
||||
const defaultMax = 100_000_000
|
||||
|
||||
nodeValue = uniroot(test, defaultMin, defaultMax, 0.5, 30, 2)
|
||||
}
|
||||
|
||||
this.cache = originalCache
|
||||
|
||||
if (nodeValue === undefined) {
|
||||
nodeValue = null
|
||||
this.cache._meta.inversionFail = true
|
||||
}
|
||||
if (nodeValue !== null) {
|
||||
valeur = evaluateWithValue(nodeValue, unit)
|
||||
}
|
||||
delete this.parsedSituation[node.explanation.ruleToSolve]
|
||||
|
||||
return {
|
||||
...node,
|
||||
unit,
|
||||
nodeValue,
|
||||
explanation: {
|
||||
...node.explanation,
|
||||
valeur,
|
||||
inversionNumberOfIterations,
|
||||
},
|
||||
missingVariables,
|
||||
}
|
||||
}
|
||||
|
||||
export default function parseRésoudreRéférenceCirculaire(v, context: Context) {
|
||||
return {
|
||||
explanation: {
|
||||
|
|
|
@ -101,12 +101,13 @@ const equals = <T>(a: T, b: T) => {
|
|||
}
|
||||
}
|
||||
|
||||
export const removeOnce =
|
||||
<T>(element: T, eqFn: (a: T, b: T) => boolean = equals) =>
|
||||
(list: Array<T>): Array<T> => {
|
||||
const index = list.findIndex((e) => eqFn(e, element))
|
||||
return list.filter((_, i) => i !== index)
|
||||
}
|
||||
export const removeOnce = <T>(
|
||||
element: T,
|
||||
eqFn: (a: T, b: T) => boolean = equals
|
||||
) => (list: Array<T>): Array<T> => {
|
||||
const index = list.findIndex((e) => eqFn(e, element))
|
||||
return list.filter((_, i) => i !== index)
|
||||
}
|
||||
|
||||
const simplify = (
|
||||
unit: Unit,
|
||||
|
|
|
@ -8,7 +8,8 @@ import 'regenerator-runtime/runtime'
|
|||
import App from './components/App'
|
||||
|
||||
Sentry.init({
|
||||
dsn: 'https://92bbc21937b24136a2fe1b1d922b000f@o548798.ingest.sentry.io/5745615',
|
||||
dsn:
|
||||
'https://92bbc21937b24136a2fe1b1d922b000f@o548798.ingest.sentry.io/5745615',
|
||||
integrations: [new Integrations.BrowserTracing()],
|
||||
|
||||
// Set tracesSampleRate to 1.0 to capture 100%
|
||||
|
|
|
@ -2,9 +2,8 @@ import { VariationNode } from 'publicodes/source/mecanisms/variations'
|
|||
import Explanation from '../Explanation'
|
||||
|
||||
export default function Replacement(node: VariationNode) {
|
||||
const applicableReplacement = node.explanation.find(
|
||||
(ex) => ex.satisfied
|
||||
)?.consequence
|
||||
const applicableReplacement = node.explanation.find((ex) => ex.satisfied)
|
||||
?.consequence
|
||||
const replacedNode = node.explanation.slice(-1)[0].consequence
|
||||
return <Explanation node={applicableReplacement || replacedNode} />
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue