écocoll: gestion des exonérations à plusieurs conditions

pull/518/head
Mael 2019-05-21 15:06:19 +02:00
parent 5b2efdf12f
commit 46e67305bb
4 changed files with 48 additions and 37 deletions

View File

@ -1,14 +1,15 @@
import { all } from 'ramda'
import { ScrollToTop } from 'Components/utils/Scroll'
import withSitePaths from 'Components/utils/withSitePaths'
import React, { useState, useContext } from 'react'
import emoji from 'react-easy-emoji'
import { Link } from 'react-router-dom'
import Animate from 'Ui/animate'
import { CheckItem } from 'Ui/Checklist'
import activités from './activités.yaml'
import { createMarkdownDiv } from 'Engine/marked'
import { StoreContext } from './StoreContext'
import { NextButton } from './ActivitésSelection'
import Exonérations from './Exonérations'
export default withSitePaths(function LocationMeublée({
sitePaths,
@ -23,17 +24,6 @@ export default withSitePaths(function LocationMeublée({
data = activités.find(({ titre }) => titre === title),
answers = activityAnswers[title] || {}
if (title === 'Co-consommation')
return (
<NextButton
{...{
activityAnswers,
selectedActivities,
disabled: false
}}
/>
)
return (
<section
css={`
@ -50,21 +40,11 @@ export default withSitePaths(function LocationMeublée({
{emoji(data.icônes)} {data.titre}
</h1>
{createMarkdownDiv(data.explication)}
{data.exonération && (
<CheckItem
name={data.exonération.titre}
title={data.exonération.titre}
explanations={createMarkdownDiv(data.exonération.explanation)}
onChange={checked =>
dispatch({
type: 'UPDATE_ACTIVITY',
title,
data: { ...answers, exoneration: checked }
})
}
/>
)}
{answers.exoneration ? (
<Exonérations
{...{ exonérations: data.exonérations, dispatch, title }}
/>
{answers.exonerations &&
all(item => item === true, answers.exonerations) ? (
<p>
{emoji('😌 ')}
En ce qui concerne les revenus de cette activité, vous n'avez pas

View File

@ -0,0 +1,37 @@
import React from 'react'
import { createMarkdownDiv } from 'Engine/marked'
import { CheckItem } from 'Ui/Checklist'
export default ({ exonérations, dispatch, answers, title }) => {
if (!exonérations) return null
let multiple = exonérations['toutes ces conditions']
let items = Array.isArray(multiple) ? multiple : [exonérations]
return (
<>
{items.length > 1 && <p>Respectez-vous ces conditions ? </p>}
{items.map(({ titre, explication }, index) => (
<CheckItem
name={titre}
title={titre}
explanations={createMarkdownDiv(explication)}
onChange={checked =>
dispatch({
type: 'UPDATE_ACTIVITY',
title,
data: {
...answers,
exonerations: [
answers.exonerations.map((v, answerIndex) =>
answerIndex === index ? checked : v
)
]
}
})
}
/>
))}
</>
)
}

View File

@ -7,14 +7,14 @@
> Exemples de plateformes : AirBnb, Abritel...
seuil pro: 23000
exonération:
exonérations:
# https://www.pap.fr/bailleur/impots-taxes/location-meublee-quelle-fiscalite/a1787/location-meublee-les-exonerations
titre: Il s'agit d'une pièce dans ma résidence principale
explication: |
Vous donnez en location une ou plusieurs pièces de votre habitation principale : vous êtes exonéré d'impôt sous réserve que la ou les pièces louée(s) constituent la résidence principale du locataire ou sa résidence temporaire. Pour bénéficier de cette dernière condition, le locataire doit pouvoir justifier d'un contrat de travail saisonnier ou d'un CDD d'usage. Le prix de la location doit être fixé dans des limites raisonnables. Pour les baux conclus en 2019, le loyer ne doit pas dépasser 187 € par an et par mètre carré en Île-de-France et 138 € par mètre carré et par an dans les autres régions. Ces plafonds sont relevés au 1er janvier de chaque année.
> Vous louez à Paris, dans votre résidence principale, une chambre de 18 m² à un étudiant. Pour être exonéré d'impôt, le loyer mensuel hors charges ne doit pas dépasser en 2019 (187 x 18) / 12 = 280 €.
# TODO implémenter ces autres possibilités de la location meublée
# TODO implémenter ces autres possibilités de la location meublée
autres possibilités:
- titre: location de logement meublé de tourisme classé
seuil pro: 23000
@ -40,19 +40,18 @@
icônes: 📦 🧶
exemples: Leboncoin, eBay, Etsy...
seuil pro: 0
exonération:
exonérations:
titre: Vous vendez de façon occasionnelle des biens qui vous ont servi en premier lieu
explication: |
A l'inverse, sil sagit de biens que vous avez achetés ou que vous avez fabriqués en vue de les revendre (exemple : vous réalisez des bijoux, des objets de décoration…), il sagit alors dune activité à caractère professionnel, qui doit être déclarée. Vous devez enregistrer cette activité.
- titre: Co-consommation
icônes: 👥 🚗
exemples: Blablacar, ...
seuil pro: 0
explication: |
La co-consommation, c'est par exemple partager votre voiture (co-voiturage), des repas, ou encore des sorties.
> Exemples de plateforme : Blablacar
> Exemple de plateforme : Blablacar
exonérations:
toutes ces conditions:

View File

@ -32,11 +32,6 @@ export default withSitePaths(function ÉconomieCollaborative({ sitePaths }) {
path={sitePaths.économieCollaborative.activités.locationMeublée}
component={LocationMeublée}
/>
<Route
exact
path={sitePaths.économieCollaborative.activités.coConsommation}
component={CoConsommation}
/>
<Route
exact
path={sitePaths.économieCollaborative.votreSituation}