-
Notifications
You must be signed in to change notification settings - Fork 72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Demo [économie collaborative] #518
Conversation
@johangirod Mes réflexions les plus récentes sur l'économie collaborative. Simulation de l'impôtJ'ai fait le tour des simulateurs d'impôt. Ils parlent tous le même vocabulaire, posent tous les mêmes questions sous la même forme : un formulaire à ~10 questions. Comme on le voit dans cette question qui revient tout le temps, On peut donc faire une copie de ces formulaires très facilement, mais je vois peu de valeur à en ajouter un de plus. Petite ébauche sur #524 , que je ne vais donc pas continuer pour l'instant. Par contre, on peut faire beaucoup plus intuitif, en connectant nos simulateurs salarié (partir du brut pour calculer le net imposable), indépendant, auto-entreprise et assimilé salarié, je pense qu'on peut faire un calcul de l'impôt qui justement évite de poser ces questions. On peut même proposer à l'utilisateur : "vous avez fait une simulation de SASU, voulez-vous qu'on l'intègre dans cette simulation" ? On aurait alors géré une bonne partie des questions de revenu, et il resterait, dans un second temps, simplement à ajouter la situation du conjoint éventuel (un clone), des enfants, et les éventuelles réductions et crédits. Parcours écocollJe reviens au parcours économie collaborative. Je reste sur cette idée de deux blocs :
Je reviens alors à ma première ébauche de design : je pense qu'il faut faire saisir le revenu de chaque type d'activité collaborative, car ça permet de remplir les cases revenu du calcul de l'impôt (sauf si revenu de la co-conso non imposables), même si en-dessous d'un seuil pas de cotisations sociales. Pour que ce soit plus découvrable, on peut comme tu as commencé à le faire saisir par la suite sur chaque page d'activité, après des questions éventuelles (type de location meublée par exemple), pour afficher les seuils qui déclenchent l'activité professionnelle. ImplémentationJe me dis que faire rentrer ces étapes de déclaration des revenus de l'éco-coll dans le moteur est trop délicat, au moins pour la v1. On peut pour s'en rapprocher essayer d'abstraire un maximum de notions en YAML, par exemple les seuils. On verra ensuite s'il émerge quelque chose qui peut rentrer dans le moteur. Par contre, gardons le calcul des éléments numériques dans le moteur : une bonne partie y est déjà. Multi-activité
Si aucun seuil pro n'est dépassé, c'est simple pour les cotisations et les démarches. Faut voir alors comment calculer l'impôt. Si je comprends bien, on n'est pas obligé de créer une auto-entreprise, simplement les déclarer au régime micro (on peut se limiter à ça au début, ignorer le choix du régime réel). Mais si on a une auto-entreprise à côté, attention au risque de dépassement des seuils !
Si un seuil est dépassé, c'est relativement simple encore, car on propose alors une des 3 issues possibles (AE, indep, régime général), et on pourra faire la simulation numérique assez facilement. Mais si deux seuils pro, ou encore un seuil pro économie collaborative + une entreprise déjà à côté, alors ça se corse : il faut alors gérer une entreprise avec plusieurs activités, et ça a l'air d'être un casse-tête. Quand l'URSSAF dit dans son PDF sur l'économie collaborative "Cumul avec mes revenus professionnels indépendants sans aucune démarche", je crois qu'ils ne considèrent que la question de la déclaration des revenus pour le calcul des cotiz, et pas la question de la gestion d'entreprise ! Voici une doc de Shine pour l'AE. Pour les sociétés, pareil il faut remplir un CERFA (papier ou pas forcément mieux, en ligne), greffe, publicité dans un journal etc. Donc pour ce cas, on peut dans un premier temps dire : "voilà ce que vous devez faire, voilà de la doc, prenez un comptable 😞 ". Pour le calcul, il faudra l'intégrer, c'est aussi assez complexe, mais gérable : https://www.shine.fr/blog/auto-entrepreneur-activité-secondaire. Si l'utilisateur a 3 activités pro différentes, alors je suis perdu : est-ce possible ? Régime général et cumulJe note que je viens de comprendre que l'option régime générale n'est pas dispo que pour ceux ayant un travail salarié. Je comprends que le public non salarié est même la cible de ce dispositif 😄 Il faut noter que pour le régime général, le cumul semble bien plus simple (au moins tant qu'on ne dépasse pas le seuil de ) :
Ca me semble intéressant (s'il savère que c'est bien le cas), de souligner l'option qui permettra d'éviter toute la complexité de la gestion d'entreprise. |
On affiche simplement à l'utilisateur quelles obligations il aura après quelques pages de questions simples Pour l'instant la page finale est factice
v1
v2
Avant de merger
|
J'ai testé rapidement un parcours, et ça marche plutôt bien 👍 .
|
<div | ||
className="markdown" | ||
css={` | ||
blockquote { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C'est bizarre d'avoir le style ici plutôt qu'au niveau du site. On a envie de se dire que le markdown hérite du style du site, et qu'il n'impose pas le sien. Je mettrai cette partie dans index.css
@@ -0,0 +1,71 @@ | |||
import classnames from 'classnames' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A supprimer
@@ -0,0 +1,77 @@ | |||
import { ScrollToTop } from 'Components/utils/Scroll' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A supprimer
import { BackToSelection, allTrue } from './Activité' | ||
import { getActivité } from './reducers' | ||
|
||
let nothingToDo = activityAnswers => a => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remplacer a
par activité
let nothingToDo = activityAnswers => a => { | |
let nothingToDo = activityAnswers => activité => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ou plutôt que a, parler d'id
ou de name
import { getActivité } from './reducers' | ||
|
||
let nothingToDo = activityAnswers => a => { | ||
let answers = activityAnswers[a] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
let answers = activityAnswers[a] | |
let answers = activityAnswers[activité] |
import Animate from 'Ui/animate' | ||
import checklistSvg from './images/checklist.svg' | ||
import { StoreContext } from './StoreContext' | ||
import { BackToSelection, allTrue } from './Activité' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je mettrai allTrue dans utils
import { BackToSelection, allTrue } from './Activité' | ||
import { getActivité } from './reducers' | ||
|
||
let nothingToDo = activityAnswers => a => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Et plutôt que nothingToDo
: nothingToDeclare
} = useContext(StoreContext), | ||
selected = selectedActivities.filter(a => !getActivité(a).activités) | ||
|
||
let A = selected.filter(nothingToDo(activityAnswers)).map(makeListItem), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A,B,C,D ? C'est un peu cryptique ^^
Renseigner ma situation | ||
</Link> | ||
)} | ||
{A.length > 0 && ( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A.length
tout court marche aussi et est idiomatique
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je viens de m'apercevoir que changer la co-consommation en opt-out plutôt qu'opt-in va devoir demander d'ajouter un cas dans le yaml. Mais je pense que l'utilisateur sera gagnant.
|
Superseded by #588 |
[mael]
Voilà des questions évoqués dont la réponse aiderait beaucoup de gens :