Ajoute le lien avec publicodes (in progress)
parent
8b6c86fbc4
commit
3aacc4d359
|
@ -320,7 +320,9 @@ entreprise . activités . principale:
|
|||
code guichet:
|
||||
description: |
|
||||
Le code guichet est utilisé pour identifier l'activité principale lors de la déclaration de
|
||||
la nouvelle entreprise via le guichet unique
|
||||
la nouvelle entreprise via le guichet unique. Il diffère du code APE : certains code APE ont plusieurs code guichet associés.
|
||||
|
||||
Il permet de connaître le type d'imposition de bénéfince (BIC, BNC, BA), la nature d'activité ou encore les régimes de retraite spécifiques associés au type d'activité.
|
||||
|
||||
# une possibilité:
|
||||
# choix obligatoire: oui
|
||||
|
|
|
@ -51,7 +51,11 @@ entreprise . catégorie juridique . EI:
|
|||
par: "'unique'"
|
||||
avec:
|
||||
auto-entrepreneur:
|
||||
non applicable si: associés . multiples
|
||||
acronyme: AE
|
||||
non applicable si:
|
||||
une de ces conditions:
|
||||
- associés . multiples
|
||||
- entreprise . imposition . IR . type de bénéfices = 'BA'
|
||||
question: Êtes-vous auto-entrepreneur ?
|
||||
remplace:
|
||||
- règle: imposition . régime
|
||||
|
@ -68,6 +72,7 @@ entreprise . catégorie juridique . EI:
|
|||
valeur: oui
|
||||
EI:
|
||||
titre: entreprise individuelle
|
||||
acronyme: EI
|
||||
valeur: auto-entrepreneur = non
|
||||
non applicable si: associés . multiples
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ import {
|
|||
import { Tag } from '@/design-system/tag'
|
||||
import { Colors } from '@/design-system/theme'
|
||||
|
||||
export const TAG_DATA = {
|
||||
const TAG_DATA = {
|
||||
EI: {
|
||||
color: 'independant',
|
||||
longName: 'Entreprise individuelle',
|
||||
|
@ -71,7 +71,7 @@ export const TAG_DATA = {
|
|||
}
|
||||
}
|
||||
|
||||
export type Status = keyof typeof TAG_DATA
|
||||
export type Statut = keyof typeof TAG_DATA
|
||||
|
||||
const StyledTag = styled(Tag)`
|
||||
margin: 0 0.25rem;
|
||||
|
@ -87,19 +87,19 @@ const StyledTag = styled(Tag)`
|
|||
}
|
||||
`
|
||||
|
||||
interface StatusTagProps {
|
||||
status: Status
|
||||
interface StatutTagProps {
|
||||
statut: Statut
|
||||
text: 'acronym' | 'shortName' | 'longName'
|
||||
showIcon?: boolean
|
||||
}
|
||||
|
||||
export const StatusTag = ({ status, text, showIcon }: StatusTagProps) => {
|
||||
const Icon = TAG_DATA[status].icon
|
||||
export const StatutTag = ({ statut, text, showIcon }: StatutTagProps) => {
|
||||
const Icon = TAG_DATA[statut].icon
|
||||
|
||||
return (
|
||||
<StyledTag color={TAG_DATA[status].color} sm>
|
||||
<StyledTag color={TAG_DATA[statut].color} sm>
|
||||
{showIcon && <Icon />}
|
||||
{TAG_DATA[status][text]}
|
||||
{TAG_DATA[statut][text]}
|
||||
</StyledTag>
|
||||
)
|
||||
}
|
|
@ -139,6 +139,7 @@ const Shadow = styled.div`
|
|||
position: sticky;
|
||||
bottom: 35px;
|
||||
transform: translateY(-200%);
|
||||
clip-path: inset(-5px 0px -5px -5px);
|
||||
height: 25px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import styled from 'styled-components'
|
||||
|
||||
import { DottedName } from '@/../../modele-social'
|
||||
import { Status, StatusTag } from '@/components/StatusTag'
|
||||
import { Statut, StatutTag } from '@/components/StatutTag'
|
||||
import { useEngine } from '@/components/utils/EngineContext'
|
||||
import { Message } from '@/design-system'
|
||||
import { H5 } from '@/design-system/typography/heading'
|
||||
|
@ -17,29 +17,15 @@ export default function StatutsDisponibles() {
|
|||
professionnelle que vous exercez
|
||||
</SmallBody>
|
||||
<StyledUl noMarker>
|
||||
<Statut
|
||||
statut="entreprise . catégorie juridique . EI . EI"
|
||||
status="EI"
|
||||
/>
|
||||
<Statut
|
||||
statut="entreprise . catégorie juridique . EI . auto-entrepreneur"
|
||||
status="AE"
|
||||
/>
|
||||
<Statut
|
||||
statut="entreprise . catégorie juridique . SARL . EURL"
|
||||
status="EURL"
|
||||
/>
|
||||
<Statut
|
||||
statut="entreprise . catégorie juridique . SARL . SARL"
|
||||
status="SARL"
|
||||
/>
|
||||
<Statut statut="entreprise . catégorie juridique . EI . EI" />
|
||||
<Statut statut="entreprise . catégorie juridique . EI . auto-entrepreneur" />
|
||||
<Statut statut="entreprise . catégorie juridique . SARL . EURL" />
|
||||
<Statut statut="entreprise . catégorie juridique . SARL . SARL" />
|
||||
<Statut
|
||||
statut="entreprise . catégorie juridique . SAS . SAS"
|
||||
status="SAS"
|
||||
/>
|
||||
<Statut
|
||||
statut="entreprise . catégorie juridique . SAS . SASU"
|
||||
status="SASU"
|
||||
/>
|
||||
{/* <Statut
|
||||
statut="entreprise . catégorie juridique . SELARL . SELARL"
|
||||
|
@ -57,10 +43,7 @@ export default function StatutsDisponibles() {
|
|||
statut="entreprise . catégorie juridique . SELAS . SELASU"
|
||||
status=""
|
||||
/> */}
|
||||
<Statut
|
||||
statut="entreprise . catégorie juridique . association"
|
||||
status="association"
|
||||
/>
|
||||
<Statut statut="entreprise . catégorie juridique . association" />
|
||||
</StyledUl>
|
||||
</StyledMessage>
|
||||
)
|
||||
|
@ -96,14 +79,18 @@ const StyledMessage = styled(Message)`
|
|||
}
|
||||
`
|
||||
|
||||
function Statut({ statut, status }: { statut: DottedName; status: Status }) {
|
||||
function Statut({ statut }: { statut: DottedName }) {
|
||||
const engine = useEngine()
|
||||
const disabled = status === 'AE'
|
||||
const disabled =
|
||||
engine.evaluate({ 'est non applicable': statut }).nodeValue === true
|
||||
|
||||
const acronyme = (engine.getRule(statut).rawNode.acronyme ??
|
||||
engine.getRule(statut).title.toLocaleLowerCase()) as Statut
|
||||
|
||||
return (
|
||||
<Li className={disabled ? 'disabled' : ''}>
|
||||
<StyledSpan>{engine.getRule(statut).title}</StyledSpan>
|
||||
<StatusTag status={status} text="acronym" showIcon />
|
||||
<StatutTag statut={acronyme} text="acronym" showIcon />
|
||||
</Li>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ import { Spacing } from '@/design-system/layout'
|
|||
import { H3, H5 } from '@/design-system/typography/heading'
|
||||
import { Body } from '@/design-system/typography/paragraphs'
|
||||
import { useSitePaths } from '@/sitePaths'
|
||||
import { updateSituation } from '@/store/actions/actions'
|
||||
import { batchUpdateSituation } from '@/store/actions/actions'
|
||||
|
||||
import {
|
||||
GuichetDescription,
|
||||
|
@ -37,6 +37,23 @@ export default function DétailsActivité() {
|
|||
setCodeGuichet(guichetEntries[0].code)
|
||||
}, [guichetEntries])
|
||||
|
||||
const guichetSelected = guichetEntries?.find(
|
||||
(guichet) => guichet.code === codeGuichet
|
||||
)
|
||||
|
||||
const onNextStepClicked = () => {
|
||||
if (!guichetSelected) {
|
||||
return
|
||||
}
|
||||
dispatch(
|
||||
batchUpdateSituation({
|
||||
'entreprise . activités . principale . code guichet': `'${guichetSelected.code}'`,
|
||||
'entreprise . imposition . IR . type de bénéfices':
|
||||
guichetSelected.typeBénéfice,
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
if (!codeApe) return <CodeAPENonConnu />
|
||||
|
||||
return (
|
||||
|
@ -68,15 +85,7 @@ export default function DétailsActivité() {
|
|||
guichetEntries?.length === 1 &&
|
||||
t('créer.activité-détails.next1', 'Continuer avec cette activité')
|
||||
}
|
||||
onNextStep={() =>
|
||||
codeGuichet &&
|
||||
dispatch(
|
||||
updateSituation(
|
||||
'entreprise . activités . principale . code guichet',
|
||||
`'${codeGuichet}'`
|
||||
)
|
||||
)
|
||||
}
|
||||
onNextStep={onNextStepClicked}
|
||||
/>
|
||||
</Layout>
|
||||
</>
|
||||
|
|
|
@ -72,8 +72,8 @@ export function GuichetDescription({
|
|||
return (
|
||||
<>
|
||||
<Body>
|
||||
Activité <Strong>{catégorieActivité.replace(/_/g, ' ')}</Strong> avec
|
||||
des revenus déclarés en <Strong>{typeBénéfice}</Strong>
|
||||
Activité <Strong>{catégorieActivité.replace(/_/g, ' ')}</Strong> avec le
|
||||
type de bénéfice <Strong>{typeBénéfice}</Strong>
|
||||
{caisseDeRetraiteSpéciale && (
|
||||
<>
|
||||
, affiliée à la <Strong>{caisseDeRetraiteSpéciale}</Strong> pour la
|
||||
|
|
|
@ -9,7 +9,7 @@ import { SwitchInput } from '@/components/conversation/ChoicesInput'
|
|||
import { ExplicableRule } from '@/components/conversation/Explicable'
|
||||
import RuleInput from '@/components/conversation/RuleInput'
|
||||
import Value from '@/components/EngineValue'
|
||||
import { StatusTag } from '@/components/StatusTag'
|
||||
import { StatutTag } from '@/components/StatutTag'
|
||||
import { useEngine } from '@/components/utils/EngineContext'
|
||||
import { Message } from '@/design-system'
|
||||
import { Button } from '@/design-system/buttons'
|
||||
|
@ -138,7 +138,7 @@ const AllerPlusLoinRevenus = ({
|
|||
<th className="sr-only">Type de structure</th>
|
||||
<th scope="col">
|
||||
<span className="table-title-sasu">
|
||||
<StatusTag status="SASU" text="acronym" showIcon />
|
||||
<StatutTag statut="SASU" text="acronym" showIcon />
|
||||
</span>
|
||||
</th>
|
||||
|
||||
|
@ -148,7 +148,7 @@ const AllerPlusLoinRevenus = ({
|
|||
id="tooltip-ei-table"
|
||||
>
|
||||
<span className="table-title-ei">
|
||||
<StatusTag status="EI" text="acronym" showIcon />
|
||||
<StatutTag statut="EI" text="acronym" showIcon />
|
||||
</span>
|
||||
</Tooltip>
|
||||
</th>
|
||||
|
@ -156,7 +156,7 @@ const AllerPlusLoinRevenus = ({
|
|||
<th scope="col">
|
||||
<Tooltip tooltip="Auto-entreprise" id="tooltip-ae-table">
|
||||
<span className="table-title-ae">
|
||||
<StatusTag status="AE" text="acronym" showIcon />
|
||||
<StatutTag statut="AE" text="acronym" showIcon />
|
||||
</span>
|
||||
</Tooltip>
|
||||
</th>
|
||||
|
|
|
@ -121,7 +121,7 @@ const DetailsRowCards = ({
|
|||
as="ul"
|
||||
>
|
||||
<StatusCard
|
||||
status={getStatusLabelsArray(statusArray)}
|
||||
statut={getStatusLabelsArray(statusArray)}
|
||||
footerContent={footers?.[statusObject.type]}
|
||||
isBestOption={
|
||||
statusArray.length !== 3 &&
|
||||
|
|
|
@ -489,7 +489,7 @@ const Détails = ({
|
|||
sa vie professionnelle.
|
||||
</Trans>
|
||||
</Body>
|
||||
<StatusCard status={['SASU', 'EI', 'AE']}>
|
||||
<StatusCard statut={['SASU', 'EI', 'AE']}>
|
||||
<span>
|
||||
<Value
|
||||
linkToRule={false}
|
||||
|
@ -637,12 +637,12 @@ const Détails = ({
|
|||
</Body>
|
||||
<Grid container spacing={4}>
|
||||
<Grid item xs={12} lg={4}>
|
||||
<StatusCard status={['SASU']}>
|
||||
<StatusCard statut={['SASU']}>
|
||||
<Trans>1 € minimum</Trans>
|
||||
</StatusCard>
|
||||
</Grid>
|
||||
<Grid item xs={12} lg={8}>
|
||||
<StatusCard status={['EI', 'AE']}>
|
||||
<StatusCard statut={['EI', 'AE']}>
|
||||
<DisabledLabel>
|
||||
<Trans>Aucun</Trans>
|
||||
</DisabledLabel>
|
||||
|
@ -664,17 +664,17 @@ const Détails = ({
|
|||
</Body>
|
||||
<Grid container spacing={4}>
|
||||
<Grid item xs={12} lg={4}>
|
||||
<StatusCard status={['SASU']}>
|
||||
<StatusCard statut={['SASU']}>
|
||||
<Trans>Conjoint associé ou salarié</Trans>
|
||||
</StatusCard>
|
||||
</Grid>
|
||||
<Grid item xs={12} lg={4}>
|
||||
<StatusCard status={['EI']}>
|
||||
<StatusCard statut={['EI']}>
|
||||
<Trans>Conjoint collaborateur ou salarié</Trans>
|
||||
</StatusCard>
|
||||
</Grid>
|
||||
<Grid item xs={12} lg={4}>
|
||||
<StatusCard status={['AE']}>
|
||||
<StatusCard statut={['AE']}>
|
||||
<Trans>Conjoint collaborateur</Trans>
|
||||
</StatusCard>
|
||||
</Grid>
|
||||
|
|
|
@ -66,7 +66,7 @@ const RevenuAprèsImpot = ({
|
|||
<Grid container spacing={4}>
|
||||
<Grid item xs={12} lg={4}>
|
||||
<StatusCard
|
||||
status={['SASU']}
|
||||
statut={['SASU']}
|
||||
isBestOption={bestOption === 'sasu'}
|
||||
footerContent={
|
||||
<CheckList
|
||||
|
@ -121,7 +121,7 @@ const RevenuAprèsImpot = ({
|
|||
|
||||
<Grid item xs={12} lg={4}>
|
||||
<StatusCard
|
||||
status={['EI']}
|
||||
statut={['EI']}
|
||||
isBestOption={bestOption === 'ei'}
|
||||
footerContent={
|
||||
<CheckList
|
||||
|
@ -181,7 +181,7 @@ const RevenuAprèsImpot = ({
|
|||
|
||||
<Grid item xs={12} lg={4}>
|
||||
<StatusCard
|
||||
status={['AE']}
|
||||
statut={['AE']}
|
||||
isBestOption={bestOption === 'ae'}
|
||||
footerContent={
|
||||
<CheckList
|
||||
|
|
|
@ -2,7 +2,7 @@ import { ReactNode, useRef } from 'react'
|
|||
import { Trans } from 'react-i18next'
|
||||
import styled from 'styled-components'
|
||||
|
||||
import { StatusTag } from '@/components/StatusTag'
|
||||
import { StatutTag } from '@/components/StatutTag'
|
||||
import { CardContainer } from '@/design-system/card/Card'
|
||||
import { Emoji } from '@/design-system/emoji'
|
||||
import { Grid } from '@/design-system/layout'
|
||||
|
@ -10,19 +10,19 @@ import { Tooltip } from '@/design-system/tooltip'
|
|||
import { Body } from '@/design-system/typography/paragraphs'
|
||||
import { generateUuid } from '@/utils'
|
||||
|
||||
type StatusCardType = {
|
||||
status: ('SASU' | 'EI' | 'AE')[]
|
||||
type StatutCardType = {
|
||||
statut: ('SASU' | 'EI' | 'AE')[]
|
||||
footerContent?: ReactNode
|
||||
isBestOption?: boolean
|
||||
children: ReactNode
|
||||
}
|
||||
|
||||
const StatusCard = ({
|
||||
status,
|
||||
statut: status,
|
||||
children,
|
||||
footerContent,
|
||||
isBestOption,
|
||||
}: StatusCardType) => {
|
||||
}: StatutCardType) => {
|
||||
const tooltipIdRef = useRef(generateUuid())
|
||||
|
||||
return (
|
||||
|
@ -31,7 +31,7 @@ const StatusCard = ({
|
|||
<Grid container spacing={1}>
|
||||
{status.map((statusString) => (
|
||||
<Grid item key={statusString}>
|
||||
<StatusTag status={statusString} text="shortName" showIcon />
|
||||
<StatutTag statut={statusString} text="shortName" showIcon />
|
||||
</Grid>
|
||||
))}
|
||||
</Grid>
|
||||
|
|
Loading…
Reference in New Issue