Skip to content

Commit

Permalink
feat: etat des inscriptions - merge with justificatifs links
Browse files Browse the repository at this point in the history
  • Loading branch information
XavierJp committed Aug 19, 2024
1 parent 430326a commit 46f3ee8
Show file tree
Hide file tree
Showing 20 changed files with 381 additions and 212 deletions.
3 changes: 2 additions & 1 deletion app/(header-default)/annonces/[slug]/_components/bodacc.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
'use client';

import React from 'react';
import routes from '#clients/routes';
import { Info } from '#components-ui/alerts';
import ButtonLink from '#components-ui/button';
Expand All @@ -12,6 +11,7 @@ import { EAdministration } from '#models/administrations/EAdministration';
import { IUniteLegale } from '#models/core/types';
import { formatDate } from '#utils/helpers';
import { useFetchBODACC } from 'hooks';
import React from 'react';

const AnnoncesBodacc: React.FC<{
uniteLegale: IUniteLegale;
Expand All @@ -20,6 +20,7 @@ const AnnoncesBodacc: React.FC<{

return (
<AsyncDataSectionClient
id="annonces-bodacc"
title="Annonces BODACC"
sources={[EAdministration.DILA]}
data={bodacc}
Expand Down
3 changes: 2 additions & 1 deletion app/(header-default)/annonces/[slug]/_components/joafe.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
'use client';

import React from 'react';
import routes from '#clients/routes';
import AssociationCreationNotFoundAlert from '#components-ui/alerts-with-explanations/association-creation-not-found-alert';
import ButtonLink from '#components-ui/button';
Expand All @@ -12,13 +11,15 @@ import { EAdministration } from '#models/administrations/EAdministration';
import { IAssociation } from '#models/core/types';
import { formatDate } from '#utils/helpers';
import { useFetchJOAFE } from 'hooks';
import React from 'react';

const AnnoncesJOAFESection: React.FC<{
uniteLegale: IAssociation;
}> = ({ uniteLegale }) => {
const annoncesAssociation = useFetchJOAFE(uniteLegale);
return (
<AsyncDataSectionClient
id="annonces-joafe"
title="Annonces Journal Officiel des Associations"
sources={[EAdministration.DILA]}
data={annoncesAssociation}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ export const ObservationsRNE: React.FC<{

return (
<AsyncDataSectionClient
id="rne"
id="observations-rne"
title="Observations au RNE"
sources={[EAdministration.INPI]}
data={immatriculationRNE}
notFoundInfo={
<>
Cette structure ne possède pas de fiche d’immatriculation au{' '}
<strong>Registre National des Entreprises (RNE)</strong>
<strong>Registre National des Entreprises (RNE)</strong>.
</>
}
>
Expand All @@ -50,7 +50,7 @@ export const ObservationsRNE: React.FC<{
) : (
<>
Cette structure ne possède pas d’observations au{' '}
<strong>Registre National des Entreprises (RNE)</strong>
<strong>Registre National des Entreprises (RNE)</strong>.
</>
)
}
Expand Down
21 changes: 18 additions & 3 deletions app/(header-default)/annonces/[slug]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -52,17 +52,32 @@ const AnnoncesPage = async (props: AppRouterProps) => {
{estDiffusible(uniteLegale) ||
hasRights(session, EScope.nonDiffusible) ? (
<>
<ul>
<li>
<a href="#annonces-bodacc">Annonces au BODACC</a>
</li>
{uniteLegale.dateMiseAJourInpi && (
<li>
<a href="#observations-rne">Observations au RNE</a>
</li>
)}
{isAssociation(uniteLegale) && (
<li>
<a href="#annonces-joafe">Annonces au JOAFE</a>
</li>
)}
</ul>
<AnnoncesBodacc uniteLegale={uniteLegale} />
{uniteLegale.dateMiseAJourInpi && (
<ObservationsRNE uniteLegale={uniteLegale} session={session} />
)}
{isAssociation(uniteLegale) && (
<AnnoncesJOAFESection uniteLegale={uniteLegale} />
)}
</>
) : (
<DonneesPriveesSection />
)}
{isAssociation(uniteLegale) && (
<AnnoncesJOAFESection uniteLegale={uniteLegale} />
)}
</div>
</>
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
import routes from '#clients/routes';
import ButtonLink from '#components-ui/button';
import { Icon } from '#components-ui/icon/wrapper';
import { PrintNever } from '#components-ui/print-visibility';
import { INPI } from '#components/administrations';
import { DataInpiLinkWithExplanations } from '#components/justificatifs/data-inpi-link';
import { Section } from '#components/section';
import { EAdministration } from '#models/administrations/EAdministration';
import { estDiffusible } from '#models/core/diffusion';
import { IUniteLegale } from '#models/core/types';
import { EScope, hasRights } from '#models/user/rights';
import { ISession } from '#models/user/session';

export const JustificatifImmatriculationRNE = ({
Expand All @@ -16,73 +10,12 @@ export const JustificatifImmatriculationRNE = ({
}: {
uniteLegale: IUniteLegale;
session: ISession | null;
}) => {
const siteLink = `${routes.rne.portail.entreprise}${uniteLegale.siren}`;

if (
!estDiffusible(uniteLegale) &&
!hasRights(session, EScope.nonDiffusible)
) {
return (
<Section
title="Justificatif d’immatriculation au RNE"
id="justificatif-immatriculation-rne"
sources={[EAdministration.INPI]}
>
Le(s) dirigeant(s) se sont opposés à la diffusion de leurs données
personnelles. Pour télécharger l’extrait d’immatriculation de cette
entreprise, rendez-vous sur le site{' '}
<a href="https://data.inpi.fr">data.inpi.fr</a>.
</Section>
);
}
return (
<Section
title="Justificatif d’immatriculation au RNE"
id="justificatif-immatriculation-rne"
sources={[EAdministration.INPI]}
>
<PrintNever>
<p>
Pour accéder aux données contenues dans un extrait d’immatriculation
(équivalent de{' '}
<strong>
<a href="/faq/extrait-kbis">l’extrait KBIS ou D1</a>
</strong>
), vous pouvez soit télécharger le{' '}
<strong>
justificatif d’immatriculation au Registre National des Entreprises
(RNE)
</strong>
, soit consulter la fiche complète sur le site de l’
<INPI />
&nbsp;:
</p>
<ul className="fr-btns-group fr-btns-group--inline-md fr-btns-group--center">
<li>
<ButtonLink
nofollow={true}
to={`/justificatif-immatriculation-pdf/${uniteLegale.siren}`}
>
<Icon slug="download">
Télécharger le justificatif d’immatriculation
</Icon>
</ButtonLink>
</li>
<li>
<ButtonLink
target="_blank"
to={
siteLink ||
`${routes.rne.portail.entreprise}${uniteLegale.siren}`
}
alt
>
⇢ Voir la fiche sur le site de l’INPI
</ButtonLink>
</li>
</ul>
</PrintNever>
</Section>
);
};
}) => (
<Section
title="Justificatif d’immatriculation au RNE"
id="justificatif-immatriculation-rne"
sources={[EAdministration.INPI]}
>
<DataInpiLinkWithExplanations uniteLegale={uniteLegale} session={session} />
</Section>
);
Original file line number Diff line number Diff line change
@@ -1,14 +1,46 @@
import FAQLink from '#components-ui/faq-link';
import { INPI } from '#components/administrations';
import { DataInpiLinkWithExplanations } from '#components/justificatifs/data-inpi-link';
import { DataSection } from '#components/section/data-section';
import { TwoColumnTable } from '#components/table/simple';
import { EAdministration } from '#models/administrations/EAdministration';
import { IUniteLegale } from '#models/core/types';
import { ISession } from '#models/user/session';
import { formatDate } from '#utils/helpers';

const formatCapitalSocial = (
immatriculation: IUniteLegale['immatriculation']
) => {
if (immatriculation?.capital) {
try {
return `${new Intl.NumberFormat('fr-FR', {
style: 'currency',
currency: immatriculation?.deviseCapital ?? 'EUR',
}).format(immatriculation?.capital)} ${
immatriculation.estCapitalVariable ? 'variable' : 'fixe'
}`;
} catch {
return `${immatriculation?.capital} ${immatriculation?.deviseCapital} ${
immatriculation.estCapitalVariable ? 'variable' : 'fixe'
}`;
}
}
return '';
};

const formatDateCloture = (DDMM: string) => {
if (DDMM && DDMM.length === 4) {
return `${DDMM.slice(0, 2)}/${DDMM.slice(2)}`;
}
return DDMM;
};

export const UniteLegaleImmatriculationSection = ({
uniteLegale,
session,
}: {
uniteLegale: IUniteLegale;
session: ISession | null;
}) => {
const immatriculation = uniteLegale.immatriculation;
return (
Expand Down Expand Up @@ -41,18 +73,35 @@ export const UniteLegaleImmatriculationSection = ({
],
[
'Nature de l’entreprise',
immatriculation?.natureEntreprise,
(immatriculation?.natureEntreprise || []).join(', '),
],
...(immatriculation?.isPersonneMorale
? [
['Capital social', immatriculation?.capital],
[
<FAQLink tooltipLabel="Capital social">
Le capital social d’une société est constitué des
apports (en argent ou en nature) de ses
actionnaires.
<br />
Il peut être fixe ou variable. La modification
d’un capital fixe nécessite une modification des
statuts tandis que le capital variable peut varier
dans certaines limites sans modification des
statuts.
</FAQLink>,
formatCapitalSocial(immatriculation),
],
[
'Clôture de l’exercice comptable',
immatriculation?.dateCloture,
formatDateCloture(immatriculation?.dateCloture),
],
]
: []),
...(immatriculation?.duree
? [
[
'Durée de la personne morale',
immatriculation?.duree,
`${immatriculation?.duree} ans`,
],
]
: []),
Expand All @@ -68,6 +117,10 @@ export const UniteLegaleImmatriculationSection = ({
: []),
]}
/>
<DataInpiLinkWithExplanations
uniteLegale={uniteLegale}
session={session}
/>
</>
)}
</DataSection>
Expand Down
Loading

0 comments on commit 46f3ee8

Please sign in to comment.