Améliore les simulateurs indépendants

indeps-démo
Johan Girod 2019-01-11 11:24:29 +01:00
parent f212fa6c7f
commit e8b689b010
7 changed files with 38 additions and 27 deletions

View File

@ -6,7 +6,6 @@ import React from 'react'
import emoji from 'react-easy-emoji'
import { connect } from 'react-redux'
import { Link } from 'react-router-dom'
import { formValueSelector } from 'redux-form'
import {
analysisWithDefaultsSelector,
flatRulesSelector
@ -45,7 +44,6 @@ export default compose(
// This is not elegant
let getRatioPrélèvements = analysis =>
analysis.targets.find(t => t.dottedName === 'ratio de prélèvements')
return (
<div id="comparative-targets">
@ -63,8 +61,7 @@ export default compose(
test.includes('base des cotisations > plafond')
)
let ratioPrélèvements = getRatioPrélèvements(analysis)
let ratioPrélèvements = getRatioPrélèvements(analysis)
return (
<li
@ -99,7 +96,12 @@ export default compose(
<small>
Soit{' '}
{Math.round((1 - ratioPrélèvements.nodeValue) * 100)} %
de <Link style={{color: 'white'}} to={'/règle/' + ratioPrélèvements.dottedName} >prélèvements</Link>
de{' '}
<Link
style={{ color: 'white' }}
to={'/règle/' + ratioPrélèvements.dottedName}>
prélèvements
</Link>
</small>
</>
)}

View File

@ -23,14 +23,25 @@ export default compose(
displayAnswers: false
}
render() {
let { children, noNextSteps, previousAnswers } = this.props
let {
children,
noNextSteps,
previousAnswers,
noUserInput,
hideUntilUserInput
} = this.props
return (
<>
{this.state.displayAnswers && (
<Answers onClose={() => this.setState({ displayAnswers: false })} />
)}
<Animate.fromBottom> {children}</Animate.fromBottom>
{!isEmpty(previousAnswers) && (
<button
className="ui__ button small plain"
onClick={() => this.setState({ displayAnswers: true })}>
Mes réponses
</button>
)}
<Conversation
textColourOnWhite={this.props.colours.textColourOnWhite}
/>
@ -40,12 +51,8 @@ export default compose(
<p>Vous avez atteint l'estimation la plus précise.</p>
</>
)}
{!isEmpty(previousAnswers) && (
<button
className="ui__ button small plain"
onClick={() => this.setState({ displayAnswers: true })}>
Mes réponses
</button>
{(!hideUntilUserInput || !noUserInput) && (
<Animate.fromBottom>{children}</Animate.fromBottom>
)}
</>
)

View File

@ -1,5 +1,6 @@
import classNames from 'classnames'
import InputSuggestions from 'Components/conversation/InputSuggestions'
import PeriodSwitch from 'Components/PeriodSwitch'
import withColours from 'Components/utils/withColours'
import withLanguage from 'Components/utils/withLanguage'
import { encodeRuleName, findRuleByDottedName } from 'Engine/rules'
@ -19,7 +20,6 @@ import {
} from 'Selectors/analyseSelectors'
import { normalizeBasePath } from '../utils'
import AnimatedTargetValue from './AnimatedTargetValue'
import Controls from './Controls'
import CurrencyInput from './CurrencyInput/CurrencyInput'
import ProgressCircle from './ProgressCircle'
import './TargetSelection.css'
@ -60,7 +60,7 @@ export default compose(
} = this.props
return (
<div id="targetSelection">
<Controls {...{ controls }} />
{/* <Controls {...{ controls }} /> */}
<section
id="targetsContainer"
style={{
@ -73,6 +73,7 @@ export default compose(
}}>
{this.renderOutputList()}
</section>
<PeriodSwitch />
</div>
)
}

View File

@ -8,10 +8,7 @@ objectifs:
- entreprise . chiffre d'affaires
- entreprise . charges
- revenu disponible
questions:
blacklist:
- entreprise . chiffre d'affaires
- revenu disponible
situation:
micro entreprise: non
indépendant: non

View File

@ -2549,7 +2549,8 @@
formule: revenu net de cotisations - impôt . impôt sur le revenu à payer
- nom: revenu disponible
titre: Revenu disponible (net de cotisations et d'impôt)
titre: Revenu disponible
résumé: Après déductions des cotisations et de l'impôt
période: flexible
question: Quel revenu voulez-vous toucher ?
formule: revenu net d'impôt - entreprise . charges non déductibles
@ -2557,20 +2558,24 @@
- espace: entreprise
nom: chiffre d'affaires
question: Quel est votre chiffre d'affaires H.T. ?
résumé: Le montant des ventes réalisées
période: flexible
format: euros
- espace: entreprise
- espace: entreprise
nom: rémunération totale du dirigeant
description: C'est la rémunération "super-brute" du dirigeant, qui inclut toutes les cotisations sociales à payer. C'est aussi la valeur monétaire du travail du dirigeant.
période: flexible
formule: chiffre d'affaires - charges
- espace: entreprise
- espace: entreprise
nom: charges
question: Quelles sont les charges H.T. de l'entreprise ?
résumé: Toutes les dépenses nécessaire à l'activité de l'entreprise
question: Quelles sont les charges H.T. de l'entreprise (hors rémunération) ?
description: |
Ce sont les dépenses de l'entreprise engagées dans l'intérêt de celle-ci. Pour les sociétés et entreprises hors micro-entreprise, ces charges sont dites déductibles du résultat : l'entreprise ne paiera pas de cotisations ou impôt dessus. Pour la micro-entreprise, elles ne sont pas déductibles : l'entrepreneur les paie avec son salaire personnel net de cotisation et de revenu.
Ce sont les dépenses de l'entreprise engagées dans l'intérêt de celle-ci, hors rémunérations. Pour les sociétés et entreprises hors micro-entreprise, ces charges sont dites déductibles du résultat : l'entreprise ne paiera pas de cotisations ou impôt dessus. Pour la micro-entreprise, elles ne sont pas déductibles : l'entrepreneur les paie avec son salaire personnel net de cotisation et de revenu.
Nous ne traitons pas encore la TVA : les charges sont à renseigner hors taxe.

View File

@ -186,7 +186,6 @@ let analysisValidatedOnlySelector = makeAnalysisSelector(
export let blockingInputControlsSelector = state => {
let analysis = analysisWithDefaultsSelector(state)
console.log('analysis blocked', analysis.blockingInputControls)
return analysis && analysis.blockingInputControls
}

View File

@ -19,7 +19,7 @@ const SchemeComparaisonPage = () => (
Comparaison des régimes <small id="betaTag">alpha</small>
</h1>
<header>{createMarkdownDiv(ComparaisonConfig.titre)}</header>
<SimpleSimulation>
<SimpleSimulation hideUntilUserInput>
<ComparativeTargets />
</SimpleSimulation>
</>