Move économie-collaborative into /assistants
|
@ -4,8 +4,8 @@ import { Project } from 'ts-morph'
|
|||
import yaml from 'yaml'
|
||||
|
||||
const buildYamlToDts = [
|
||||
'./source/pages/Simulateurs/économie-collaborative/activités.yaml',
|
||||
'./source/pages/Simulateurs/économie-collaborative/activités.en.yaml',
|
||||
'./source/pages/assistants/économie-collaborative/activités.yaml',
|
||||
'./source/pages/assistants/économie-collaborative/activités.en.yaml',
|
||||
]
|
||||
|
||||
const transform = (data: Record<string, unknown>, filePath: string) => {
|
||||
|
|
|
@ -9,8 +9,8 @@ export const runScriptOnFileChange = async () => {
|
|||
options: [
|
||||
{
|
||||
paths: [
|
||||
'./source/pages/Simulateurs/économie-collaborative/activités.yaml',
|
||||
'./source/pages/Simulateurs/économie-collaborative/activités.en.yaml',
|
||||
'./source/pages/assistants/économie-collaborative/activités.yaml',
|
||||
'./source/pages/assistants/économie-collaborative/activités.en.yaml',
|
||||
],
|
||||
run: 'yarn build:yaml-to-dts',
|
||||
},
|
||||
|
|
|
@ -60,6 +60,16 @@ export default function Redirections({ children }: Props) {
|
|||
absoluteSitePaths.assistants['choix-du-statut'].index
|
||||
),
|
||||
},
|
||||
{
|
||||
paths: [
|
||||
'/simulateurs/économie-collaborative/*',
|
||||
'/calculators/sharing-economy/*',
|
||||
],
|
||||
to: decodeURI(pathname).replace(
|
||||
/^\/(simulateurs|calculators)/,
|
||||
absoluteSitePaths.assistants.index
|
||||
),
|
||||
},
|
||||
] satisfies { paths: string[]; to: string }[]
|
||||
}, [
|
||||
absoluteSitePaths.assistants,
|
||||
|
|
|
@ -153,7 +153,7 @@ export default function Plan() {
|
|||
<Li key="list-item-economie-collaborative">
|
||||
<H3>
|
||||
<Link
|
||||
to={absoluteSitePaths.simulateurs.économieCollaborative.index}
|
||||
to={absoluteSitePaths.assistants.économieCollaborative.index}
|
||||
>
|
||||
<Trans>
|
||||
Assistant à la déclaration des revenus des plateformes en
|
||||
|
|
|
@ -6,6 +6,7 @@ import { déclarationRevenuIndépendantBetaConfig } from '../assistants/declarat
|
|||
import { demandeMobilitéConfig } from '../assistants/demande-mobilité/config'
|
||||
import { pourMonEntrepriseConfig } from '../assistants/pour-mon-entreprise/config'
|
||||
import { rechercheCodeApeConfig } from '../assistants/recherche-code-ape/config'
|
||||
import { économieCollaborativeConfig } from '../assistants/économie-collaborative/config'
|
||||
import { artisteAuteurConfig } from './artiste-auteur/config'
|
||||
import { autoEntrepreneurConfig } from './auto-entrepreneur/config'
|
||||
import { auxiliaireMédicalConfig } from './auxiliaire-médical/config'
|
||||
|
@ -30,7 +31,6 @@ import { professionLibéraleConfig } from './profession-libérale/config'
|
|||
import { sageFemmeConfig } from './sage-femme/config'
|
||||
import { salariéConfig } from './salarié/config'
|
||||
import { sasuConfig } from './sasu/config'
|
||||
import { économieCollaborativeConfig } from './économie-collaborative/config'
|
||||
|
||||
/**
|
||||
* Contient l'intégralité des données concernant les différents simulateurs et assistants
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
// import {NavigateToChoixStatutJuridique} from '.'
|
||||
|
||||
import { NavigateToChoixStatutJuridique } from '.'
|
||||
import ChoixDuStatut from '..'
|
||||
import { config } from '../../../Simulateurs/configs/config'
|
||||
import { SimulatorsDataParams } from '../../../Simulateurs/configs/types'
|
||||
import GuideStatut from '../GuideStatut'
|
||||
|
||||
export function choixStatutJuridiqueConfig({
|
||||
t,
|
||||
|
|
|
@ -111,7 +111,7 @@ export const ActiviteCard = ({
|
|||
light
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
to={
|
||||
absoluteSitePaths.simulateurs.économieCollaborative.index +
|
||||
absoluteSitePaths.assistants.économieCollaborative.index +
|
||||
'/' +
|
||||
title
|
||||
}
|
|
@ -35,9 +35,7 @@ export default function Activité() {
|
|||
const activité = getTranslatedActivité(title, language)
|
||||
if (state && !(title in state)) {
|
||||
return (
|
||||
<Navigate
|
||||
to={absoluteSitePaths.simulateurs.économieCollaborative.index}
|
||||
/>
|
||||
<Navigate to={absoluteSitePaths.assistants.économieCollaborative.index} />
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -66,7 +64,7 @@ export default function Activité() {
|
|||
}
|
||||
|
||||
const seuilRevenus = state?.[title].seuilRevenus ?? undefined
|
||||
const estExonérée = estExonéréeSelector(title)(state)
|
||||
const estExonérée = state && estExonéréeSelector(title)(state)
|
||||
|
||||
return (
|
||||
<section key={title}>
|
|
@ -86,13 +86,13 @@ type ActivitéSelectionProps = {
|
|||
|
||||
export const ActivitéSelection = ({
|
||||
activités,
|
||||
currentActivité,
|
||||
currentActivité = '',
|
||||
}: ActivitéSelectionProps) => {
|
||||
const { state } = useContext(StoreContext)
|
||||
const activitéRépondue = activitésRéponduesSelector(state)
|
||||
const nextButtonDisabled = activitésEffectuéesSelector(state).every(
|
||||
(a) => !activités.includes(a)
|
||||
)
|
||||
const activitéRépondue = (state && activitésRéponduesSelector(state)) ?? []
|
||||
const nextButtonDisabled =
|
||||
state !== null &&
|
||||
activitésEffectuéesSelector(state).every((a) => !activités.includes(a))
|
||||
|
||||
return (
|
||||
<>
|
||||
|
@ -114,10 +114,7 @@ export const ActivitéSelection = ({
|
|||
})}
|
||||
</Grid>
|
||||
<Spacing xl />
|
||||
<NextButton
|
||||
disabled={nextButtonDisabled}
|
||||
activité={currentActivité as any}
|
||||
/>
|
||||
<NextButton disabled={nextButtonDisabled} activité={currentActivité} />
|
||||
</>
|
||||
)
|
||||
}
|
|
@ -16,12 +16,12 @@ type NextButtonProps = {
|
|||
export default function NextButton({ activité, disabled }: NextButtonProps) {
|
||||
const { absoluteSitePaths } = useSitePaths()
|
||||
const { state, dispatch } = useContext(StoreContext)
|
||||
const nextActivité = nextActivitéSelector(state, activité)
|
||||
const nextActivité = state && nextActivitéSelector(state, activité)
|
||||
const nextTo = nextActivité
|
||||
? absoluteSitePaths.simulateurs.économieCollaborative.index +
|
||||
? absoluteSitePaths.assistants.économieCollaborative.index +
|
||||
'/' +
|
||||
nextActivité
|
||||
: absoluteSitePaths.simulateurs.économieCollaborative.votreSituation
|
||||
: absoluteSitePaths.assistants.économieCollaborative.votreSituation
|
||||
|
||||
return (
|
||||
<p css="text-align: center">
|
|
@ -30,7 +30,7 @@ export default function VotreSituation() {
|
|||
const { state } = useContext(StoreContext)
|
||||
const { t } = useTranslation()
|
||||
|
||||
if (!activitésEffectuéesSelector(state).length) {
|
||||
if (!state || !activitésEffectuéesSelector(state).length) {
|
||||
return <Navigate to={'..'} replace />
|
||||
}
|
||||
|
||||
|
@ -169,7 +169,7 @@ const ActivitéList = ({ activités }: { activités: string[] }) => {
|
|||
title={title}
|
||||
answered
|
||||
label={
|
||||
régimeGénéralDisponibleSelector(state, title) ? (
|
||||
state && régimeGénéralDisponibleSelector(state, title) ? (
|
||||
<Trans i18nKey="économieCollaborative.obligations.régimeGénéralDisponible">
|
||||
Régime général disponible
|
||||
</Trans>
|
|
@ -1,15 +1,27 @@
|
|||
import ÉconomieCollaborative from '.'
|
||||
import { config } from '../configs/config'
|
||||
import { SimulatorsDataParams } from '../configs/types'
|
||||
import { config } from '../../Simulateurs/configs/config'
|
||||
import { SimulatorsDataParams } from '../../Simulateurs/configs/types'
|
||||
|
||||
export function économieCollaborativeConfig({
|
||||
t,
|
||||
sitePaths,
|
||||
}: SimulatorsDataParams) {
|
||||
return config({
|
||||
beta: true,
|
||||
id: 'économie-collaborative',
|
||||
path: sitePaths.simulateurs.économieCollaborative.index,
|
||||
pathId: 'assistants.économieCollaborative.index',
|
||||
path: sitePaths.assistants.économieCollaborative.index,
|
||||
iframePath: 'economie-collaborative',
|
||||
tracking: 'economie_collaborative',
|
||||
icône: '🙋',
|
||||
title: t(
|
||||
'pages.économie-collaborative.title',
|
||||
'Assistant à la déclaration des revenus des plateformes en ligne'
|
||||
),
|
||||
shortName: t(
|
||||
'pages.économie-collaborative.shortname',
|
||||
'Assistant économie collaborative'
|
||||
),
|
||||
meta: {
|
||||
title: t(
|
||||
'pages.économie-collaborative.meta.title',
|
||||
|
@ -20,18 +32,6 @@ export function économieCollaborativeConfig({
|
|||
'Airbnb, Drivy, Blablacar, Leboncoin... Découvrez comment être en règle dans vos déclarations'
|
||||
),
|
||||
},
|
||||
icône: '🙋',
|
||||
pathId: 'simulateurs.économieCollaborative.index',
|
||||
iframePath: 'economie-collaborative',
|
||||
beta: true,
|
||||
shortName: t(
|
||||
'pages.économie-collaborative.shortname',
|
||||
'Assistant économie collaborative'
|
||||
),
|
||||
title: t(
|
||||
'pages.économie-collaborative.title',
|
||||
'Assistant à la déclaration des revenus des plateformes en ligne'
|
||||
),
|
||||
component: ÉconomieCollaborative,
|
||||
} as const)
|
||||
}
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
@ -15,7 +15,7 @@ import VotreSituation from './VotreSituation'
|
|||
|
||||
export default function ÉconomieCollaborative() {
|
||||
const { relativeSitePaths, absoluteSitePaths } = useSitePaths()
|
||||
const { économieCollaborative } = absoluteSitePaths.simulateurs
|
||||
const { économieCollaborative } = absoluteSitePaths.assistants
|
||||
const iframePath =
|
||||
useSimulatorsData()['économie-collaborative'].iframePath ?? ''
|
||||
const indexPath = useIsEmbedded()
|
||||
|
@ -41,7 +41,7 @@ export default function ÉconomieCollaborative() {
|
|||
<Route index element={<ActivitésSelection />} />
|
||||
<Route
|
||||
path={
|
||||
relativeSitePaths.simulateurs.économieCollaborative.votreSituation
|
||||
relativeSitePaths.assistants.économieCollaborative.votreSituation
|
||||
}
|
||||
element={<VotreSituation />}
|
||||
/>
|
|
@ -1,8 +1,14 @@
|
|||
import { getActivité, hasConditions } from './activitésData'
|
||||
import { State } from './reducer'
|
||||
|
||||
const filterActivités =
|
||||
(filter = () => true) =>
|
||||
(state) =>
|
||||
(
|
||||
filter: (
|
||||
activitéData: State[keyof State],
|
||||
activitéTitle: string
|
||||
) => boolean = () => true
|
||||
) =>
|
||||
(state: State) =>
|
||||
Object.entries(state)
|
||||
.filter(
|
||||
([activitéTitle, activitéData]) =>
|
||||
|
@ -10,33 +16,38 @@ const filterActivités =
|
|||
)
|
||||
.map(([activité]) => activité)
|
||||
|
||||
export const nextActivitéSelector = (state, currentActivité) =>
|
||||
export const nextActivitéSelector = (state: State, currentActivité?: string) =>
|
||||
filterActivités(
|
||||
({ vue }, activitéTitle) => !vue && activitéTitle !== currentActivité
|
||||
)(state)[0]
|
||||
|
||||
const estExonérée = (critèresExonération, activité) => {
|
||||
const estExonérée = (
|
||||
critèresExonération: State[keyof State]['critèresExonération'],
|
||||
activité: keyof State
|
||||
) => {
|
||||
if (!critèresExonération.length) {
|
||||
return false
|
||||
}
|
||||
if (getActivité(activité)['exonérée si']) {
|
||||
const acti = getActivité(activité)
|
||||
if ('exonérée si' in acti && acti['exonérée si']) {
|
||||
return critèresExonération.some(Boolean)
|
||||
}
|
||||
|
||||
return critèresExonération.every((value) => value === false)
|
||||
}
|
||||
|
||||
export const estExonéréeSelector = (activité) => (state) =>
|
||||
export const estExonéréeSelector = (activité: string) => (state: State) =>
|
||||
estExonérée(state[activité].critèresExonération, activité)
|
||||
|
||||
export const activitésEffectuéesSelector = filterActivités()
|
||||
export const activitésRéponduesSelector = filterActivités(
|
||||
({ vue }, activité) => vue && hasConditions(activité)
|
||||
)
|
||||
export const déclarationsSelector = (state) => ({
|
||||
export const déclarationsSelector = (state: State) => ({
|
||||
RÉGIME_GÉNÉRAL_DISPONIBLE: filterActivités(
|
||||
({ seuilRevenus, critèresExonération }, activité) =>
|
||||
['RÉGIME_GÉNÉRAL_NON_DISPONIBLE', 'RÉGIME_GÉNÉRAL_DISPONIBLE'].includes(
|
||||
seuilRevenus
|
||||
seuilRevenus ?? ''
|
||||
) && !estExonérée(critèresExonération, activité)
|
||||
)(state),
|
||||
AUCUN: filterActivités(
|
||||
|
@ -50,6 +61,9 @@ export const déclarationsSelector = (state) => ({
|
|||
)(state),
|
||||
})
|
||||
|
||||
export const régimeGénéralDisponibleSelector = (state, activité) =>
|
||||
export const régimeGénéralDisponibleSelector = (
|
||||
state: State,
|
||||
activité: string
|
||||
) =>
|
||||
state[activité].seuilRevenus === 'RÉGIME_GÉNÉRAL_DISPONIBLE' &&
|
||||
!estExonérée(state[activité].critèresExonération, activité)
|
|
@ -29,6 +29,10 @@ const rawSitePathsFr = {
|
|||
'recherche-code-ape': 'recherche-code-ape',
|
||||
'déclaration-charges-sociales-indépendant':
|
||||
'declaration-charges-sociales-independant',
|
||||
économieCollaborative: {
|
||||
index: 'économie-collaborative',
|
||||
votreSituation: 'votre-situation',
|
||||
},
|
||||
'pour-mon-entreprise': {
|
||||
index: 'pour-mon-entreprise',
|
||||
entreprise: ':entreprise',
|
||||
|
@ -80,10 +84,6 @@ const rawSitePathsFr = {
|
|||
cipav: 'cipav',
|
||||
},
|
||||
'chômage-partiel': 'chômage-partiel',
|
||||
économieCollaborative: {
|
||||
index: 'économie-collaborative',
|
||||
votreSituation: 'votre-situation',
|
||||
},
|
||||
is: 'impot-societe',
|
||||
dividendes: 'dividendes',
|
||||
},
|
||||
|
@ -114,6 +114,10 @@ const rawSitePathsEn = {
|
|||
'recherche-code-ape': 'search-code-ape',
|
||||
'déclaration-charges-sociales-indépendant':
|
||||
'declaration-social-charges-independent',
|
||||
économieCollaborative: {
|
||||
index: 'sharing-economy',
|
||||
votreSituation: 'your-situation',
|
||||
},
|
||||
'pour-mon-entreprise': {
|
||||
index: 'for-my-business',
|
||||
entreprise: ':entreprise',
|
||||
|
@ -165,10 +169,6 @@ const rawSitePathsEn = {
|
|||
'expert-comptable': 'accountant',
|
||||
cipav: 'cipav',
|
||||
},
|
||||
économieCollaborative: {
|
||||
index: 'sharing-economy',
|
||||
votreSituation: 'your-situation',
|
||||
},
|
||||
is: 'corporate-tax',
|
||||
dividendes: 'dividends',
|
||||
},
|
||||
|
|