diff --git a/packages/api/package.json b/packages/api/package.json index 3f75cb423e4f7bb652742fb58cf15f435dafc50c..2408e0a718e12e33fdd7b92f9857af9041cd0e1b 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -8,6 +8,7 @@ "scripts": { "build": "tsc --incremental", "check-prolongations": "node --enable-source-maps --loader ts-node/esm/transpile-only ./src/scripts/check-prolongations.ts", + "fill-documents-non-renseigne": "node --enable-source-maps --loader ts-node/esm/transpile-only ./src/scripts/fill-documents-non-renseigne.ts", "daily": "node --enable-source-maps --loader ts-node/esm/transpile-only ./src/scripts/daily.ts", "monthly": "node --enable-source-maps --loader ts-node/esm/transpile-only ./src/scripts/monthly.ts", "db:dump": "rm -rf ./backups/* && pg_dump --host=localhost --username=postgres --clean --if-exists --format=d --no-owner --no-privileges --dbname=camino --file=./backups/", @@ -25,7 +26,6 @@ "dev": "node --watch --enable-source-maps --loader ts-node/esm/transpile-only --inspect ./src/index.ts", "daily-debug": "node --inspect-brk=3000 --loader ts-node/esm/transpile-only ./src/scripts/daily.ts", "dev:update": "npm-check-updates -u && npm install && npm audit fix", - "documents:check": "node NODE_OPTIONS='--loader ts-node/esm/transpile-only' ./api/src/scripts/documents-check.ts", "lint": "prettier --write . && eslint --fix .", "start": "node --enable-source-maps --loader ts-node/esm/transpile-only ./src/index.ts", "test": "vitest", diff --git a/packages/api/src/api/rest/etape-modifier.test.integration.ts b/packages/api/src/api/rest/etape-modifier.test.integration.ts index 61701ed9bc30fd0c76046de5ce65179f1794bb2c..cb95b86179a809c5f67f91d9be5aad16aa7039a0 100644 --- a/packages/api/src/api/rest/etape-modifier.test.integration.ts +++ b/packages/api/src/api/rest/etape-modifier.test.integration.ts @@ -355,6 +355,7 @@ describe('etapeModifier', () => { "etape_document_type_id": "aac", "id": Any<String>, "public_lecture": true, + "type": "DESCRIPTION_OPTIONNELLE", } ` ) @@ -430,6 +431,7 @@ describe('etapeModifier', () => { mkdirSync(dir, { recursive: true }) copyFileSync(`./src/tools/small.pdf`, `${dir}/${fileName}`) const documentToInsert: TempEtapeDocument = { + type: 'DESCRIPTION_OPTIONNELLE', etape_document_type_id: DOCUMENTS_TYPES_IDS.lettreDeSaisineDesCollectivites, entreprises_lecture: true, public_lecture: true, diff --git a/packages/api/src/api/rest/titres.queries.ts b/packages/api/src/api/rest/titres.queries.ts index ab7a84c13af0902a334fd4121e8de425c1b0c574..5849ddd8da9644f14dddcb2e18ada6de1eb346cd 100644 --- a/packages/api/src/api/rest/titres.queries.ts +++ b/packages/api/src/api/rest/titres.queries.ts @@ -7,6 +7,7 @@ import { IGetDoublonsByTitreIdDbQuery, IGetTitreByIdOrSlugDbQuery, IGetTitreInternalQuery, + IGetTitresDbQuery, IGetTitulairesAmodiatairesByTitreIdDbQuery, } from './titres.queries.types' import { caminoDateValidator, firstEtapeDateValidator } from 'camino-common/src/date' @@ -506,3 +507,10 @@ const getDoublonsByTitreIdDb = sql<Redefine<IGetDoublonsByTitreIdDbQuery, { titr t.doublon_titre_id = $ titreId ! and t.archive is false ` + +const getTitressValidator = z.object({ id: titreIdValidator }) +type GetTitre = z.infer<typeof getTitressValidator> +export const getTitres = (pool: Pool): Effect.Effect<GetTitre[], CaminoError<EffectDbQueryAndValidateErrors>> => effectDbQueryAndValidate(getTitresDb, {}, pool, getTitressValidator) + +const getTitresDb = sql<Redefine<IGetTitresDbQuery, {}, GetTitre>>` + select t.id from titres t where t.archive is false` diff --git a/packages/api/src/api/rest/titres.queries.types.ts b/packages/api/src/api/rest/titres.queries.types.ts index 5486d8cd1463c6a712377934e198b57aa8a33e49..d19930efc06169cc3e03a390e960f8c588d8cb08 100644 --- a/packages/api/src/api/rest/titres.queries.types.ts +++ b/packages/api/src/api/rest/titres.queries.types.ts @@ -118,3 +118,17 @@ export interface IGetDoublonsByTitreIdDbQuery { result: IGetDoublonsByTitreIdDbResult; } +/** 'GetTitresDb' parameters type */ +export type IGetTitresDbParams = void; + +/** 'GetTitresDb' return type */ +export interface IGetTitresDbResult { + id: string; +} + +/** 'GetTitresDb' query type */ +export interface IGetTitresDbQuery { + params: IGetTitresDbParams; + result: IGetTitresDbResult; +} + diff --git a/packages/api/src/business/check-prolongations.ts b/packages/api/src/business/check-prolongations.ts index 8f378675dcc3fd1b5da6e529837e824d795da4f0..4d70651e99aa3ee2909a9f73d76cf9d8937138c2 100644 --- a/packages/api/src/business/check-prolongations.ts +++ b/packages/api/src/business/check-prolongations.ts @@ -1,11 +1,10 @@ import { Pool } from 'pg' -import { getDemarcheByIdOrSlug, GetDemarcheByIdOrSlugErrors, getDemarches, getEtapesByDemarcheId } from '../api/rest/demarches.queries' +import { getDemarcheByIdOrSlug, GetDemarcheByIdOrSlugErrors, getDemarches, getEtapesByDemarcheId, getFirstEtapeDateByDemarcheIdOrSlug } from '../api/rest/demarches.queries' import { Effect, pipe } from 'effect' import { CaminoError } from 'camino-common/src/zod-tools' import { DemarcheId } from 'camino-common/src/demarche' import { isEtapeComplete } from 'camino-common/src/permissions/titres-etapes' import { userSuper } from '../database/user-super' -import { firstEtapeDateValidator } from 'camino-common/src/date' import { titreEtapeGet, titreEtapeUpsert } from '../database/queries/titres-etapes' import { isNotNullNorUndefined, isNotNullNorUndefinedNorEmpty, isNullOrUndefined, isNullOrUndefinedOrEmpty, memoize, toSorted } from 'camino-common/src/typescript-tools' import { iTitreEtapeToFlattenEtape, TitreEtapeToFlattenEtapeErrors } from '../api/_format/titres-etapes' @@ -104,7 +103,15 @@ const checkOneProlongation = (pool: Pool, demarcheId: DemarcheId): Effect.Effect ) ), Effect.bind('flattenFirstEtape', ({ firstEtape }) => iTitreEtapeToFlattenEtape(firstEtape)), - Effect.map(({ demarche, firstEtape, flattenFirstEtape, etapeDocuments, entrepriseDocuments, etapeAvis }) => { + Effect.bind('firstEtapeDate', ({ demarche }) => + getFirstEtapeDateByDemarcheIdOrSlug(demarche.demarche_id, pool).pipe( + Effect.filterOrFail( + date => isNotNullNorUndefined(date), + () => ({ message: 'FirstEtapeDate null' }) + ) + ) + ), + Effect.map(({ demarche, firstEtape, flattenFirstEtape, etapeDocuments, entrepriseDocuments, etapeAvis, firstEtapeDate }) => { const isFirstEtapeComplete = isEtapeComplete( flattenFirstEtape, demarche.titre_type_id, @@ -116,7 +123,7 @@ const checkOneProlongation = (pool: Pool, demarcheId: DemarcheId): Effect.Effect isNotNullNorUndefined(firstEtape.communes) ? firstEtape.communes.map(({ id }) => id) : [], etapeAvis, userSuper, - firstEtapeDateValidator.parse(flattenFirstEtape.date) + firstEtapeDate ) return { @@ -183,7 +190,7 @@ const fixProlongation = (pool: Pool, checkedProlongation: CheckedProlongation): ), Effect.bind('propsHeritees', ({ titre }) => Effect.Do.pipe( - Effect.bind('demarches', () => { + Effect.flatMap(() => { const demarches: TitreGetDemarche[] = [] for (const demarche of toSorted([...titre.demarches], (a, b) => a.ordre - b.ordre)) { if (demarche.id === checkedProlongation.demarche_id) { @@ -195,7 +202,7 @@ const fixProlongation = (pool: Pool, checkedProlongation: CheckedProlongation): return Effect.fail({ message: demarcheListIsEmptyError }) }), - Effect.map(({ demarches }) => { + Effect.map(demarches => { return { substances: getMostRecentValuePropFromEtapeFondamentaleValide('substances', demarches), titulaireIds: getMostRecentValuePropFromEtapeFondamentaleValide('titulaireIds', demarches), diff --git a/packages/api/src/business/fill-documents-non-renseigne.ts b/packages/api/src/business/fill-documents-non-renseigne.ts new file mode 100644 index 0000000000000000000000000000000000000000..7322127609b5e8b7acdd44b512bc6e08986ae384 --- /dev/null +++ b/packages/api/src/business/fill-documents-non-renseigne.ts @@ -0,0 +1,392 @@ +import { Pool } from 'pg' +import { Effect, pipe } from 'effect' +import { CaminoError } from 'camino-common/src/zod-tools' +import { demarcheEnregistrementDemandeDateFind, DemarcheEtapeFondamentale, DemarcheId } from 'camino-common/src/demarche' +import { isEtapeComplete } from 'camino-common/src/permissions/titres-etapes' +import { userSuper } from '../database/user-super' +import { FirstEtapeDate } from 'camino-common/src/date' +import { titreEtapeGet } from '../database/queries/titres-etapes' +import { isNotNullNorUndefined, memoize, toSorted } from 'camino-common/src/typescript-tools' +import { ApiFlattenEtape, iTitreEtapeToFlattenEtape } from '../api/_format/titres-etapes' +import { ITitreEtape } from '../types' +import { + EtapeAvisDb, + getDocumentsByEtapeId, + getEntrepriseDocumentIdsByEtapeId, + getEtapeAvisLargeObjectIdsByEtapeId, + insertEtapeAvis, + insertEtapeDocumentsRawDontUseOutsideScript, +} from '../database/queries/titres-etapes.queries' +import { getAdministrationsLocales } from 'camino-common/src/administrations' +import { TitreId, TitreSlug } from 'camino-common/src/validators/titres' +import { ETAPE_IS_BROUILLON, EtapeDocument, TempEtapeAvis } from 'camino-common/src/etape' +import { getTitre, getTitres } from '../api/rest/titres.queries' +import { getDocuments } from 'camino-common/src/static/titresTypes_demarchesTypes_etapesTypes/documents' +import { isArmMecanise } from 'camino-common/src/static/mecanise' +import { DocumentType, isAutreDocument } from 'camino-common/src/static/documentsTypes' +import { getMostRecentValuePropFromEtapeFondamentaleValide, TitreGetDemarche } from 'camino-common/src/titres' +import { isDemarcheStatutNonStatue, isDemarcheStatutNonValide } from 'camino-common/src/static/demarchesStatuts' +import { getAvisTypes } from 'camino-common/src/avisTypes' +import { AvisRegularTypeId, isAvisRegularTypeId } from 'camino-common/src/static/avisTypes' + +type CheckedProlongation = { + titre_slug: TitreSlug + demarche_id: DemarcheId + etapeFull: ITitreEtape + flattenEtape: ApiFlattenEtape + etapeDocuments: EtapeDocument[] + etapeAvis: EtapeAvisDb[] + propsHeritees: { + substances: DemarcheEtapeFondamentale['fondamentale']['substances'] + titulaireIds: DemarcheEtapeFondamentale['fondamentale']['titulaireIds'] + perimetre: DemarcheEtapeFondamentale['fondamentale']['perimetre'] + } + firstEtapeDate: FirstEtapeDate + titre_id: TitreId + errors: string[] +} + +const titreEtapeGetError = 'Le fetch de la firstEtape a échoué' as const + +const checkDemarcheEtapes = (pool: Pool, titreId: TitreId): Effect.Effect<CheckedProlongation[], CaminoError<string>> => { + return Effect.Do.pipe( + Effect.bind('titre', () => + Effect.Do.pipe( + Effect.flatMap(() => + Effect.tryPromise({ + try: () => getTitre(pool, userSuper, titreId), + catch: error => ({ message: titreGetError, extra: error }), + }) + ), + Effect.filterOrFail( + (titre): titre is NonNullable<typeof titre> => isNotNullNorUndefined(titre), + error => ({ message: titreGetIsNullError, extra: error }) + ) + ) + ), + Effect.flatMap(({ titre }) => + Effect.forEach(titre.demarches, demarche => { + return Effect.Do.pipe( + Effect.bind('firstEtapeDate', () => + Effect.Do.pipe( + Effect.map(() => demarcheEnregistrementDemandeDateFind(demarche.etapes.map(etape => ({ ...etape, typeId: etape.etape_type_id })))), + Effect.filterOrFail( + date => isNotNullNorUndefined(date), + () => ({ message: 'FirstEtapeDate null' }) + ) + ) + ), + Effect.bind('propsHeritees', () => + Effect.Do.pipe( + Effect.flatMap(() => { + const demarches: TitreGetDemarche[] = [] + for (const demarcheSorted of toSorted([...titre.demarches], (a, b) => a.ordre - b.ordre)) { + if (demarcheSorted.id === demarche.id) { + return Effect.succeed([...demarches, demarche]) + } else if (!isDemarcheStatutNonStatue(demarcheSorted.demarche_statut_id) && !isDemarcheStatutNonValide(demarcheSorted.demarche_statut_id)) { + demarches.push(demarcheSorted) + } + } + + return Effect.fail({ message: 'Pas de démarches' }) + }), + Effect.map(demarches => { + return { + substances: getMostRecentValuePropFromEtapeFondamentaleValide('substances', demarches), + titulaireIds: getMostRecentValuePropFromEtapeFondamentaleValide('titulaireIds', demarches), + perimetre: getMostRecentValuePropFromEtapeFondamentaleValide('perimetre', demarches), + } + }) + ) + ), + + Effect.let('titreProps', ({ propsHeritees }) => ({ + titreTypeId: memoize(() => Promise.resolve(titre.titre_type_id)), + administrationsLocales: memoize(() => + Promise.resolve(getAdministrationsLocales(propsHeritees.perimetre?.communes.map(({ id }) => id) ?? [], propsHeritees.perimetre?.secteurs_maritimes ?? [])) + ), + entreprisesTitulairesOuAmodiataires: memoize(() => Promise.resolve(propsHeritees.titulaireIds ?? [])), + })), + + Effect.flatMap(({ firstEtapeDate, titreProps, propsHeritees }) => + Effect.forEach(demarche.etapes, etape => { + return Effect.Do.pipe( + Effect.bind('etapeFull', () => + Effect.tryPromise({ + try: () => titreEtapeGet(etape.id, { fields: { id: {} }, fetchHeritage: true }, userSuper), + catch: error => ({ message: titreEtapeGetError, extra: error }), + }).pipe( + Effect.filterOrFail( + (firstEtape): firstEtape is ITitreEtape => isNotNullNorUndefined(firstEtape), + () => ({ message: titreEtapeGetError, extra: `étape ${etape.id} est null ou undefined` }) + ) + ) + ), + + Effect.bind('etapeDocuments', ({ etapeFull }) => { + return getDocumentsByEtapeId( + etapeFull.id, + pool, + userSuper, + titreProps.titreTypeId, + titreProps.administrationsLocales, + titreProps.entreprisesTitulairesOuAmodiataires, + etapeFull.typeId, + { + demarche_type_id: demarche.demarche_type_id, + entreprises_lecture: true, + public_lecture: true, + titre_public_lecture: true, + } + ) + }), + Effect.bind('entrepriseDocuments', ({ etapeFull }) => getEntrepriseDocumentIdsByEtapeId({ titre_etape_id: etapeFull.id }, pool, userSuper)), + Effect.bind('etapeAvis', ({ etapeFull }) => + getEtapeAvisLargeObjectIdsByEtapeId( + etapeFull.id, + pool, + userSuper, + titreProps.titreTypeId, + titreProps.administrationsLocales, + titreProps.entreprisesTitulairesOuAmodiataires, + etapeFull.typeId, + { + demarche_type_id: demarche.demarche_type_id, + entreprises_lecture: true, + public_lecture: true, + titre_public_lecture: true, + } + ) + ), + Effect.bind('flattenEtape', ({ etapeFull }) => iTitreEtapeToFlattenEtape(etapeFull)), + + Effect.map(({ etapeFull, flattenEtape, etapeDocuments, entrepriseDocuments, etapeAvis }) => { + if (flattenEtape.isBrouillon === ETAPE_IS_BROUILLON) { + return null + } + const isFirstEtapeComplete = isEtapeComplete( + flattenEtape, + titre.titre_type_id, + demarche.id, + demarche.demarche_type_id, + etapeDocuments, + entrepriseDocuments, + etapeFull.sdomZones, + isNotNullNorUndefined(etapeFull.communes) ? etapeFull.communes.map(({ id }) => id) : [], + etapeAvis, + userSuper, + firstEtapeDate + ) + const result: CheckedProlongation = { + titre_slug: titre.slug, + demarche_id: demarche.id, + etapeFull, + flattenEtape: flattenEtape, + etapeDocuments, + firstEtapeDate, + titre_id: titreId, + propsHeritees, + etapeAvis, + errors: isFirstEtapeComplete.valid ? [] : isFirstEtapeComplete.errors, + } + return result + }), + Effect.catchAll(caminoError => { + console.error('Erreur étapes', caminoError) + return Effect.succeed(null) + }) + ) + }) + ), + Effect.catchAll(error => { + console.info('Erreur démarche', error) + return Effect.succeed([] as (CheckedProlongation | null)[]) + }), + Effect.map(erreurs => erreurs.filter(isNotNullNorUndefined)) + ) + }) + ), + Effect.map(etapesEnErreur => etapesEnErreur.flatMap(plop => plop)) + ) +} + +const titreGetError = 'Impossible de fetch le titre' as const +const titreGetIsNullError = 'Titre introuvable' as const +const etapeIntrouvableError = 'Étape introuvable dans le titre' as const + +const addDocumentNonRenseigne = (pool: Pool, checkedProlongation: CheckedProlongation): Effect.Effect<CheckedProlongation, CaminoError<string>> => { + return Effect.Do.pipe( + Effect.bind('titre', () => + Effect.tryPromise({ + try: () => getTitre(pool, userSuper, checkedProlongation.titre_id), + catch: error => ({ message: titreGetError, extra: error }), + }).pipe( + Effect.filterOrFail( + (titre): titre is NonNullable<typeof titre> => isNotNullNorUndefined(titre), + error => ({ message: titreGetIsNullError, extra: error }) + ) + ) + ), + Effect.bind('demarche', ({ titre }) => + Effect.succeed(titre.demarches.find(({ id }) => id === checkedProlongation.demarche_id)).pipe( + Effect.filterOrFail( + (demarche): demarche is NonNullable<typeof demarche> => isNotNullNorUndefined(checkedProlongation.demarche_id) && isNotNullNorUndefined(demarche), + () => ({ message: etapeIntrouvableError, extra: 'Démarche introuvable' }) + ) + ) + ), + Effect.flatMap(({ titre, demarche }) => { + const documentTypes = getDocuments( + titre.titre_type_id, + demarche.demarche_type_id, + checkedProlongation.etapeFull.typeId, + checkedProlongation.firstEtapeDate, + demarche.id, + checkedProlongation.etapeFull.sdomZones ?? [], + isArmMecanise(checkedProlongation.flattenEtape.contenu) + ) + + console.info(`Trying to fix documents for http://localhost:4180/etapes/${checkedProlongation.etapeFull.slug}`) + + const documentsObligatoiresManquants = documentTypes.filter( + ({ optionnel, id }) => !optionnel && checkedProlongation.etapeDocuments.every(({ etape_document_type_id }) => etape_document_type_id !== id) + ) + + return insertEtapeDocumentsRawDontUseOutsideScript( + pool, + checkedProlongation.etapeFull.id, + documentsObligatoiresManquants + .filter((documentType): documentType is DocumentType => !isAutreDocument(documentType.id)) + .map(documentType => ({ + type: 'DESCRIPTION_OPTIONNELLE', + description: null, + entreprises_lecture: false, + public_lecture: false, + etape_document_type_id: documentType.id, + })) + ) + }), + Effect.map(() => checkedProlongation), + Effect.catchAll(error => { + console.info(error) + return Effect.succeed(checkedProlongation) + }) + ) +} + +const addAvisNonRenseigne = (pool: Pool, checkedProlongation: CheckedProlongation): Effect.Effect<CheckedProlongation, CaminoError<string>> => { + return Effect.Do.pipe( + Effect.bind('titre', () => + Effect.tryPromise({ + try: () => getTitre(pool, userSuper, checkedProlongation.titre_id), + catch: error => ({ message: titreGetError, extra: error }), + }).pipe( + Effect.filterOrFail( + (titre): titre is NonNullable<typeof titre> => isNotNullNorUndefined(titre), + error => ({ message: titreGetIsNullError, extra: error }) + ) + ) + ), + Effect.bind('demarche', ({ titre }) => + Effect.succeed(titre.demarches.find(({ id }) => id === checkedProlongation.demarche_id)).pipe( + Effect.filterOrFail( + (demarche): demarche is NonNullable<typeof demarche> => isNotNullNorUndefined(checkedProlongation.demarche_id) && isNotNullNorUndefined(demarche), + () => ({ message: etapeIntrouvableError, extra: 'Démarche introuvable' }) + ) + ) + ), + Effect.flatMap(({ titre, demarche }) => { + const avisTypes = getAvisTypes( + checkedProlongation.etapeFull.typeId, + titre.titre_type_id, + demarche.demarche_type_id, + demarche.id, + checkedProlongation.firstEtapeDate, + (checkedProlongation.propsHeritees.perimetre?.communes ?? []).map(({ id }) => id), + isArmMecanise(checkedProlongation.flattenEtape.contenu) + ) + + console.info(`Trying to fix avis for http://localhost:4180/etapes/${checkedProlongation.etapeFull.slug}`) + + const avisManquants = Object.values(avisTypes).filter(avisType => !avisType.optionnel && checkedProlongation.etapeAvis.every(avis => avis.avis_type_id !== avisType.id)) + + return insertEtapeAvis( + pool, + checkedProlongation.etapeFull.id, + avisManquants + .map(({ id }) => id) + .filter((avisId): avisId is AvisRegularTypeId => isAvisRegularTypeId(avisId)) + .map(avisManquant => { + const result: TempEtapeAvis = { + avis_type_id: avisManquant, + description: '', + date: checkedProlongation.etapeFull.date, + avis_visibility_id: 'Administrations', + avis_statut_id: 'Non renseigné', + } + return result + }) + ) + }), + Effect.map(() => checkedProlongation), + Effect.catchAll(error => { + console.info(error) + return Effect.succeed(checkedProlongation) + }) + ) +} + +const toPercentage = (percentage: number): number => { + return Math.round(percentage * 100) +} + +let lastProgression = 0 +export const fillDocumentsNonRenseigne = (pool: Pool): Effect.Effect<CheckedProlongation[][], CaminoError<string>> => { + return pipe( + getTitres(pool), + Effect.tap(() => console.info('titres chargées')), + Effect.flatMap(titres => { + return Effect.forEach( + titres, + (titre, index) => { + const progression = toPercentage(index / titres.length) + + if (progression % 1 === 0 && lastProgression !== progression) { + console.info(`progression ${progression} %`) + lastProgression = progression + } + return pipe( + checkDemarcheEtapes(pool, titre.id), + Effect.flatMap(checkedEtapes => + Effect.forEach(checkedEtapes, checkedEtape => { + return Effect.Do.pipe( + Effect.flatMap(() => { + if (checkedEtape.errors.some(error => error.startsWith('le document') && error.endsWith('est obligatoire'))) { + return addDocumentNonRenseigne(pool, checkedEtape) + } + return Effect.succeed(checkedEtape) + }), + Effect.flatMap(() => { + if (checkedEtape.errors.some(error => error.includes('Il manque des avis obligatoires'))) { + return addAvisNonRenseigne(pool, checkedEtape) + } + return Effect.succeed(checkedEtape) + }) + ) + }) + ), + Effect.catchAll(error => { + console.info(error) + return Effect.succeed([]) + }) + ) + }, + { concurrency: 20 } + ) + }), + Effect.catchAll(error => { + console.info(error) + return Effect.succeed([]) + }) + ) +} diff --git a/packages/api/src/database/queries/titres-etapes.queries.ts b/packages/api/src/database/queries/titres-etapes.queries.ts index f4cc9f320fa23dc772655a7c1a5ec58be99ae62d..ad17f27271fbf0d24b6d23df17fd93669cd6daa9 100644 --- a/packages/api/src/database/queries/titres-etapes.queries.ts +++ b/packages/api/src/database/queries/titres-etapes.queries.ts @@ -29,9 +29,8 @@ import { EtapeAvisWithFileModification, EtapeBrouillon, EtapeDocument, - etapeDocumentDescriptionObligatoireValidator, - etapeDocumentDescriptionOptionnelleValidator, EtapeDocumentId, + etapeDocumentIdValidator, EtapeDocumentModification, etapeDocumentValidator, EtapeDocumentWithFileModification, @@ -69,6 +68,7 @@ import { CaminoError } from 'camino-common/src/zod-tools' import { callAndExit, shortCircuitError, zodParseEffectTyped } from '../../tools/fp-tools' import { TempDocumentName } from 'camino-common/src/document' import { DemarcheId } from 'camino-common/src/demarche' +import { autreDocumentTypeIdValidator, documentTypeIdValidator, isAutreDocument } from 'camino-common/src/static/documentsTypes' export const insertTitreEtapeEntrepriseDocuments = ( pool: Pool, @@ -231,8 +231,28 @@ export const insertEtapeDocuments = (pool: Pool, titre_etape_id: EtapeId, etapeD ) } +export const insertEtapeDocumentsRawDontUseOutsideScript = ( + pool: Pool, + titre_etape_id: EtapeId, + etapeDocuments: Omit<TempEtapeDocument, 'temp_document_name'>[] +): Effect.Effect<true, CaminoError<EffectDbQueryAndValidateErrors>> => { + return Effect.Do.pipe( + Effect.flatMap(() => + Effect.forEach(etapeDocuments, document => { + const id = newEtapeDocumentId(getCurrent(), document.etape_document_type_id) + return Effect.Do.pipe( + Effect.flatMap(() => + effectDbQueryAndValidate(insertEtapeDocumentDb, { ...document, etape_id: titre_etape_id, id, largeobject_id: largeObjectIdValidator.parse(DOCUMENT_NON_RENSEIGNE_FAKE_ID) }, pool, z.void()) + ) + ) + }) + ), + Effect.map(() => true) + ) +} + const insertEtapeDocumentDb = sql< - Redefine<IInsertEtapeDocumentDbQuery, { etape_id: EtapeId; id: EtapeDocumentId; largeobject_id: LargeObjectId } & Omit<TempEtapeDocument, 'temp_document_name'>, void> + Redefine<IInsertEtapeDocumentDbQuery, { etape_id: EtapeId; id: EtapeDocumentId; largeobject_id: LargeObjectId } & Omit<TempEtapeDocument, 'temp_document_name' | 'type'>, void> >` insert into etapes_documents (id, etape_document_type_id, etape_id, description, public_lecture, entreprises_lecture, largeobject_id) values ($ id !, $ etape_document_type_id !, $ etape_id !, $ description, $ public_lecture !, $ entreprises_lecture !, $ largeobject_id !) @@ -358,11 +378,32 @@ insert into etape_avis (id, avis_type_id, etape_id, description, avis_statut_id, ` const etapeDocumentLargeObjectIdValidator = z.number().brand('EtapeDocumentLargeObjectId') +const DOCUMENT_NON_RENSEIGNE_FAKE_ID = 0 as const + +const getDocumentWithDescriptionObligatoireDbValidator = z.object({ + id: etapeDocumentIdValidator, + public_lecture: z.boolean().default(false), + entreprises_lecture: z.boolean().default(false), + etape_document_type_id: autreDocumentTypeIdValidator, + description: z.string().min(1), + largeobject_id: etapeDocumentLargeObjectIdValidator, +}) + +type DocumentWithDescriptionObligatoireDb = z.infer<typeof getDocumentWithDescriptionObligatoireDbValidator> -const getDocumentsByEtapeIdQueryValidator = z.union([ - etapeDocumentDescriptionObligatoireValidator.extend({ largeobject_id: etapeDocumentLargeObjectIdValidator }), - etapeDocumentDescriptionOptionnelleValidator.extend({ largeobject_id: etapeDocumentLargeObjectIdValidator }), -]) +const getDocumentWithDescriptionOptionnelleDbValidator = z.object({ + id: etapeDocumentIdValidator, + public_lecture: z.boolean().default(false), + entreprises_lecture: z.boolean().default(false), + etape_document_type_id: documentTypeIdValidator, + description: z.string().nullable(), + largeobject_id: etapeDocumentLargeObjectIdValidator, +}) + +type DocumentWithDescriptionOptionnelleDb = z.infer<typeof getDocumentWithDescriptionOptionnelleDbValidator> +const isDocumentWithDescriptionObligatoireDb = (document: DocumentWithDescriptionObligatoireDb | DocumentWithDescriptionOptionnelleDb): document is DocumentWithDescriptionObligatoireDb => + isAutreDocument(document.etape_document_type_id) +const getDocumentsByEtapeIdQueryValidator = z.union([getDocumentWithDescriptionObligatoireDbValidator, getDocumentWithDescriptionOptionnelleDbValidator]) type GetDocumentsByEtapeIdQuery = z.infer<typeof getDocumentsByEtapeIdQueryValidator> const getDocumentsByEtapeIdQuery = sql<Redefine<IGetDocumentsByEtapeIdQueryQuery, { titre_etape_id: EtapeId }, GetDocumentsByEtapeIdQuery>>` @@ -526,7 +567,23 @@ export const getDocumentsByEtapeId = ( demarche: CanReadDemarche ): Effect.Effect<EtapeDocument[], CaminoError<GetDocumentsByEtapeIdErrors>> => getEtapeDocumentLargeObjectIdsByEtapeId(titre_etape_id, pool, user, titreTypeId, titresAdministrationsLocales, entreprisesTitulairesOuAmodiataires, etapeTypeId, demarche).pipe( - Effect.flatMap(result => zodParseEffectTyped(z.array(etapeDocumentValidator), result, errorParseGetDocumentsByEtapeId)) + Effect.map(result => + result.map<EtapeDocument>(document => { + if (isDocumentWithDescriptionObligatoireDb(document)) { + return { + ...document, + type: 'DESCRIPTION_OBLIGATOIRE', + } + } else { + return { + ...document, + type: document.largeobject_id === DOCUMENT_NON_RENSEIGNE_FAKE_ID ? 'NON_RENSEIGNE' : 'DESCRIPTION_OPTIONNELLE', + } + } + }) + ), + Effect.flatMap(result => zodParseEffectTyped(z.array(etapeDocumentValidator), result, errorParseGetDocumentsByEtapeId)), + Effect.map(result => result) ) const getEtapesWithAutomaticStatutValidator = z.object({ diff --git a/packages/api/src/scripts/check-prolongations.ts b/packages/api/src/scripts/check-prolongations.ts index fa142e25b82e0e085841bfe3c489f6de28e62418..ea68c3c8efe621c0bf3a9ab061217ade224f5c26 100644 --- a/packages/api/src/scripts/check-prolongations.ts +++ b/packages/api/src/scripts/check-prolongations.ts @@ -11,4 +11,9 @@ const pool = new pg.Pool({ database: config().PGDATABASE, }) -Effect.runPromiseExit(checkProlongations(pool)).catch(console.error) +Effect.runPromiseExit(checkProlongations(pool)) + .then(() => process.exit(0)) + .catch(reason => { + console.error(reason) + process.exit(1) + }) diff --git a/packages/api/src/scripts/fill-documents-non-renseigne.ts b/packages/api/src/scripts/fill-documents-non-renseigne.ts new file mode 100644 index 0000000000000000000000000000000000000000..e4fbc6a725ac8ecdb740a1f7e61c1c3b2d265538 --- /dev/null +++ b/packages/api/src/scripts/fill-documents-non-renseigne.ts @@ -0,0 +1,20 @@ +import '../init' +import pg from 'pg' +import { config } from '../config' + +import { Effect } from 'effect' +import { fillDocumentsNonRenseigne } from '../business/fill-documents-non-renseigne' + +const pool = new pg.Pool({ + host: config().PGHOST, + user: config().PGUSER, + password: config().PGPASSWORD, + database: config().PGDATABASE, +}) + +Effect.runPromiseExit(fillDocumentsNonRenseigne(pool)) + .then(() => process.exit(0)) + .catch(reason => { + console.error(reason) + process.exit(1) + }) diff --git a/packages/api/tests/_utils/administrations-permissions.ts b/packages/api/tests/_utils/administrations-permissions.ts index 8cc59f2a16ebc88d42161e4dad3ee57995c14459..2d6264f300ba4b075a9dbdb53d649e2cb2455c60 100644 --- a/packages/api/tests/_utils/administrations-permissions.ts +++ b/packages/api/tests/_utils/administrations-permissions.ts @@ -37,6 +37,7 @@ export const testDocumentCreateTemp = (typeId: DocumentTypeId | AutreDocumentTyp copyFileSync(`./src/tools/small.pdf`, `${dir}/${fileName}`) return typeId === 'aut' ? { + type: 'DESCRIPTION_OBLIGATOIRE', etape_document_type_id: typeId, entreprises_lecture: true, public_lecture: true, @@ -44,6 +45,7 @@ export const testDocumentCreateTemp = (typeId: DocumentTypeId | AutreDocumentTyp temp_document_name: tempDocumentNameValidator.parse(fileName), } : { + type: 'DESCRIPTION_OPTIONNELLE', etape_document_type_id: typeId, entreprises_lecture: true, public_lecture: true, diff --git a/packages/common/src/etape.ts b/packages/common/src/etape.ts index 245c939f489e75df1aaf88b816d9c77a4e1c2775..5516cea4fd3b5514e056d6bb2f3685cf2dc6559d 100644 --- a/packages/common/src/etape.ts +++ b/packages/common/src/etape.ts @@ -44,21 +44,24 @@ export type EtapeTypeEtapeStatutWithMainStep = z.infer<typeof etapeTypeEtapeStat export const etapeDocumentIdValidator = z.string().brand('EtapeDocumentId') export type EtapeDocumentId = z.infer<typeof etapeDocumentIdValidator> -const etapeDocumentWithoutDescriptionValidator = z.object({ +const etapeDocumentDescriptionOptionnelleValidator = z.object({ + type: z.enum(['NON_RENSEIGNE', 'DESCRIPTION_OPTIONNELLE']), id: etapeDocumentIdValidator, public_lecture: z.boolean().default(false), entreprises_lecture: z.boolean().default(false), -}) -export const etapeDocumentDescriptionOptionnelleValidator = etapeDocumentWithoutDescriptionValidator.extend({ etape_document_type_id: documentTypeIdValidator, description: z.string().nullable(), }) -export const etapeDocumentDescriptionObligatoireValidator = etapeDocumentWithoutDescriptionValidator.extend({ +const etapeDocumentDescriptionObligatoireValidator = z.object({ + type: z.literal('DESCRIPTION_OBLIGATOIRE'), + id: etapeDocumentIdValidator, + public_lecture: z.boolean().default(false), + entreprises_lecture: z.boolean().default(false), etape_document_type_id: autreDocumentTypeIdValidator, description: z.string().min(1), }) -export const etapeDocumentValidator = z.union([etapeDocumentDescriptionOptionnelleValidator, etapeDocumentDescriptionObligatoireValidator]) +export const etapeDocumentValidator = z.discriminatedUnion('type', [etapeDocumentDescriptionOptionnelleValidator, etapeDocumentDescriptionObligatoireValidator]) export type EtapeDocument = z.infer<typeof etapeDocumentValidator> export const getEtapeDocumentsByEtapeIdValidator = z.object({ @@ -103,7 +106,8 @@ const regularEtapeAvisWithoutIdValidator = regularEtapeAvisValidator.omit({ id: const autreEtapeAvisWithoutIdValidator = autreEtapeAvisValidator.omit({ id: true, has_file: true }) export const etapeAvisWithoutIdValidator = z.discriminatedUnion('avis_type_id', [regularEtapeAvisWithoutIdValidator, autreEtapeAvisWithoutIdValidator]) -export const tempEtapeAvisValidator = z.discriminatedUnion('avis_type_id', [regularEtapeAvisWithoutIdValidator.extend(tempDocumentName), autreEtapeAvisWithoutIdValidator.extend(tempDocumentName)]) +const tempAvisRegularValidator = regularEtapeAvisWithoutIdValidator.extend(tempDocumentName) +export const tempEtapeAvisValidator = z.discriminatedUnion('avis_type_id', [tempAvisRegularValidator, autreEtapeAvisWithoutIdValidator.extend(tempDocumentName)]) export type TempEtapeAvis = z.infer<typeof tempEtapeAvisValidator> // Divers inputs de fonctions externes diff --git a/packages/common/src/permissions/etape-form.ts b/packages/common/src/permissions/etape-form.ts index ab4b6b7e5a7cc46fdc7cdb26113294de7e0a094f..fe5cb4238b10d4c6e864f4b3c731f63fd7ad497d 100644 --- a/packages/common/src/permissions/etape-form.ts +++ b/packages/common/src/permissions/etape-form.ts @@ -1,6 +1,4 @@ import { EntrepriseDocumentId, EntrepriseId } from '../entreprise' -import { FlattenEtape } from '../etape-form' -import { EtapeAvis, EtapeDocument, TempEtapeAvis, TempEtapeDocument } from '../etape' import { User, isAdministrationAdmin, isAdministrationEditeur, isSuper } from '../roles' import { CommuneId } from '../static/communes' import { DemarcheTypeId } from '../static/demarchesTypes' @@ -18,6 +16,8 @@ import { DemarcheId } from '../demarche' import { FirstEtapeDate } from '../date' import { isArmMecanise } from '../static/mecanise' import { getAvisTypes } from '../avisTypes' +import { EtapeDocument, TempEtapeDocument, EtapeAvis, TempEtapeAvis } from '../etape' +import { FlattenEtape } from '../etape-form' type ValidReturn = { valid: true } | { valid: false; errors: NonEmptyArray<string> } diff --git a/packages/common/src/static/avisTypes.test.ts b/packages/common/src/static/avisTypes.test.ts index 663758efe073c611889f1b94cafd7df0185d2346..5091d48804367780a74c2a30237f6b06de5c994f 100644 --- a/packages/common/src/static/avisTypes.test.ts +++ b/packages/common/src/static/avisTypes.test.ts @@ -1,5 +1,5 @@ import { test, expect } from 'vitest' -import { getAvisNom, getAvisStatut } from './avisTypes' +import { getAvisNom, getAvisStatut, isAvisRegularTypeId } from './avisTypes' test('getAvisNom', () => { expect(getAvisNom('autreAvis')).toBe('Autre avis') @@ -27,3 +27,8 @@ test('getAvisStatut', () => { ] `) }) + +test('isAvisRegularTypeId', () => { + expect(isAvisRegularTypeId('autreAvis')).toBe(false) + expect(isAvisRegularTypeId('avisAgenceRegionaleSante')).toBe(true) +}) diff --git a/packages/common/src/static/avisTypes.ts b/packages/common/src/static/avisTypes.ts index de1b691819c92f145301321c157b3344bd46913e..1ca27f2e0e30c0434e9fc57ba9a0f683ee55445d 100644 --- a/packages/common/src/static/avisTypes.ts +++ b/packages/common/src/static/avisTypes.ts @@ -17,7 +17,9 @@ export type AvisTypeId = z.infer<typeof avisTypeIdValidator> export const isAvisTypeId = (value: string): value is AvisTypeId => avisTypeIdValidator.safeParse(value).success export const autreAvisTypeIdValidator = z.enum(AVIS_TYPE_IDS_AUTRE) +export const isAvisRegularTypeId = (value: AvisTypeId): value is AvisRegularTypeId => avisTypeIdSansAutreValidator.safeParse(value).success export const avisTypeIdSansAutreValidator = z.enum(AVIS_TYPES_IDS_WITHOUT_AUTRE) +export type AvisRegularTypeId = z.infer<typeof avisTypeIdSansAutreValidator> const defaultStatutIds = ['Favorable', 'Défavorable', 'Favorable avec réserves', 'Non renseigné'] as const satisfies AvisStatutId[] diff --git a/packages/common/src/static/documentsTypes.test.ts b/packages/common/src/static/documentsTypes.test.ts index 657b0133cdba41f0063e1e92710f441ffdbaf96f..97c59df2a7dbeaf8a52c63aac14c122865da9a1e 100644 --- a/packages/common/src/static/documentsTypes.test.ts +++ b/packages/common/src/static/documentsTypes.test.ts @@ -1,4 +1,4 @@ -import { isDocumentTypeId } from './documentsTypes' +import { isAutreDocument, isDocumentTypeId } from './documentsTypes' import { test, expect } from 'vitest' test('isDocumentTypeId', () => { @@ -9,3 +9,8 @@ test('isDocumentTypeId', () => { expect(isDocumentTypeId(undefined)).toBe(false) expect(isDocumentTypeId('aut')).toBe(false) }) + +test('isAutreDocument', () => { + expect(isAutreDocument('aac')).toBe(false) + expect(isAutreDocument('aut')).toBe(true) +}) diff --git a/packages/common/src/static/documentsTypes.ts b/packages/common/src/static/documentsTypes.ts index 4b600c7b2e9f97c11a71500073cb30a847623990..8e7ddd536e587328b5db3ea53af8d6619242b0aa 100644 --- a/packages/common/src/static/documentsTypes.ts +++ b/packages/common/src/static/documentsTypes.ts @@ -270,4 +270,5 @@ export const sortedEntrepriseDocumentTypes = toSorted( ) export const sortedDocumentTypes = IDS_WITHOUT_AUTRE.map(id => DocumentsTypes[id]).sort((a, b) => a.nom.localeCompare(b.nom)) +export const isAutreDocument = (documentTypeId: DocumentTypeId | AutreDocumentTypeId): documentTypeId is AutreDocumentTypeId => AUTRE_IDS.includes(documentTypeId) export const isDocumentTypeId = (documentTypeId: string | null | undefined): documentTypeId is DocumentTypeId => IDS_WITHOUT_AUTRE.includes(documentTypeId) diff --git a/packages/ui/src/components/demarche/demarche-etape.stories.tsx b/packages/ui/src/components/demarche/demarche-etape.stories.tsx index a35e8ee56bc5f97aee2e7c82a163d86b9726718e..bf4b244e1f9fd14603ef26747fbc839b9b054900 100644 --- a/packages/ui/src/components/demarche/demarche-etape.stories.tsx +++ b/packages/ui/src/components/demarche/demarche-etape.stories.tsx @@ -74,6 +74,7 @@ const routerPushMock: Pick<CaminoRouter, 'push'> = { } const documentsDemande: EtapeDocument[] = [ { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id'), etape_document_type_id: 'car', description: 'Une description', @@ -81,6 +82,7 @@ const documentsDemande: EtapeDocument[] = [ entreprises_lecture: false, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id2'), etape_document_type_id: 'dom', description: null, @@ -88,6 +90,7 @@ const documentsDemande: EtapeDocument[] = [ entreprises_lecture: true, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id3'), etape_document_type_id: 'for', description: null, @@ -95,6 +98,7 @@ const documentsDemande: EtapeDocument[] = [ entreprises_lecture: true, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id4'), etape_document_type_id: 'jpa', description: null, @@ -150,6 +154,7 @@ const entrepriseDocumentsDemande: EtapeEntrepriseDocument[] = [ const documents: EtapeDocument[] = [ { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id'), etape_document_type_id: 'aac', description: 'Une description', @@ -157,6 +162,7 @@ const documents: EtapeDocument[] = [ entreprises_lecture: false, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id2'), etape_document_type_id: 'acg', description: null, @@ -164,6 +170,7 @@ const documents: EtapeDocument[] = [ entreprises_lecture: true, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id2'), etape_document_type_id: 'acr', description: null, @@ -749,8 +756,8 @@ export const DemandeArmMecaniseDeposable: StoryFn = () => ( sections_with_values: [{ id: 'arm', elements: [{ id: 'mecanise', type: 'radio', value: true, nom: 'Mécanisation', optionnel: false }], nom: 'Arm' }], etape_documents: [ ...documentsDemande, - { id: etapeDocumentIdValidator.parse('idDoe'), etape_document_type_id: 'doe', public_lecture: true, entreprises_lecture: true, description: null }, - { id: etapeDocumentIdValidator.parse('idDep'), etape_document_type_id: 'dep', public_lecture: true, entreprises_lecture: true, description: null }, + { id: etapeDocumentIdValidator.parse('idDoe'), type: 'DESCRIPTION_OPTIONNELLE', etape_document_type_id: 'doe', public_lecture: true, entreprises_lecture: true, description: null }, + { id: etapeDocumentIdValidator.parse('idDep'), type: 'DESCRIPTION_OPTIONNELLE', etape_document_type_id: 'dep', public_lecture: true, entreprises_lecture: true, description: null }, ], entreprises_documents: entrepriseDocumentsDemande, avis_documents: [], @@ -1134,12 +1141,12 @@ export const AxmDeposableAvecDaeEtAsl: StoryFn = () => ( sections_with_values: [], etape_documents: [ ...documentsDemande, - { id: etapeDocumentIdValidator.parse('idlem'), etape_document_type_id: 'lem', description: null, entreprises_lecture: true, public_lecture: true }, - { id: etapeDocumentIdValidator.parse('ididm'), etape_document_type_id: 'idm', description: null, entreprises_lecture: true, public_lecture: true }, - { id: etapeDocumentIdValidator.parse('idmes'), etape_document_type_id: 'mes', description: null, entreprises_lecture: true, public_lecture: true }, - { id: etapeDocumentIdValidator.parse('idmet'), etape_document_type_id: 'met', description: null, entreprises_lecture: true, public_lecture: true }, - { id: etapeDocumentIdValidator.parse('idprg'), etape_document_type_id: 'prg', description: null, entreprises_lecture: true, public_lecture: true }, - { id: etapeDocumentIdValidator.parse('idsch'), etape_document_type_id: 'sch', description: null, entreprises_lecture: true, public_lecture: true }, + { id: etapeDocumentIdValidator.parse('idlem'), type: 'DESCRIPTION_OPTIONNELLE', etape_document_type_id: 'lem', description: null, entreprises_lecture: true, public_lecture: true }, + { id: etapeDocumentIdValidator.parse('ididm'), type: 'DESCRIPTION_OPTIONNELLE', etape_document_type_id: 'idm', description: null, entreprises_lecture: true, public_lecture: true }, + { id: etapeDocumentIdValidator.parse('idmes'), type: 'DESCRIPTION_OPTIONNELLE', etape_document_type_id: 'mes', description: null, entreprises_lecture: true, public_lecture: true }, + { id: etapeDocumentIdValidator.parse('idmet'), type: 'DESCRIPTION_OPTIONNELLE', etape_document_type_id: 'met', description: null, entreprises_lecture: true, public_lecture: true }, + { id: etapeDocumentIdValidator.parse('idprg'), type: 'DESCRIPTION_OPTIONNELLE', etape_document_type_id: 'prg', description: null, entreprises_lecture: true, public_lecture: true }, + { id: etapeDocumentIdValidator.parse('idsch'), type: 'DESCRIPTION_OPTIONNELLE', etape_document_type_id: 'sch', description: null, entreprises_lecture: true, public_lecture: true }, ], entreprises_documents: [ ...entrepriseDocumentsDemande, diff --git a/packages/ui/src/components/etape-edition.stories.tsx b/packages/ui/src/components/etape-edition.stories.tsx index 4b8536aa3d9660e276df663ce66c84bf73a9a3d5..f1740055a2cce96094bf565985894ad60b330fa8 100644 --- a/packages/ui/src/components/etape-edition.stories.tsx +++ b/packages/ui/src/components/etape-edition.stories.tsx @@ -495,6 +495,7 @@ export const DemandeArmComplete: StoryFn = () => ( return Promise.resolve({ etapeDocuments: [ { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id1'), description: null, etape_document_type_id: 'car', @@ -502,6 +503,7 @@ export const DemandeArmComplete: StoryFn = () => ( entreprises_lecture: true, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id2'), description: null, etape_document_type_id: 'dep', @@ -509,6 +511,7 @@ export const DemandeArmComplete: StoryFn = () => ( entreprises_lecture: true, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id2'), description: null, etape_document_type_id: 'doe', @@ -516,6 +519,7 @@ export const DemandeArmComplete: StoryFn = () => ( entreprises_lecture: true, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id2'), description: null, etape_document_type_id: 'dom', @@ -523,6 +527,7 @@ export const DemandeArmComplete: StoryFn = () => ( entreprises_lecture: true, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id2'), description: null, etape_document_type_id: 'for', @@ -530,6 +535,7 @@ export const DemandeArmComplete: StoryFn = () => ( entreprises_lecture: true, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id2'), description: null, etape_document_type_id: 'jpa', diff --git a/packages/ui/src/components/etape/add-etape-document-popup.stories.tsx b/packages/ui/src/components/etape/add-etape-document-popup.stories.tsx index 1dfc1764111d76368a942d2a3def37771f9fc4ed..eb9b8b6f869f344e955b6ea759495bb7de5a4ea7 100644 --- a/packages/ui/src/components/etape/add-etape-document-popup.stories.tsx +++ b/packages/ui/src/components/etape/add-etape-document-popup.stories.tsx @@ -38,7 +38,14 @@ export const DocumentInitial: StoryFn = () => ( <AddEtapeDocumentPopup close={close} documentTypeIds={['car']} - initialDocument={{ description: 'description', entreprises_lecture: true, public_lecture: false, etape_document_type_id: 'car', temp_document_name: tempDocumentNameValidator.parse('value') }} + initialDocument={{ + description: 'description', + type: 'DESCRIPTION_OPTIONNELLE', + entreprises_lecture: true, + public_lecture: false, + etape_document_type_id: 'car', + temp_document_name: tempDocumentNameValidator.parse('value'), + }} user={{ ...testBlankUser, role: 'super' }} apiClient={apiClient} /> @@ -48,7 +55,14 @@ export const DocumentInitialAutre: StoryFn = () => ( <AddEtapeDocumentPopup close={close} documentTypeIds={['aut']} - initialDocument={{ description: 'description', entreprises_lecture: true, public_lecture: false, etape_document_type_id: 'aut', temp_document_name: tempDocumentNameValidator.parse('value') }} + initialDocument={{ + description: 'description', + type: 'DESCRIPTION_OBLIGATOIRE', + entreprises_lecture: true, + public_lecture: false, + etape_document_type_id: 'aut', + temp_document_name: tempDocumentNameValidator.parse('value'), + }} user={{ ...testBlankUser, role: 'super' }} apiClient={apiClient} /> diff --git a/packages/ui/src/components/etape/add-etape-document-popup.tsx b/packages/ui/src/components/etape/add-etape-document-popup.tsx index 042e134af1ce48400ee3b7d8844849802d358544..8dcbbae2ebdca386cbf100156aaee11ea875ca21 100644 --- a/packages/ui/src/components/etape/add-etape-document-popup.tsx +++ b/packages/ui/src/components/etape/add-etape-document-popup.tsx @@ -1,10 +1,10 @@ import { computed, defineComponent, ref } from 'vue' import { FunctionalPopup } from '../_ui/functional-popup' -import { AutreDocumentTypeId, DOCUMENTS_TYPES_IDS, DocumentTypeId, DocumentsTypes } from 'camino-common/src/static/documentsTypes' +import { AutreDocumentTypeId, DOCUMENTS_TYPES_IDS, DocumentTypeId, DocumentsTypes, isAutreDocument } from 'camino-common/src/static/documentsTypes' import { InputFile } from '../_ui/dsfr-input-file' import { ApiClient } from '@/api/api-client' import { TempDocumentName } from 'camino-common/src/document' -import { NonEmptyArray, Nullable, isNotNullNorUndefined } from 'camino-common/src/typescript-tools' +import { NonEmptyArray, Nullable, isNotNullNorUndefined, isNullOrUndefined } from 'camino-common/src/typescript-tools' import { EtapeDocumentModification, TempEtapeDocument, @@ -120,6 +120,7 @@ export const AddEtapeDocumentPopup = defineComponent<Props>(props => { ) const tempDocument = computed<Nullable<Omit<TempEtapeDocument, 'temp_document_name'>>>(() => ({ + type: isNullOrUndefined(etapeDocumentTypeId.value) ? null : isAutreDocument(etapeDocumentTypeId.value) ? 'DESCRIPTION_OBLIGATOIRE' : 'DESCRIPTION_OPTIONNELLE', etape_document_type_id: etapeDocumentTypeId.value, description: documentDescription.value, public_lecture: etapeDocumentVisibility.value !== null ? etapeDocumentVisibility.value === 'public' : null, diff --git a/packages/ui/src/components/etape/etape-documents-edit.stories.tsx b/packages/ui/src/components/etape/etape-documents-edit.stories.tsx index a9038a3fe016838f05e23dd1a282571501aa7263..28c6969e7e894ead0ab46e41684ad145c417ee14 100644 --- a/packages/ui/src/components/etape/etape-documents-edit.stories.tsx +++ b/packages/ui/src/components/etape/etape-documents-edit.stories.tsx @@ -19,6 +19,7 @@ export default meta const documents: EtapeDocument[] = [ { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id'), etape_document_type_id: 'dep', description: 'Une description', @@ -26,6 +27,7 @@ const documents: EtapeDocument[] = [ entreprises_lecture: false, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id-car'), etape_document_type_id: 'car', description: 'Une description', @@ -33,6 +35,7 @@ const documents: EtapeDocument[] = [ entreprises_lecture: false, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id2'), etape_document_type_id: 'doe', description: null, @@ -40,6 +43,7 @@ const documents: EtapeDocument[] = [ entreprises_lecture: true, }, { + type: 'DESCRIPTION_OBLIGATOIRE', id: etapeDocumentIdValidator.parse('idAutre'), etape_document_type_id: 'aut', description: 'description autre document', @@ -102,6 +106,7 @@ export const Complet: StoryFn = () => ( Promise.resolve({ etapeDocuments: [ { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id'), etape_document_type_id: 'dep', description: 'Une description', @@ -109,6 +114,7 @@ export const Complet: StoryFn = () => ( entreprises_lecture: false, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id2'), etape_document_type_id: 'dom', description: 'Une autre description', @@ -116,6 +122,7 @@ export const Complet: StoryFn = () => ( entreprises_lecture: false, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id3'), etape_document_type_id: 'for', description: null, @@ -123,6 +130,7 @@ export const Complet: StoryFn = () => ( entreprises_lecture: false, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id4'), etape_document_type_id: 'jpa', description: null, @@ -130,6 +138,67 @@ export const Complet: StoryFn = () => ( entreprises_lecture: false, }, { + type: 'DESCRIPTION_OPTIONNELLE', + id: etapeDocumentIdValidator.parse('id5'), + etape_document_type_id: 'car', + description: null, + public_lecture: false, + entreprises_lecture: false, + }, + ], + }), + }} + contenu={{}} + etapeId={etapeIdValidator.parse('etapeId')} + sdomZoneIds={[]} + tde={{ titreTypeId: 'arm', demarcheTypeId: 'oct', etapeTypeId: 'mfr', demarcheId, firstEtapeDate }} + isBrouillon={ETAPE_IS_NOT_BROUILLON} + completeUpdate={completeUpdateAction} + user={{ ...testBlankUser, role: 'super' }} + /> +) + +export const CompletAvecDocumentNonRenseigne: StoryFn = () => ( + <EtapeDocumentsEdit + apiClient={{ + ...apiClient, + getEtapeDocumentsByEtapeId: () => + Promise.resolve({ + etapeDocuments: [ + { + type: 'DESCRIPTION_OPTIONNELLE', + id: etapeDocumentIdValidator.parse('id'), + etape_document_type_id: 'dep', + description: 'Une description', + public_lecture: false, + entreprises_lecture: false, + }, + { + type: 'NON_RENSEIGNE', + id: etapeDocumentIdValidator.parse('id2'), + etape_document_type_id: 'dom', + description: 'Une autre description', + public_lecture: false, + entreprises_lecture: false, + }, + { + type: 'DESCRIPTION_OPTIONNELLE', + id: etapeDocumentIdValidator.parse('id3'), + etape_document_type_id: 'for', + description: null, + public_lecture: false, + entreprises_lecture: false, + }, + { + type: 'DESCRIPTION_OPTIONNELLE', + id: etapeDocumentIdValidator.parse('id4'), + etape_document_type_id: 'jpa', + description: null, + public_lecture: false, + entreprises_lecture: false, + }, + { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id5'), etape_document_type_id: 'car', description: null, @@ -235,6 +304,7 @@ export const OctroiAxmUtilisateurEntrepriseComplet: StoryFn = () => ( return Promise.resolve<GetEtapeDocumentsByEtapeId>({ etapeDocuments: [ { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id'), etape_document_type_id: 'dep', description: 'Une description', @@ -242,6 +312,7 @@ export const OctroiAxmUtilisateurEntrepriseComplet: StoryFn = () => ( entreprises_lecture: false, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id2'), etape_document_type_id: 'dom', description: 'Une autre description', @@ -249,6 +320,7 @@ export const OctroiAxmUtilisateurEntrepriseComplet: StoryFn = () => ( entreprises_lecture: false, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id3'), etape_document_type_id: 'for', description: null, @@ -256,6 +328,7 @@ export const OctroiAxmUtilisateurEntrepriseComplet: StoryFn = () => ( entreprises_lecture: false, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id4'), etape_document_type_id: 'jpa', description: null, @@ -263,6 +336,7 @@ export const OctroiAxmUtilisateurEntrepriseComplet: StoryFn = () => ( entreprises_lecture: false, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id5'), etape_document_type_id: 'car', description: null, diff --git a/packages/ui/src/components/etape/etape-documents-edit.stories_snapshots_CompletAvecDocumentNonRenseigne.html b/packages/ui/src/components/etape/etape-documents-edit.stories_snapshots_CompletAvecDocumentNonRenseigne.html new file mode 100644 index 0000000000000000000000000000000000000000..08d25ce375c969d730a8adea78f2df1c6f02aa7b --- /dev/null +++ b/packages/ui/src/components/etape/etape-documents-edit.stories_snapshots_CompletAvecDocumentNonRenseigne.html @@ -0,0 +1,104 @@ +<div> + <div class="fr-table fr-table--no-scroll" style="overflow: auto;"> + <div class="fr-table__wrapper" style="width: auto;"> + <div class="fr-table__container"> + <div class="fr-table__content"> + <table style="display: table; width: 100%;"> + <caption>Documents obligatoires</caption> + <thead> + <tr> + <th scope="col">Nom</th> + <th scope="col">Description</th> + <th scope="col">Visibilité</th> + <th scope="col" class="fr-cell--right">Action</th> + </tr> + </thead> + <tbody> + <tr> + <td><span class="">Documents cartographiques</span></td> + <td><span class=""></span></td> + <td><span class="">Visible par les administrations</span></td> + <td class="fr-cell--right"> + <div style="display: flex; justify-content: end; align-items: center;"><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-edit-line" title="Modifier le document de Documents cartographiques" aria-label="Modifier le document de Documents cartographiques" type="button"> + <!----> + </button><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document de Documents cartographiques" aria-label="Supprimer le document de Documents cartographiques" type="button"> + <!----> + </button></div> + </td> + </tr> + <tr> + <td><span class="">Formulaire de demande</span></td> + <td><span class=""></span></td> + <td><span class="">Visible par les administrations</span></td> + <td class="fr-cell--right"> + <div style="display: flex; justify-content: end; align-items: center;"><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-edit-line" title="Modifier le document de Formulaire de demande" aria-label="Modifier le document de Formulaire de demande" type="button"> + <!----> + </button><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document de Formulaire de demande" aria-label="Supprimer le document de Formulaire de demande" type="button"> + <!----> + </button></div> + </td> + </tr> + <tr> + <td><span class="fr-label--error">Dossier de demande</span></td> + <td><span class="fr-label--error">Fichier manquant</span></td> + <td><span class="">-</span></td> + <td class="fr-cell--right"><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-add-line" title="Ajouter un document Dossier de demande" aria-label="Ajouter un document Dossier de demande" type="button"> + <!----> + </button></td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> +</div> +<div style="display: flex; flex-direction: column;" class="fr-mt-3w"> + <div> + <div class="fr-table fr-table--no-scroll" style="overflow: auto;"> + <div class="fr-table__wrapper" style="width: auto;"> + <div class="fr-table__container"> + <div class="fr-table__content"> + <table style="display: table; width: 100%;"> + <caption>Documents complémentaires</caption> + <thead> + <tr> + <th scope="col">Nom</th> + <th scope="col">Description</th> + <th scope="col">Visibilité</th> + <th scope="col" class="fr-cell--right">Action</th> + </tr> + </thead> + <tbody> + <tr> + <td><span class="">Décision cas par cas</span></td> + <td><span class="">Une description</span></td> + <td><span class="">Visible par les administrations</span></td> + <td class="fr-cell--right"> + <div style="display: flex; justify-content: end; align-items: center;"><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-edit-line" title="Modifier le document de Décision cas par cas" aria-label="Modifier le document de Décision cas par cas" type="button"> + <!----> + </button><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document de Décision cas par cas" aria-label="Supprimer le document de Décision cas par cas" type="button"> + <!----> + </button></div> + </td> + </tr> + <tr> + <td><span class="">Justificatif de paiement</span></td> + <td><span class=""></span></td> + <td><span class="">Visible par les administrations</span></td> + <td class="fr-cell--right"> + <div style="display: flex; justify-content: end; align-items: center;"><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-edit-line" title="Modifier le document de Justificatif de paiement" aria-label="Modifier le document de Justificatif de paiement" type="button"> + <!----> + </button><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document de Justificatif de paiement" aria-label="Supprimer le document de Justificatif de paiement" type="button"> + <!----> + </button></div> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div><button class="fr-btn fr-btn--secondary fr-btn--md fr-icon-add-line fr-btn--icon-right fr-mt-1w" title="Ajouter un document complémentaire" aria-label="Ajouter un document complémentaire" type="button" style="align-self: end;">Ajouter</button> +</div> \ No newline at end of file diff --git a/packages/ui/src/components/etape/etape-documents-edit.tsx b/packages/ui/src/components/etape/etape-documents-edit.tsx index 9a1fb0df659286732ee91a6dfd5b28615c01bf0d..8e973129d82d22404e32dea43731573d095fa9e5 100644 --- a/packages/ui/src/components/etape/etape-documents-edit.tsx +++ b/packages/ui/src/components/etape/etape-documents-edit.tsx @@ -83,16 +83,27 @@ const EtapeDocumentsLoaded = defineComponent<EtapeDocumentsLoadedProps>(props => }) const completeRequiredDocuments = computed<PropsTable['documents']>(() => { - const documents: PropsTable['documents'] = etapeDocuments.value.filter(({ etape_document_type_id }) => documentTypes.value.some(dt => dt.id === etape_document_type_id && !dt.optionnel)) + const documents: PropsTable['documents'] = etapeDocuments.value.filter( + ({ etape_document_type_id, type }) => type !== 'NON_RENSEIGNE' && documentTypes.value.some(dt => dt.id === etape_document_type_id && !dt.optionnel) + ) return documents }) - const emptyRequiredDocuments = computed<(DocumentTypeId | AutreDocumentTypeId)[]>(() => { - const documents = documentTypes.value - .filter(({ optionnel, id }) => !optionnel && !completeRequiredDocuments.value.some(({ etape_document_type_id }) => etape_document_type_id === id)) - .map(({ id }) => id) + const emptyRequiredDocuments = computed<({ etape_document_type_id: DocumentTypeId | AutreDocumentTypeId } | NonRenseigneEmptyRequiredDocument)[]>(() => { + const documents: { etape_document_type_id: DocumentTypeId | AutreDocumentTypeId }[] = documentTypes.value + .filter(({ optionnel, id }) => !optionnel && !etapeDocuments.value.some(({ etape_document_type_id }) => etape_document_type_id === id)) + .map(({ id }) => ({ etape_document_type_id: id })) - return documents + const nonRenseigneDocs: NonRenseigneEmptyRequiredDocument[] = etapeDocuments.value + .map(({ etape_document_type_id, type, index }) => { + if (type === 'NON_RENSEIGNE') { + return { type, etape_document_type_id, index } + } else { + return null + } + }) + .filter(isNotNullNorUndefined) + return [...documents, ...nonRenseigneDocs] }) const additionnalDocumentTypeIds = computed<(DocumentTypeId | AutreDocumentTypeId)[]>(() => { return documentTypes.value.filter(dt => dt.optionnel).map(({ id }) => id) @@ -194,11 +205,16 @@ const EtapeDocumentsLoaded = defineComponent<EtapeDocumentsLoadedProps>(props => ) }) +interface NonRenseigneEmptyRequiredDocument { + type: 'NON_RENSEIGNE' + etape_document_type_id: DocumentTypeId + index: number +} type PropsTable = { caption: string documents: ((EtapeDocument | TempEtapeDocument) & { index: number })[] isBrouillon: EtapeBrouillon - emptyRequiredDocuments: (DocumentTypeId | AutreDocumentTypeId)[] + emptyRequiredDocuments: ({ etape_document_type_id: DocumentTypeId | AutreDocumentTypeId } | NonRenseigneEmptyRequiredDocument)[] getNom: (documentTypeId: DocumentTypeId | AutreDocumentTypeId) => string add: (documentTypeId: DocumentTypeId | AutreDocumentTypeId) => void edit: (documentIndex: number) => void @@ -213,7 +229,9 @@ const EtapeDocumentsTable: FunctionalComponent<PropsTable> = (props: PropsTable) props.edit(index) } const sortedDocuments = computed(() => sortDocumentsColumn(props.documents.map(d => ({ ...d, document_type_id: d.etape_document_type_id })))) - const sortedEmptyRequiredDocuments = computed(() => [...props.emptyRequiredDocuments].sort((a, b) => DocumentsTypes[a].nom.localeCompare(DocumentsTypes[b].nom))) + const sortedEmptyRequiredDocuments = computed(() => + [...props.emptyRequiredDocuments].sort((a, b) => DocumentsTypes[a.etape_document_type_id].nom.localeCompare(DocumentsTypes[b.etape_document_type_id].nom)) + ) type ColumnId = 'nom' | 'description' | 'visibilite' | 'actions' @@ -258,22 +276,54 @@ const EtapeDocumentsTable: FunctionalComponent<PropsTable> = (props: PropsTable) })) rows.push( - ...sortedEmptyRequiredDocuments.value.map<TableRow<ColumnId>>(documentTypeId => ({ - id: documentTypeId, - link: null, - columns: { - nom: { type: 'text', value: props.getNom(documentTypeId), class: [fr.cx('fr-label--disabled')] }, - description: { type: 'text', value: '-' }, - visibilite: { type: 'text', value: '-' }, - actions: { - type: 'jsx', - value: documentTypeId, - jsxElement: ( - <DsfrButtonIcon icon="fr-icon-add-line" title={`Ajouter un document ${props.getNom(documentTypeId)}`} onClick={() => props.add(documentTypeId)} buttonType="secondary" buttonSize="sm" /> - ), + ...sortedEmptyRequiredDocuments.value + .filter(document => !('type' in document)) + .map<TableRow<ColumnId>>(documentTypeId => ({ + id: documentTypeId.etape_document_type_id, + link: null, + columns: { + nom: { type: 'text', value: props.getNom(documentTypeId.etape_document_type_id), class: [fr.cx('fr-label--disabled')] }, + description: { type: 'text', value: '-' }, + visibilite: { type: 'text', value: '-' }, + actions: { + type: 'jsx', + value: documentTypeId.etape_document_type_id, + jsxElement: ( + <DsfrButtonIcon + icon="fr-icon-add-line" + title={`Ajouter un document ${props.getNom(documentTypeId.etape_document_type_id)}`} + onClick={() => props.add(documentTypeId.etape_document_type_id)} + buttonType="secondary" + buttonSize="sm" + /> + ), + }, }, - }, - })) + })), + ...sortedEmptyRequiredDocuments.value + .filter((document): document is NonRenseigneEmptyRequiredDocument => 'type' in document && document.type === 'NON_RENSEIGNE') + .map<TableRow<ColumnId>>(document => ({ + id: document.etape_document_type_id, + link: null, + columns: { + nom: { type: 'jsx', value: props.getNom(document.etape_document_type_id), jsxElement: <span class={fr.cx('fr-label--error')}>{props.getNom(document.etape_document_type_id)}</span> }, + description: { type: 'jsx', value: 'Fichier manquant', jsxElement: <span class={fr.cx('fr-label--error')}>Fichier manquant</span> }, + visibilite: { type: 'text', value: '-' }, + actions: { + type: 'jsx', + value: document.etape_document_type_id, + jsxElement: ( + <DsfrButtonIcon + icon="fr-icon-add-line" + title={`Ajouter un document ${props.getNom(document.etape_document_type_id)}`} + onClick={editDocument(document.index)} + buttonType="secondary" + buttonSize="sm" + /> + ), + }, + }, + })) ) return <TableSimple caption={{ value: props.caption, visible: true }} columns={columns} rows={rows} /> diff --git a/packages/ui/src/components/etape/etape-documents.stories.tsx b/packages/ui/src/components/etape/etape-documents.stories.tsx index e14f36546680644b9f8e4c3ba6d4b3a1a2286e18..d549218f4202086b808633a89b552ce9d45b09a7 100644 --- a/packages/ui/src/components/etape/etape-documents.stories.tsx +++ b/packages/ui/src/components/etape/etape-documents.stories.tsx @@ -14,6 +14,7 @@ export default meta const documents: EtapeDocument[] = [ { + type: 'NON_RENSEIGNE', id: etapeDocumentIdValidator.parse('id'), etape_document_type_id: 'atf', description: 'Une description', @@ -21,6 +22,7 @@ const documents: EtapeDocument[] = [ entreprises_lecture: false, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id2'), etape_document_type_id: 'bil', description: null, @@ -28,6 +30,7 @@ const documents: EtapeDocument[] = [ entreprises_lecture: true, }, { + type: 'DESCRIPTION_OPTIONNELLE', id: etapeDocumentIdValidator.parse('id2'), etape_document_type_id: 'bil', description: null, @@ -35,6 +38,7 @@ const documents: EtapeDocument[] = [ entreprises_lecture: true, }, { + type: 'DESCRIPTION_OBLIGATOIRE', id: etapeDocumentIdValidator.parse('idAutre'), etape_document_type_id: 'aut', description: 'description document', diff --git a/packages/ui/src/components/etape/etape-documents.stories_snapshots_NotConnected.html b/packages/ui/src/components/etape/etape-documents.stories_snapshots_NotConnected.html index edd8445ed449c3881a011a461efed55625fa36a1..ac00b5f0ff4e865b22d149f9e03d82a31b6e3f5c 100644 --- a/packages/ui/src/components/etape/etape-documents.stories_snapshots_NotConnected.html +++ b/packages/ui/src/components/etape/etape-documents.stories_snapshots_NotConnected.html @@ -17,9 +17,6 @@ <tr> <td><a href="/apiUrl/download/fichiers/id2" title="Télécharger le document 3 derniers bilans et comptes de résultats - nouvelle fenêtre" target="_blank">3 derniers bilans et comptes de résultats</a></td> </tr> - <tr> - <td><a href="/apiUrl/download/fichiers/id" title="Télécharger le document Une description - nouvelle fenêtre" target="_blank">Une description</a></td> - </tr> <tr> <td><a href="/apiUrl/download/fichiers/idAutre" title="Télécharger le document description document - nouvelle fenêtre" target="_blank">description document</a></td> </tr> diff --git a/packages/ui/src/components/etape/etape-documents.stories_snapshots_UserAdministration.html b/packages/ui/src/components/etape/etape-documents.stories_snapshots_UserAdministration.html index 931d5f8be4112694d663803e334b9e2d98268d0f..b7990efa59c5b943062bdbbbc049c531928f2cef 100644 --- a/packages/ui/src/components/etape/etape-documents.stories_snapshots_UserAdministration.html +++ b/packages/ui/src/components/etape/etape-documents.stories_snapshots_UserAdministration.html @@ -23,11 +23,6 @@ <td><span class=""></span></td> <td><span class="">Visible par les administrations et les entreprises titulaires</span></td> </tr> - <tr> - <td><a href="/apiUrl/download/fichiers/id" title="Télécharger le document Une description - nouvelle fenêtre" target="_blank">Une description</a></td> - <td><span class=""></span></td> - <td><span class="">Visible par les administrations</span></td> - </tr> <tr> <td><a href="/apiUrl/download/fichiers/idAutre" title="Télécharger le document description document - nouvelle fenêtre" target="_blank">description document</a></td> <td><span class=""></span></td> diff --git a/packages/ui/src/components/etape/etape-documents.stories_snapshots_UserAdministrationWithoutDesc.html b/packages/ui/src/components/etape/etape-documents.stories_snapshots_UserAdministrationWithoutDesc.html index b23b41afebb00c981d80ddc6ea7108b8b0b8428f..eedcb0558381999dd37b8f4b9ef2774b881cdb96 100644 --- a/packages/ui/src/components/etape/etape-documents.stories_snapshots_UserAdministrationWithoutDesc.html +++ b/packages/ui/src/components/etape/etape-documents.stories_snapshots_UserAdministrationWithoutDesc.html @@ -20,10 +20,6 @@ <td><a href="/apiUrl/download/fichiers/id2" title="Télécharger le document 3 derniers bilans et comptes de résultats - nouvelle fenêtre" target="_blank">3 derniers bilans et comptes de résultats</a></td> <td><span class="">Visible par les administrations et les entreprises titulaires</span></td> </tr> - <tr> - <td><a href="/apiUrl/download/fichiers/id" title="Télécharger le document Une description - nouvelle fenêtre" target="_blank">Une description</a></td> - <td><span class="">Visible par les administrations</span></td> - </tr> <tr> <td><a href="/apiUrl/download/fichiers/idAutre" title="Télécharger le document description document - nouvelle fenêtre" target="_blank">description document</a></td> <td><span class="">Visible par les administrations et les entreprises titulaires</span></td> diff --git a/packages/ui/src/components/etape/etape-documents.stories_snapshots_UserEntreprise.html b/packages/ui/src/components/etape/etape-documents.stories_snapshots_UserEntreprise.html index f4b2d93109fc461b04898d372c09758a66aeeca0..858131ce78d042023dd4e3af9cc53fbccc7cdfa0 100644 --- a/packages/ui/src/components/etape/etape-documents.stories_snapshots_UserEntreprise.html +++ b/packages/ui/src/components/etape/etape-documents.stories_snapshots_UserEntreprise.html @@ -20,10 +20,6 @@ <td><a href="/apiUrl/download/fichiers/id2" title="Télécharger le document 3 derniers bilans et comptes de résultats - nouvelle fenêtre" target="_blank">3 derniers bilans et comptes de résultats</a></td> <td><span class=""></span></td> </tr> - <tr> - <td><a href="/apiUrl/download/fichiers/id" title="Télécharger le document Une description - nouvelle fenêtre" target="_blank">Une description</a></td> - <td><span class=""></span></td> - </tr> <tr> <td><a href="/apiUrl/download/fichiers/idAutre" title="Télécharger le document description document - nouvelle fenêtre" target="_blank">description document</a></td> <td><span class=""></span></td> diff --git a/packages/ui/src/components/etape/etape-documents.stories_snapshots_UserSuper.html b/packages/ui/src/components/etape/etape-documents.stories_snapshots_UserSuper.html index 931d5f8be4112694d663803e334b9e2d98268d0f..b7990efa59c5b943062bdbbbc049c531928f2cef 100644 --- a/packages/ui/src/components/etape/etape-documents.stories_snapshots_UserSuper.html +++ b/packages/ui/src/components/etape/etape-documents.stories_snapshots_UserSuper.html @@ -23,11 +23,6 @@ <td><span class=""></span></td> <td><span class="">Visible par les administrations et les entreprises titulaires</span></td> </tr> - <tr> - <td><a href="/apiUrl/download/fichiers/id" title="Télécharger le document Une description - nouvelle fenêtre" target="_blank">Une description</a></td> - <td><span class=""></span></td> - <td><span class="">Visible par les administrations</span></td> - </tr> <tr> <td><a href="/apiUrl/download/fichiers/idAutre" title="Télécharger le document description document - nouvelle fenêtre" target="_blank">description document</a></td> <td><span class=""></span></td> diff --git a/packages/ui/src/components/etape/etape-documents.tsx b/packages/ui/src/components/etape/etape-documents.tsx index 8272a822ee6f482df64c51a6789e1228f1be761b..9c4c0f365c731e12a32e564a1ab440b9d26e2c87 100644 --- a/packages/ui/src/components/etape/etape-documents.tsx +++ b/packages/ui/src/components/etape/etape-documents.tsx @@ -49,7 +49,7 @@ export const sortDocumentsColumn = <T extends { document_type_id: DocumentTypeId type ColumnId = 'nom' | 'description' | 'visibilite' export const EtapeDocuments = defineComponent<Props>(props => { - const sortedEtapeDocuments = computed(() => sortDocumentsColumn(props.etapeDocuments.map(d => ({ ...d, document_type_id: d.etape_document_type_id })))) + const sortedEtapeDocuments = computed(() => sortDocumentsColumn(props.etapeDocuments.filter(({ type }) => type !== 'NON_RENSEIGNE').map(d => ({ ...d, document_type_id: d.etape_document_type_id })))) const sortedEntrepriseDocuments = computed(() => sortDocumentsColumn(props.entrepriseDocuments.map(d => ({ ...d, document_type_id: d.entreprise_document_type_id })))) const entreprisesIndex = props.entreprises.reduce<Record<EntrepriseId, string>>((acc, entreprise) => { diff --git a/packages/ui/src/components/etape/etape-edit-form.stories.tsx b/packages/ui/src/components/etape/etape-edit-form.stories.tsx index 3f152035cebea540666ab30ea561e1d6b80ed6d2..965a72cfe4f1ed0fae51f900cb0ac7258d12629d 100644 --- a/packages/ui/src/components/etape/etape-edit-form.stories.tsx +++ b/packages/ui/src/components/etape/etape-edit-form.stories.tsx @@ -1,7 +1,7 @@ import { EtapeEditForm, Props } from './etape-edit-form' import { Meta, StoryFn } from '@storybook/vue3' -import { ETAPE_IS_BROUILLON, ETAPE_IS_NOT_BROUILLON, EtapeId, etapeIdValidator, etapeSlugValidator } from 'camino-common/src/etape' -import { Entreprise, EtapeEntrepriseDocument, entrepriseDocumentIdValidator, entrepriseIdValidator, newEntrepriseId } from 'camino-common/src/entreprise' +import { ETAPE_IS_BROUILLON, ETAPE_IS_NOT_BROUILLON, etapeDocumentIdValidator, EtapeId, etapeIdValidator, etapeSlugValidator, GetEtapeDocumentsByEtapeId } from 'camino-common/src/etape' +import { Entreprise, EntrepriseDocument, EtapeEntrepriseDocument, entrepriseDocumentIdValidator, entrepriseIdValidator, newEntrepriseId } from 'camino-common/src/entreprise' import { CaminoDate, firstEtapeDateValidator, toCaminoDate } from 'camino-common/src/date' import { testBlankUser } from 'camino-common/src/tests-utils' import { action } from '@storybook/addon-actions' @@ -9,6 +9,7 @@ import { DemarcheId, demarcheIdValidator } from 'camino-common/src/demarche' import { titreSlugValidator } from 'camino-common/src/validators/titres' import { FeatureMultiPolygon } from 'camino-common/src/perimetre' import { tempDocumentNameValidator } from 'camino-common/src/document' +import { DOCUMENTS_TYPES_IDS } from 'camino-common/src/static/documentsTypes' const meta: Meta = { title: 'Components/Etape/EditForm', @@ -254,6 +255,294 @@ export const Default: StoryFn = () => ( /> ) +const apiClientAvecDocumentsComplets = { + ...etapeEditFormApiClient, + getEntrepriseDocuments(): Promise<EntrepriseDocument[]> { + const values: EntrepriseDocument[] = [ + { + id: entrepriseDocumentIdValidator.parse('id-1'), + can_delete_document: true, + date: toCaminoDate('2025-01-01'), + description: null, + entreprise_document_type_id: DOCUMENTS_TYPES_IDS.attestationFiscale, + entreprise_id: entreprises[0].id, + }, + { + id: entrepriseDocumentIdValidator.parse('id-2'), + can_delete_document: true, + date: toCaminoDate('2025-01-01'), + description: null, + entreprise_document_type_id: DOCUMENTS_TYPES_IDS.curriculumVitae, + entreprise_id: entreprises[0].id, + }, + { + id: entrepriseDocumentIdValidator.parse('id-3'), + can_delete_document: true, + date: toCaminoDate('2025-01-01'), + description: null, + entreprise_document_type_id: DOCUMENTS_TYPES_IDS.justificatifDIdentite, + entreprise_id: entreprises[0].id, + }, + { + id: entrepriseDocumentIdValidator.parse('id-4'), + can_delete_document: true, + date: toCaminoDate('2025-01-01'), + description: null, + entreprise_document_type_id: DOCUMENTS_TYPES_IDS.justificatifDesCapacitesTechniques, + entreprise_id: entreprises[0].id, + }, + { + id: entrepriseDocumentIdValidator.parse('id-5'), + can_delete_document: true, + date: toCaminoDate('2025-01-01'), + description: null, + entreprise_document_type_id: DOCUMENTS_TYPES_IDS.kbis, + entreprise_id: entreprises[0].id, + }, + { + id: entrepriseDocumentIdValidator.parse('id-6'), + can_delete_document: true, + date: toCaminoDate('2025-01-01'), + description: null, + entreprise_document_type_id: DOCUMENTS_TYPES_IDS.justificatifDesCapacitesFinancieres, + entreprise_id: entreprises[0].id, + }, + ] + return Promise.resolve(values) + }, + getEtapeDocumentsByEtapeId(etapeId: EtapeId): Promise<GetEtapeDocumentsByEtapeId> { + getEtapeDocumentsByEtapeIdAction(etapeId) + const values: GetEtapeDocumentsByEtapeId = { + etapeDocuments: [ + { + type: 'DESCRIPTION_OPTIONNELLE', + id: etapeDocumentIdValidator.parse('id-1'), + description: '', + entreprises_lecture: true, + public_lecture: true, + etape_document_type_id: DOCUMENTS_TYPES_IDS.decisionCasParCas, + }, + { + type: 'DESCRIPTION_OPTIONNELLE', + id: etapeDocumentIdValidator.parse('id-2'), + description: '', + entreprises_lecture: true, + public_lecture: true, + etape_document_type_id: DOCUMENTS_TYPES_IDS.documentsCartographiques, + }, + { + type: 'DESCRIPTION_OPTIONNELLE', + id: etapeDocumentIdValidator.parse('id-3'), + description: '', + entreprises_lecture: true, + public_lecture: true, + etape_document_type_id: DOCUMENTS_TYPES_IDS.dossierLoiSurLEau, + }, + { + type: 'DESCRIPTION_OPTIONNELLE', + id: etapeDocumentIdValidator.parse('id-4'), + description: '', + entreprises_lecture: true, + public_lecture: true, + etape_document_type_id: DOCUMENTS_TYPES_IDS.dossierDeDemande, + }, + { + type: 'DESCRIPTION_OPTIONNELLE', + id: etapeDocumentIdValidator.parse('id-5'), + description: '', + entreprises_lecture: true, + public_lecture: true, + etape_document_type_id: DOCUMENTS_TYPES_IDS.formulaireDeDemande, + }, + ], + } + return Promise.resolve(values) + }, + getEtapeEntrepriseDocuments(etapeId: EtapeId): Promise<EtapeEntrepriseDocument[]> { + getEtapeEntrepriseDocumentsAction(etapeId) + const documents: EtapeEntrepriseDocument[] = [ + { + date: toCaminoDate('2025-01-01'), + description: null, + id: entrepriseDocumentIdValidator.parse('id-1'), + entreprise_id: entreprises[0].id, + entreprise_document_type_id: DOCUMENTS_TYPES_IDS.attestationFiscale, + }, + { + id: entrepriseDocumentIdValidator.parse('id-2'), + date: toCaminoDate('2025-01-01'), + description: null, + entreprise_document_type_id: DOCUMENTS_TYPES_IDS.curriculumVitae, + entreprise_id: entreprises[0].id, + }, + { + id: entrepriseDocumentIdValidator.parse('id-3'), + date: toCaminoDate('2025-01-01'), + description: null, + entreprise_document_type_id: DOCUMENTS_TYPES_IDS.justificatifDIdentite, + entreprise_id: entreprises[0].id, + }, + { + id: entrepriseDocumentIdValidator.parse('id-4'), + date: toCaminoDate('2025-01-01'), + description: null, + entreprise_document_type_id: DOCUMENTS_TYPES_IDS.justificatifDesCapacitesTechniques, + entreprise_id: entreprises[0].id, + }, + { + id: entrepriseDocumentIdValidator.parse('id-5'), + date: toCaminoDate('2025-01-01'), + description: null, + entreprise_document_type_id: DOCUMENTS_TYPES_IDS.kbis, + entreprise_id: entreprises[0].id, + }, + { + id: entrepriseDocumentIdValidator.parse('id-6'), + date: toCaminoDate('2025-01-01'), + description: null, + entreprise_document_type_id: DOCUMENTS_TYPES_IDS.justificatifDesCapacitesFinancieres, + entreprise_id: entreprises[0].id, + }, + ] + return Promise.resolve(documents) + }, +} +export const EtapeCompleteEnregistrable: StoryFn = () => ( + <EtapeEditForm + initTab="points" + perimetre={{ sdomZoneIds: [], superposition_alertes: [], communes: [] }} + apiClient={apiClientAvecDocumentsComplets} + demarcheId={demarcheIdValidator.parse('demarcheId')} + demarcheTypeId="oct" + titreSlug={titreSlugValidator.parse('titre-slug')} + titreTypeId="arm" + etape={{ + ...etape, + perimetre: { + value: { + geojson4326Perimetre: perimetre, + geojsonOriginePerimetre: perimetre, + geojsonOrigineGeoSystemeId: '4326', + geojson4326Forages: null, + geojson4326Points: null, + geojsonOrigineForages: null, + geojsonOriginePoints: null, + surface: null, + }, + heritee: false, + etapeHeritee: null, + }, + contenu: { arm: { mecanise: { value: true, heritee: false, etapeHeritee: null }, franchissements: { value: 2, heritee: false, etapeHeritee: null } } }, + titulaires: { value: [entreprises[0].id], heritee: false, etapeHeritee: null }, + amodiataires: { + value: [], + heritee: false, + etapeHeritee: null, + }, + }} + user={{ + role: 'super', + ...testBlankUser, + }} + entreprises={entreprises} + goToDemarche={goToDemarcheAction} + firstEtapeDate={firstEtapeDateValidator.parse('2022-01-01')} + /> +) + +export const EtapeCompleteEnregistrableAvecDocumentNonRenseigne: StoryFn = () => ( + <EtapeEditForm + initTab="points" + perimetre={{ sdomZoneIds: [], superposition_alertes: [], communes: [] }} + apiClient={{ + ...apiClientAvecDocumentsComplets, + getEtapeDocumentsByEtapeId(etapeId: EtapeId): Promise<GetEtapeDocumentsByEtapeId> { + getEtapeDocumentsByEtapeIdAction(etapeId) + const values: GetEtapeDocumentsByEtapeId = { + etapeDocuments: [ + { + type: 'DESCRIPTION_OPTIONNELLE', + id: etapeDocumentIdValidator.parse('id-1'), + description: '', + entreprises_lecture: true, + public_lecture: true, + etape_document_type_id: DOCUMENTS_TYPES_IDS.decisionCasParCas, + }, + { + type: 'DESCRIPTION_OPTIONNELLE', + id: etapeDocumentIdValidator.parse('id-2'), + description: '', + entreprises_lecture: true, + public_lecture: true, + etape_document_type_id: DOCUMENTS_TYPES_IDS.documentsCartographiques, + }, + { + type: 'DESCRIPTION_OPTIONNELLE', + id: etapeDocumentIdValidator.parse('id-3'), + description: '', + entreprises_lecture: true, + public_lecture: true, + etape_document_type_id: DOCUMENTS_TYPES_IDS.dossierLoiSurLEau, + }, + { + type: 'NON_RENSEIGNE', + id: etapeDocumentIdValidator.parse('id-4'), + description: '', + entreprises_lecture: true, + public_lecture: true, + etape_document_type_id: DOCUMENTS_TYPES_IDS.dossierDeDemande, + }, + { + type: 'NON_RENSEIGNE', + id: etapeDocumentIdValidator.parse('id-5'), + description: '', + entreprises_lecture: true, + public_lecture: true, + etape_document_type_id: DOCUMENTS_TYPES_IDS.formulaireDeDemande, + }, + ], + } + return Promise.resolve(values) + }, + }} + demarcheId={demarcheIdValidator.parse('demarcheId')} + demarcheTypeId="oct" + titreSlug={titreSlugValidator.parse('titre-slug')} + titreTypeId="arm" + etape={{ + ...etape, + perimetre: { + value: { + geojson4326Perimetre: perimetre, + geojsonOriginePerimetre: perimetre, + geojsonOrigineGeoSystemeId: '4326', + geojson4326Forages: null, + geojson4326Points: null, + geojsonOrigineForages: null, + geojsonOriginePoints: null, + surface: null, + }, + heritee: false, + etapeHeritee: null, + }, + contenu: { arm: { mecanise: { value: true, heritee: false, etapeHeritee: null }, franchissements: { value: 2, heritee: false, etapeHeritee: null } } }, + titulaires: { value: [entreprises[0].id], heritee: false, etapeHeritee: null }, + amodiataires: { + value: [], + heritee: false, + etapeHeritee: null, + }, + }} + user={{ + role: 'super', + ...testBlankUser, + }} + entreprises={entreprises} + goToDemarche={goToDemarcheAction} + firstEtapeDate={firstEtapeDateValidator.parse('2022-01-01')} + /> +) + export const EtapeModification: StoryFn = () => ( <EtapeEditForm initTab="points" diff --git a/packages/ui/src/components/etape/etape-edit-form.stories_snapshots_EtapeCompleteEnregistrable.html b/packages/ui/src/components/etape/etape-edit-form.stories_snapshots_EtapeCompleteEnregistrable.html new file mode 100644 index 0000000000000000000000000000000000000000..7258501cd7316bacc1edf25145cf103d78240e08 --- /dev/null +++ b/packages/ui/src/components/etape/etape-edit-form.stories_snapshots_EtapeCompleteEnregistrable.html @@ -0,0 +1,640 @@ +<form> + <div> + <div> + <h2 class="fr-pt-6w">Informations principales + <!----> + </h2> + <!----> + </div> + <div> + <div class="fr-grid-row"> + <div class="fr-col-12 fr-col-xl-6"> + <div class="fr-input-group" style="margin-bottom: 0px;"><label class="fr-label" for="etape_date">Date + <!----><span class="fr-hint-text">au format jj/mm/aaaa</span> + <!----> + </label><input class="fr-input" name="etape_date" id="etape_date" required="" type="date" value="2022-02-02"> + <!----> + </div> + <div class="fr-mt-2w"> + <div class="fr-input-group"><label class="fr-label fr-mb-1w" for="select-etape-type">Type</label> + <div id="select-etape-type_wrapper" class="_typeahead_8eddf1"> + <div class="flex"><input id="select-etape-type" type="text" title="" name="select-etape-type" disabled="" class="fr-input" placeholder="" autocomplete="off" role="combobox" aria-controls="select-etape-type-control" aria-activedescendant="select-etape-type-control" aria-expanded="false" aria-autocomplete="list" value="demande"></div> + <ul class="_typeahead-list_8eddf1 " tabindex="-1" id="select-etape-type-control" role="listbox"> + <li class="_typeahead-list-item_8eddf1 _typeahead-list-item-active_8eddf1" aria-selected="false" id="select-etape-type-control-0"><strong>Consultation des administrations centrales</strong></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="select-etape-type-control-1"><strong>Avis de la commission des autorisations de recherches minières (CARM)</strong></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="select-etape-type-control-2"><strong>Avis des services et commissions consultatives</strong></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="select-etape-type-control-3"><strong>Enregistrement de la demande</strong></li> + </ul> + </div> + </div> + <div class="fr-select-group"><label class="fr-label" for="select-etape-statut-id">Statut + <!----> + </label><select class="fr-select" id="select-etape-statut-id" aria-label="Statut" name="select-etape-statut-id" value="fai"> + <option selected="" disabled="" value="fai">fait</option> + <option disabled="" hidden="" value="">Selectionnez une option</option> + </select></div> + </div> + </div> + </div> + </div> + </div> + <div gotodemarche="function(...args){if(options.implicit){let storyRenderer=("__STORYBOOK_PREVIEW__"in global?global.__STORYBOOK_PREVIEW__:void 0)?.storyRenders.find(render=>render.phase==="playing"||render.phase==="rendering");if(storyRenderer){let deprecated=!window?.FEATURES?.disallowImplicitActionsInRenderV8,error=new ImplicitActionsDuringRendering({phase:storyRenderer.phase,name,deprecated});if(deprecated)console.warn(error);else throw error}}let channel=addons.getChannel(),id=generateId(),minDepth=5,serializedArgs=args.map(serializeArg),normalizedArgs=args.length>1?serializedArgs:serializedArgs[0],actionDisplayToEmit={id,count:0,data:{name,args:normalizedArgs},options:{...actionOptions,maxDepth:minDepth+(actionOptions.depth||3),allowFunction:actionOptions.allowFunction||!1}};channel.emit(EVENT_ID,actionDisplayToEmit);}"> + <div> + <div> + <h2 class="fr-pt-6w">Propriétés + <!----> + </h2> + <!----> + </div> + <div> + <div class="fr-grid-row"> + <div class="fr-col-12 fr-col-xl-6"> + <div class="fr-mb-1w"> + <div style="display: flex;"> + <div class="fr-input-group" style="margin-bottom: 0px;"><label class="fr-label" for="fondamentale_duree_annees">Durée (années) + <!----> + <!----> + <!----> + </label><input class="fr-input" name="fondamentale_duree_annees" id="fondamentale_duree_annees" required="" type="number" value="0"> + <!----> + </div> + <div class="fr-input-group fr-ml-2w" style="margin-bottom: 0px;"><label class="fr-label" for="fondamentale_duree_mois">Durée (mois) + <!----> + <!----> + <!----> + </label><input class="fr-input" name="fondamentale_duree_mois" id="fondamentale_duree_mois" required="" type="number" value="4"> + <!----> + </div> + </div> + <div class="fr-pt-2w fr-pb-2w"> + <div class="fr-toggle"><input type="checkbox" class="fr-toggle__input" id="heritage_duree"><label class="fr-toggle__label" for="heritage_duree" data-fr-checked-label="Activé" data-fr-unchecked-label="Désactivé"><span class=" fr-ml-4w">Hériter de l’étape "Demande" du 01-01-2022</span></label> + <!----> + </div> + </div> + </div> + <!----> + <div class="fr-mb-1w"> + <div class="fr-input-group fr-mb-0"><label class="fr-label" for="filters_autocomplete_titulaires">Titulaires</label> + <div id="filters_autocomplete_titulaires_wrapper" class="_typeahead_8eddf1 fr-mt-1w"> + <div style="display: flex; max-height: unset; flex-wrap: wrap; gap: 8px; outline-offset: 2px; outline-width: 2px; outline-color: rgb(10, 118, 246);" class="fr-input _fake-input_8eddf1"><button class="fr-tag fr-tag--sm fr-tag--dismiss" title="Supprimer Nom de l'entreprise 0" aria-label="Supprimer Nom de l'entreprise 0">Nom de l'entreprise 0</button><input id="filters_autocomplete_titulaires" type="text" name="filters_autocomplete_titulaires" style="outline: none;" placeholder="titulaires" autocomplete="off" role="combobox" aria-controls="filters_autocomplete_titulaires-control" aria-activedescendant="filters_autocomplete_titulaires-control" aria-expanded="false" aria-autocomplete="list" value=""></div> + <ul class="_typeahead-list_8eddf1 " tabindex="-1" id="filters_autocomplete_titulaires-control" role="listbox"> + <li class="_typeahead-list-item_8eddf1 _typeahead-list-item-active_8eddf1" aria-selected="false" id="filters_autocomplete_titulaires-control-0"><span>Nom de l'entreprise 1</span></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="filters_autocomplete_titulaires-control-1"><span>Nom de l'entreprise 2</span></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="filters_autocomplete_titulaires-control-2"><span>Nom de l'entreprise 3</span></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="filters_autocomplete_titulaires-control-3"><span>Nom de l'entreprise 4</span></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="filters_autocomplete_titulaires-control-4"><span>Nom de l'entreprise 5</span></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="filters_autocomplete_titulaires-control-5"><span>Nom de l'entreprise 6</span></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="filters_autocomplete_titulaires-control-6"><span>Nom de l'entreprise 7</span></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="filters_autocomplete_titulaires-control-7"><span>Nom de l'entreprise 8</span></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="filters_autocomplete_titulaires-control-8"><span>Nom de l'entreprise 9</span></li> + </ul> + </div> + </div> + <!----> + </div> + <!----> + <div class="fr-mb-1w"> + <div> + <div class="fr-input-group fr-input-group--disabled fr-mb-0"><label class="fr-label">Substances</label> + <div class="fr-mt-1w"> + <p class="fr-tag fr-tag--md fr-mr-1w" title="Argent" aria-label="Argent">Argent</p> + </div> + </div> + </div> + <div class="fr-pt-2w fr-pb-2w"> + <div class="fr-toggle"><input type="checkbox" class="fr-toggle__input" checked="" id="heritage_substances"><label class="fr-toggle__label" for="heritage_substances" data-fr-checked-label="Activé" data-fr-unchecked-label="Désactivé"><span class=" fr-ml-4w">Hériter de l’étape "Demande" du 01-01-2022</span></label> + <!----> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + <div> + <div> + <h2 class="fr-pt-6w">Propriétés spécifiques + <!----> + </h2> + <div class="fr-alert fr-alert--info fr-alert--sm"> + <p>Ce bloc permet de savoir si la prospection est mécanisée ou non et s’il y a des franchissements de cours d’eau (si oui, combien ?)</p> + </div> + </div> + <div> + <div class="fr-grid-row"> + <div class="fr-col-12 fr-col-xl-6"> + <div> + <h3>Caractéristiques ARM</h3> + <div class="fr-mb-1w"> + <div> + <fieldset class="fr-fieldset" id="mecanise" aria-labelledby="mecanise-legend" style="flex-direction: column; align-items: flex-start;"> + <legend class="fr-fieldset__legend--regular fr-fieldset__legend" id="mecanise-legend">Prospection mécanisée + <!----> + </legend> + <div class="fr-fieldset__element"> + <div class="fr-radio-group"><input type="radio" id="mecanise-0" checked="" name="mecanise"><label class="fr-label" for="mecanise-0">Oui + <!----> + </label></div> + </div> + <div class="fr-fieldset__element"> + <div class="fr-radio-group"><input type="radio" id="mecanise-1" name="mecanise"><label class="fr-label" for="mecanise-1">Non + <!----> + </label></div> + </div> + </fieldset> + </div> + <!----> + </div> + <div class="fr-mb-1w"> + <div> + <div class="fr-input-group" style="margin-bottom: 0px;"><label class="fr-label" for="franchissements">Franchissements de cours d'eau (optionnel) + <!----><span class="fr-hint-text">Nombre de franchissements de cours d'eau</span> + </label><input class="fr-input" name="franchissements" id="franchissements" type="number" min="0" value="2"> + <!----> + </div> + </div> + <!----> + </div> + </div> + </div> + </div> + </div> + </div> + <div> + <div> + <h2 class="fr-pt-6w">Périmètre + <!----> + </h2> + <!----> + </div> + <div> + <div> + <div class="fr-mb-1w"> + <div><button class="fr-btn fr-btn--primary fr-btn--md" title="Importer un périmètre" aria-label="Importer un périmètre" type="button">Importer un périmètre</button><button class="fr-btn fr-btn--secondary fr-btn--md fr-ml-2w" title="Éditer les points" aria-label="Éditer les points" type="button">Éditer les points</button> + <!----> + <!----> + <div class="fr-mt-2w"> + <div> + <div class="fr-tabs" style="--tabs-height: 0px;"> + <ul class="fr-tabs__list" role="tablist" aria-label="Affichage des titres en vue carte ou tableau"> + <li role="presentation"><button id="tabpanel-carte-perimetre_edit" class="fr-tabs__tab fr-icon-earth-fill fr-tabs__tab--icon-left" tabindex="-1" role="tab" aria-label="Carte" aria-selected="false" aria-controls="tabpanel-carte-perimetre_edit-panel">Carte</button></li> + <li role="presentation"><button id="tabpanel-points-perimetre_edit" class="fr-tabs__tab fr-icon-list-unordered fr-tabs__tab--icon-left" tabindex="0" role="tab" aria-label="Tableau" aria-selected="true" aria-controls="tabpanel-points-perimetre_edit-panel">Tableau</button></li> + </ul> + <div id="tabpanel-carte-perimetre_edit-panel" class="fr-tabs__panel fr-tabs__panel--direction-start" role="tabpanel" aria-labelledby="tabpanel-carte-perimetre_edit" tabindex="0"> + <!----> + </div> + <div id="tabpanel-points-perimetre_edit-panel" class="fr-tabs__panel fr-tabs__panel--selected" role="tabpanel" aria-labelledby="tabpanel-points-perimetre_edit" tabindex="0"> + <div style="display: flex; flex-direction: column;"> + <div class="fr-select-group"><label class="fr-label" for="4326">Système géographique</label> + <div id="4326_wrapper" class="_typeahead_8eddf1"> + <div class="flex"><input id="4326" type="text" title="" name="4326" disabled="" class="fr-input" placeholder="" autocomplete="off" role="combobox" aria-controls="4326-control" aria-activedescendant="4326-control" aria-expanded="false" aria-autocomplete="list" value="WGS84 - (4326)"></div> + <ul class="_typeahead-list_8eddf1 " tabindex="-1" id="4326-control" role="listbox"> + <li class="_typeahead-list-item_8eddf1 _typeahead-list-item-active_8eddf1" aria-selected="false" id="4326-control-0"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="fr-text--bold">Mayotte 2004 / UTM zone 38S - (4471)</span><span class="fr-text">Mayotte - à terre et extraterritorial</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-1"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="fr-text--bold">Réunion / UTM zone 40S - (2975)</span><span class="fr-text">Réunion</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-2"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="fr-text--bold">RGAF09 / UTM zone 20N - (5490)</span><span class="fr-text">Antilles françaises à terre et extraterritorial à l'ouest du méridien 60° Ouest - Guadeloupe (incluant Grande Terre, Basse Terre, Marie Galante, Les Saintes, Iles de la Petite Terre, La Desirade, St Barthélemy, partie nord de St Martin) et Martinique.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-3"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="fr-text--bold">RGF93 / Lambert-93 - (2154)</span><span class="fr-text">France - à terre et extraterritorial - continentale et Corse.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-4"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="fr-text--bold">RGFG95 / UTM zone 22N - (2972)</span><span class="fr-text">Guyane française - à terre et extraterritorial.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-5"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="fr-text--bold">St Pierre et Miquelon / UTM zone 21N - (4467)</span><span class="fr-text">St Pierre et Miquelon à terre et extraterritorial</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-6"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">ED50 - (4230)</span><span class="fr-text">Europe</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-7"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">Guadeloupe 1948 / UTM zone 20N - (2970)</span><span class="fr-text">Guadeloupe - à terre - Basse-Terre, Grande-Terre, La Desirade, Marie-Galante, Les Saintes.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-8"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">NTF (Greenwich) - (4275)</span><span class="fr-text">France - à terre - continentale et Corse.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-9"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">NTF (Paris) - (4807)</span><span class="fr-text">France - à terre - continentale et Corse.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-10"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">NTF (Paris) / Lambert Nord France - (27561)</span><span class="fr-text">France - continentale au nord de 53,5 grades North (48°09'N).</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-11"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">NTF (Paris) / Lambert Sud france - (27563)</span><span class="fr-text">France - continentale au sud de 50,5 grades nord (45°27'N).</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-12"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">NTF (Paris) / Lambert zone I - (27571)</span><span class="fr-text">France - continentale au nord de 53,5 grades nord (48°09'N).</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-13"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">NTF (Paris) / Lambert zone II - (27572)</span><span class="fr-text">France - continentale entre 45°27'N et 48°09'N.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-14"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">NTF (Paris) / Lambert zone III - (27573)</span><span class="fr-text">France - continentale au sud de 50,5 grades nord (45°27'N).</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-15"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">RGF93 - (4171)</span><span class="fr-text">France - à terre et extraterritorial - continentale et Corse.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-16"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">RGF93 / CC49 - (3949)</span><span class="fr-text">France - continentale entre 48°N et 50°N.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-17"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">RGFG95 - (4624)</span><span class="fr-text">Guyane Française - à terre et extraterritorial.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-18"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">RGFG95 / UTM zone 21N - (3313)</span><span class="fr-text">Guyane française - à terre et extraterritorial.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-19"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">WGS84 / UTM zone 20N - (32620)</span><span class="fr-text">Hémisphère Nord - entre 66°W et 60°W</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-20"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">WGS84 / UTM zone 21N - (32621)</span><span class="fr-text">Hémisphère Nord - entre 60°W et 54°W</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-21"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">WGS84 / UTM zone 22N - (32622)</span><span class="fr-text">Hémisphère Nord - entre 54°W et 48°W</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-22"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">WGS84 / UTM zone 30N - (32630)</span><span class="fr-text">Hémisphère Nord - entre 6°W et 0°W</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-23"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">WGS84 / UTM zone 31N - (32631)</span><span class="fr-text">Hémisphère Nord - entre 0°E et 6°E</span></div> + </li> + </ul> + </div> + </div> + <div style="display: flex; flex-direction: column;"> + <div class="fr-mb-1w"> + <div class="fr-table fr-table--no-scroll" style="overflow: auto;"> + <div class="fr-table__wrapper" style="width: auto;"> + <div class="fr-table__container"> + <div class="fr-table__content"> + <table style="display: table; width: 100%;"> + <caption>Points</caption> + <thead> + <tr> + <th scope="col">Nom du point</th> + <th scope="col">Description</th> + <th scope="col">Longitude</th> + <th scope="col">Latitude</th> + <th scope="col">Longitude (E)</th> + <th scope="col">Latitude (N)</th> + </tr> + </thead> + <tbody> + <tr> + <td><span class="">A</span></td> + <td><span class="">Polygone 1</span></td> + <td><span class="">-52.54</span></td> + <td><span class="">4.22269896902571</span></td> + <td><span class="">-52°32,4'</span></td> + <td><span class="">4°13,362'</span></td> + </tr> + <tr> + <td><span class="">B</span></td> + <td><span class="">Polygone 1</span></td> + <td><span class="">-52.55</span></td> + <td><span class="">4.22438936251509</span></td> + <td><span class="">-52°33'</span></td> + <td><span class="">4°13,463'</span></td> + </tr> + <tr> + <td><span class="">C</span></td> + <td><span class="">Polygone 1</span></td> + <td><span class="">-52.55</span></td> + <td><span class="">4.24113309117193</span></td> + <td><span class="">-52°33'</span></td> + <td><span class="">4°14,468'</span></td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + <div style="display: flex;"> + <!----><a class="fr-btn fr-btn--secondary fr-btn--icon-right fr-icon-download-line" title="Télécharge les points au format csv" href="data:text/csv;charset=utf-8,nom;description;longitude;latitude;x_deg;y_deg%0AA;Polygone%201;-52.54;4.22269896902571;-52%C2%B032,4';4%C2%B013,362'%0AB;Polygone%201;-52.55;4.22438936251509;-52%C2%B033';4%C2%B013,463'%0AC;Polygone%201;-52.55;4.24113309117193;-52%C2%B033';4%C2%B014,468'" download="points-titre-slug.csv" style="margin-left: auto;">.csv</a> + </div> + </div> + <!----> + </div> + </div> + </div> + </div> + </div> + </div> + <!----> + </div> + <!----> + <!----> + <!----> + </div> + </div> + </div> + <div> + <div> + <h2 class="fr-pt-6w">Liste des documents + <!----> + </h2> + <!----> + </div> + <div> + <div> + <div class="fr-table fr-table--no-scroll" style="overflow: auto;"> + <div class="fr-table__wrapper" style="width: auto;"> + <div class="fr-table__container"> + <div class="fr-table__content"> + <table style="display: table; width: 100%;"> + <caption>Documents obligatoires</caption> + <thead> + <tr> + <th scope="col">Nom</th> + <th scope="col">Description</th> + <th scope="col">Visibilité</th> + <th scope="col" class="fr-cell--right">Action</th> + </tr> + </thead> + <tbody> + <tr> + <td><span class="">Décision cas par cas</span></td> + <td><span class=""></span></td> + <td><span class="">Public</span></td> + <td class="fr-cell--right"> + <div style="display: flex; justify-content: end; align-items: center;"><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-edit-line" title="Modifier le document de Décision cas par cas" aria-label="Modifier le document de Décision cas par cas" type="button"> + <!----> + </button><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document de Décision cas par cas" aria-label="Supprimer le document de Décision cas par cas" type="button"> + <!----> + </button></div> + </td> + </tr> + <tr> + <td><span class="">Documents cartographiques</span></td> + <td><span class=""></span></td> + <td><span class="">Public</span></td> + <td class="fr-cell--right"> + <div style="display: flex; justify-content: end; align-items: center;"><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-edit-line" title="Modifier le document de Documents cartographiques" aria-label="Modifier le document de Documents cartographiques" type="button"> + <!----> + </button><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document de Documents cartographiques" aria-label="Supprimer le document de Documents cartographiques" type="button"> + <!----> + </button></div> + </td> + </tr> + <tr> + <td><span class="">Dossier "Loi sur l'eau"</span></td> + <td><span class=""></span></td> + <td><span class="">Public</span></td> + <td class="fr-cell--right"> + <div style="display: flex; justify-content: end; align-items: center;"><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-edit-line" title="Modifier le document de Dossier "Loi sur l'eau"" aria-label="Modifier le document de Dossier "Loi sur l'eau"" type="button"> + <!----> + </button><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document de Dossier "Loi sur l'eau"" aria-label="Supprimer le document de Dossier "Loi sur l'eau"" type="button"> + <!----> + </button></div> + </td> + </tr> + <tr> + <td><span class="">Dossier de demande</span></td> + <td><span class=""></span></td> + <td><span class="">Public</span></td> + <td class="fr-cell--right"> + <div style="display: flex; justify-content: end; align-items: center;"><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-edit-line" title="Modifier le document de Dossier de demande" aria-label="Modifier le document de Dossier de demande" type="button"> + <!----> + </button><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document de Dossier de demande" aria-label="Supprimer le document de Dossier de demande" type="button"> + <!----> + </button></div> + </td> + </tr> + <tr> + <td><span class="">Formulaire de demande</span></td> + <td><span class=""></span></td> + <td><span class="">Public</span></td> + <td class="fr-cell--right"> + <div style="display: flex; justify-content: end; align-items: center;"><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-edit-line" title="Modifier le document de Formulaire de demande" aria-label="Modifier le document de Formulaire de demande" type="button"> + <!----> + </button><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document de Formulaire de demande" aria-label="Supprimer le document de Formulaire de demande" type="button"> + <!----> + </button></div> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + <div style="display: flex; flex-direction: column;" class="fr-mt-3w"> + <div> + <div class="fr-table fr-table--no-scroll" style="overflow: auto;"> + <div class="fr-table__wrapper" style="width: auto;"> + <div class="fr-table__container"> + <div class="fr-table__content"> + <table style="display: table; width: 100%;"> + <caption>Documents complémentaires</caption> + <thead> + <tr> + <th scope="col">Nom</th> + <th scope="col">Description</th> + <th scope="col">Visibilité</th> + <th scope="col" class="fr-cell--right">Action</th> + </tr> + </thead> + <tbody></tbody> + </table> + </div> + </div> + </div> + </div> + </div><button class="fr-btn fr-btn--secondary fr-btn--md fr-icon-add-line fr-btn--icon-right fr-mt-1w" title="Ajouter un document complémentaire" aria-label="Ajouter un document complémentaire" type="button" style="align-self: end;">Ajouter</button> + </div> + <!----> + </div> + </div> + <!----> + <div> + <div> + <h2 class="fr-pt-6w">Documents d’entreprise + <!----> + </h2> + <div class="fr-alert fr-alert--info fr-alert--sm"> + <p>Les documents d’entreprise sont des documents propres à l'entreprise, et pourront être réutilisés pour la création d'un autre dossier et mis à jour si nécessaire. Ces documents d’entreprise sont consultables dans la fiche entreprise de votre société. Cette section permet de protéger et de centraliser les informations d'ordre privé relatives à la société et à son personnel.</p> + </div> + </div> + <div> + <div> + <div> + <div class="fr-table fr-table--no-scroll" style="overflow: auto;"> + <div class="fr-table__wrapper" style="width: auto;"> + <div class="fr-table__container"> + <div class="fr-table__content"> + <table style="display: table; width: 100%;"> + <caption>Nom de l'entreprise 0</caption> + <thead> + <tr> + <th scope="col">Nom</th> + <th scope="col">Document selectionné</th> + <th scope="col">Action</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <div style="display: flex; flex-direction: column; align-items: start;"><a class="fr-link" title="Télécharger le document Attestation fiscale - nouvelle fenêtre" href="/apiUrl/download/entrepriseDocuments/id-1" target="_blank">Attestation fiscale</a> + <!----> + </div> + </td> + <td> + <div class="fr-select-group"> + <!----><select class="fr-select" id="id-1" aria-label="Choix du document pour [object Object]" name="id-1" value="id-1"> + <option selected="" disabled="" value="id-1">Attestation fiscale : null (01-01-2025)</option> + <option value="newDocument">Ajouter un nouveau document d'entreprise</option> + <option disabled="" hidden="" value="">Selectionnez une option</option> + </select> + </div> + </td> + <td><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document d’entreprise Attestation fiscale" aria-label="Supprimer le document d’entreprise Attestation fiscale" type="button"> + <!----> + </button></td> + </tr> + <tr> + <td> + <div style="display: flex; flex-direction: column; align-items: start;"><a class="fr-link" title="Télécharger le document Curriculum vitae - nouvelle fenêtre" href="/apiUrl/download/entrepriseDocuments/id-2" target="_blank">Curriculum vitae</a> + <!----> + </div> + </td> + <td> + <div class="fr-select-group"> + <!----><select class="fr-select" id="id-2" aria-label="Choix du document pour [object Object]" name="id-2" value="id-2"> + <option selected="" disabled="" value="id-2">Curriculum vitae : null (01-01-2025)</option> + <option value="newDocument">Ajouter un nouveau document d'entreprise</option> + <option disabled="" hidden="" value="">Selectionnez une option</option> + </select> + </div> + </td> + <td><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document d’entreprise Curriculum vitae" aria-label="Supprimer le document d’entreprise Curriculum vitae" type="button"> + <!----> + </button></td> + </tr> + <tr> + <td> + <div style="display: flex; flex-direction: column; align-items: start;"><a class="fr-link" title="Télécharger le document Justificatif d'identité - nouvelle fenêtre" href="/apiUrl/download/entrepriseDocuments/id-3" target="_blank">Justificatif d'identité</a> + <!----> + </div> + </td> + <td> + <div class="fr-select-group"> + <!----><select class="fr-select" id="id-3" aria-label="Choix du document pour [object Object]" name="id-3" value="id-3"> + <option selected="" disabled="" value="id-3">Justificatif d'identité : null (01-01-2025)</option> + <option value="newDocument">Ajouter un nouveau document d'entreprise</option> + <option disabled="" hidden="" value="">Selectionnez une option</option> + </select> + </div> + </td> + <td><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document d’entreprise Justificatif d'identité" aria-label="Supprimer le document d’entreprise Justificatif d'identité" type="button"> + <!----> + </button></td> + </tr> + <tr> + <td> + <div style="display: flex; flex-direction: column; align-items: start;"><a class="fr-link" title="Télécharger le document Justificatif des capacités techniques - nouvelle fenêtre" href="/apiUrl/download/entrepriseDocuments/id-4" target="_blank">Justificatif des capacités techniques</a> + <!----> + </div> + </td> + <td> + <div class="fr-select-group"> + <!----><select class="fr-select" id="id-4" aria-label="Choix du document pour [object Object]" name="id-4" value="id-4"> + <option selected="" disabled="" value="id-4">Justificatif des capacités techniques : null (01-01-2025)</option> + <option value="newDocument">Ajouter un nouveau document d'entreprise</option> + <option disabled="" hidden="" value="">Selectionnez une option</option> + </select> + </div> + </td> + <td><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document d’entreprise Justificatif des capacités techniques" aria-label="Supprimer le document d’entreprise Justificatif des capacités techniques" type="button"> + <!----> + </button></td> + </tr> + <tr> + <td> + <div style="display: flex; flex-direction: column; align-items: start;"><a class="fr-link" title="Télécharger le document Kbis - nouvelle fenêtre" href="/apiUrl/download/entrepriseDocuments/id-5" target="_blank">Kbis</a> + <!----> + </div> + </td> + <td> + <div class="fr-select-group"> + <!----><select class="fr-select" id="id-5" aria-label="Choix du document pour [object Object]" name="id-5" value="id-5"> + <option selected="" disabled="" value="id-5">Kbis : null (01-01-2025)</option> + <option value="newDocument">Ajouter un nouveau document d'entreprise</option> + <option disabled="" hidden="" value="">Selectionnez une option</option> + </select> + </div> + </td> + <td><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document d’entreprise Kbis" aria-label="Supprimer le document d’entreprise Kbis" type="button"> + <!----> + </button></td> + </tr> + <tr> + <td> + <div style="display: flex; flex-direction: column; align-items: start;"><a class="fr-link" title="Télécharger le document Justificatif des capacités financières - nouvelle fenêtre" href="/apiUrl/download/entrepriseDocuments/id-6" target="_blank">Justificatif des capacités financières</a> + <!----> + </div> + </td> + <td> + <div class="fr-select-group"> + <!----><select class="fr-select" id="id-6" aria-label="Choix du document pour [object Object]" name="id-6" value="id-6"> + <option selected="" disabled="" value="id-6">Justificatif des capacités financières : null (01-01-2025)</option> + <option value="newDocument">Ajouter un nouveau document d'entreprise</option> + <option disabled="" hidden="" value="">Selectionnez une option</option> + </select> + </div> + </td> + <td><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document d’entreprise Justificatif des capacités financières" aria-label="Supprimer le document d’entreprise Justificatif des capacités financières" type="button"> + <!----> + </button></td> + </tr> + <tr> + <td> + <div class="fr-select-group"> + <!----><select class="fr-select" id="nouveau_document_type" aria-label="Ajouter un nouveau type de document" name="nouveau_document_type"> + <option value="atf">Attestation fiscale</option> + <option value="sir">Avis de situation au répertoire Sirene</option> + <option value="cur">Curriculum vitae</option> + <option value="idm">Identification de matériel</option> + <option value="jid">Justificatif d'identité</option> + <option value="jct">Justificatif des capacités techniques</option> + <option value="kbi">Kbis</option> + <option value="jcf">Justificatif des capacités financières</option> + <option selected="" disabled="" hidden="" value="">Selectionnez une option</option> + </select> + </div> + </td> + <td><span class=""></span></td> + <td><span class=""></span></td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + </div> + <!----> + </div> + </div> + <div class="fr-input-group fr-mt-2w" style="flex-grow: 1;"><label class="fr-label" for="etape_notes">Notes (optionnel) + <!----> + </label><textarea class="fr-input" name="etape_notes" id="etape_notes" value="Super notes de cette story"></textarea></div> + <div class="fr-checkbox-group"><input name="archive" id="is_avertissement" type="checkbox"><label class="fr-label" for="is_avertissement">Cette note est un avertissement<span class="fr-hint-text">Apparait sur le résumé de la démarche</span></label></div> + </div> + <!----> + <div class="fr-mt-2w fr-pt-2w fr-pb-2w" style="position: sticky; bottom: 0px; z-index: 100000; background: white;"> + <div style="display: flex; flex-direction: column;"> + <div style="display: flex; justify-content: end; align-items: center;" class="fr-mt-2w"> + <!----><button class="fr-btn fr-btn--primary fr-btn--md fr-ml-2w" title="Enregistrer l'étape" aria-label="Enregistrer l'étape" type="submit">Enregistrer l'étape</button> + <!----> + </div> + <!----> + </div> + </div> +</form> \ No newline at end of file diff --git a/packages/ui/src/components/etape/etape-edit-form.stories_snapshots_EtapeCompleteEnregistrableAvecDocumentNonRenseigne.html b/packages/ui/src/components/etape/etape-edit-form.stories_snapshots_EtapeCompleteEnregistrableAvecDocumentNonRenseigne.html new file mode 100644 index 0000000000000000000000000000000000000000..e307f30a17959bacecb2c5b18f369f0f9f36dc60 --- /dev/null +++ b/packages/ui/src/components/etape/etape-edit-form.stories_snapshots_EtapeCompleteEnregistrableAvecDocumentNonRenseigne.html @@ -0,0 +1,632 @@ +<form> + <div> + <div> + <h2 class="fr-pt-6w">Informations principales + <!----> + </h2> + <!----> + </div> + <div> + <div class="fr-grid-row"> + <div class="fr-col-12 fr-col-xl-6"> + <div class="fr-input-group" style="margin-bottom: 0px;"><label class="fr-label" for="etape_date">Date + <!----><span class="fr-hint-text">au format jj/mm/aaaa</span> + <!----> + </label><input class="fr-input" name="etape_date" id="etape_date" required="" type="date" value="2022-02-02"> + <!----> + </div> + <div class="fr-mt-2w"> + <div class="fr-input-group"><label class="fr-label fr-mb-1w" for="select-etape-type">Type</label> + <div id="select-etape-type_wrapper" class="_typeahead_8eddf1"> + <div class="flex"><input id="select-etape-type" type="text" title="" name="select-etape-type" disabled="" class="fr-input" placeholder="" autocomplete="off" role="combobox" aria-controls="select-etape-type-control" aria-activedescendant="select-etape-type-control" aria-expanded="false" aria-autocomplete="list" value="demande"></div> + <ul class="_typeahead-list_8eddf1 " tabindex="-1" id="select-etape-type-control" role="listbox"> + <li class="_typeahead-list-item_8eddf1 _typeahead-list-item-active_8eddf1" aria-selected="false" id="select-etape-type-control-0"><strong>Consultation des administrations centrales</strong></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="select-etape-type-control-1"><strong>Avis de la commission des autorisations de recherches minières (CARM)</strong></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="select-etape-type-control-2"><strong>Avis des services et commissions consultatives</strong></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="select-etape-type-control-3"><strong>Enregistrement de la demande</strong></li> + </ul> + </div> + </div> + <div class="fr-select-group"><label class="fr-label" for="select-etape-statut-id">Statut + <!----> + </label><select class="fr-select" id="select-etape-statut-id" aria-label="Statut" name="select-etape-statut-id" value="fai"> + <option selected="" disabled="" value="fai">fait</option> + <option disabled="" hidden="" value="">Selectionnez une option</option> + </select></div> + </div> + </div> + </div> + </div> + </div> + <div gotodemarche="function(...args){if(options.implicit){let storyRenderer=("__STORYBOOK_PREVIEW__"in global?global.__STORYBOOK_PREVIEW__:void 0)?.storyRenders.find(render=>render.phase==="playing"||render.phase==="rendering");if(storyRenderer){let deprecated=!window?.FEATURES?.disallowImplicitActionsInRenderV8,error=new ImplicitActionsDuringRendering({phase:storyRenderer.phase,name,deprecated});if(deprecated)console.warn(error);else throw error}}let channel=addons.getChannel(),id=generateId(),minDepth=5,serializedArgs=args.map(serializeArg),normalizedArgs=args.length>1?serializedArgs:serializedArgs[0],actionDisplayToEmit={id,count:0,data:{name,args:normalizedArgs},options:{...actionOptions,maxDepth:minDepth+(actionOptions.depth||3),allowFunction:actionOptions.allowFunction||!1}};channel.emit(EVENT_ID,actionDisplayToEmit);}"> + <div> + <div> + <h2 class="fr-pt-6w">Propriétés + <!----> + </h2> + <!----> + </div> + <div> + <div class="fr-grid-row"> + <div class="fr-col-12 fr-col-xl-6"> + <div class="fr-mb-1w"> + <div style="display: flex;"> + <div class="fr-input-group" style="margin-bottom: 0px;"><label class="fr-label" for="fondamentale_duree_annees">Durée (années) + <!----> + <!----> + <!----> + </label><input class="fr-input" name="fondamentale_duree_annees" id="fondamentale_duree_annees" required="" type="number" value="0"> + <!----> + </div> + <div class="fr-input-group fr-ml-2w" style="margin-bottom: 0px;"><label class="fr-label" for="fondamentale_duree_mois">Durée (mois) + <!----> + <!----> + <!----> + </label><input class="fr-input" name="fondamentale_duree_mois" id="fondamentale_duree_mois" required="" type="number" value="4"> + <!----> + </div> + </div> + <div class="fr-pt-2w fr-pb-2w"> + <div class="fr-toggle"><input type="checkbox" class="fr-toggle__input" id="heritage_duree"><label class="fr-toggle__label" for="heritage_duree" data-fr-checked-label="Activé" data-fr-unchecked-label="Désactivé"><span class=" fr-ml-4w">Hériter de l’étape "Demande" du 01-01-2022</span></label> + <!----> + </div> + </div> + </div> + <!----> + <div class="fr-mb-1w"> + <div class="fr-input-group fr-mb-0"><label class="fr-label" for="filters_autocomplete_titulaires">Titulaires</label> + <div id="filters_autocomplete_titulaires_wrapper" class="_typeahead_8eddf1 fr-mt-1w"> + <div style="display: flex; max-height: unset; flex-wrap: wrap; gap: 8px; outline-offset: 2px; outline-width: 2px; outline-color: rgb(10, 118, 246);" class="fr-input _fake-input_8eddf1"><button class="fr-tag fr-tag--sm fr-tag--dismiss" title="Supprimer Nom de l'entreprise 0" aria-label="Supprimer Nom de l'entreprise 0">Nom de l'entreprise 0</button><input id="filters_autocomplete_titulaires" type="text" name="filters_autocomplete_titulaires" style="outline: none;" placeholder="titulaires" autocomplete="off" role="combobox" aria-controls="filters_autocomplete_titulaires-control" aria-activedescendant="filters_autocomplete_titulaires-control" aria-expanded="false" aria-autocomplete="list" value=""></div> + <ul class="_typeahead-list_8eddf1 " tabindex="-1" id="filters_autocomplete_titulaires-control" role="listbox"> + <li class="_typeahead-list-item_8eddf1 _typeahead-list-item-active_8eddf1" aria-selected="false" id="filters_autocomplete_titulaires-control-0"><span>Nom de l'entreprise 1</span></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="filters_autocomplete_titulaires-control-1"><span>Nom de l'entreprise 2</span></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="filters_autocomplete_titulaires-control-2"><span>Nom de l'entreprise 3</span></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="filters_autocomplete_titulaires-control-3"><span>Nom de l'entreprise 4</span></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="filters_autocomplete_titulaires-control-4"><span>Nom de l'entreprise 5</span></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="filters_autocomplete_titulaires-control-5"><span>Nom de l'entreprise 6</span></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="filters_autocomplete_titulaires-control-6"><span>Nom de l'entreprise 7</span></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="filters_autocomplete_titulaires-control-7"><span>Nom de l'entreprise 8</span></li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="filters_autocomplete_titulaires-control-8"><span>Nom de l'entreprise 9</span></li> + </ul> + </div> + </div> + <!----> + </div> + <!----> + <div class="fr-mb-1w"> + <div> + <div class="fr-input-group fr-input-group--disabled fr-mb-0"><label class="fr-label">Substances</label> + <div class="fr-mt-1w"> + <p class="fr-tag fr-tag--md fr-mr-1w" title="Argent" aria-label="Argent">Argent</p> + </div> + </div> + </div> + <div class="fr-pt-2w fr-pb-2w"> + <div class="fr-toggle"><input type="checkbox" class="fr-toggle__input" checked="" id="heritage_substances"><label class="fr-toggle__label" for="heritage_substances" data-fr-checked-label="Activé" data-fr-unchecked-label="Désactivé"><span class=" fr-ml-4w">Hériter de l’étape "Demande" du 01-01-2022</span></label> + <!----> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + <div> + <div> + <h2 class="fr-pt-6w">Propriétés spécifiques + <!----> + </h2> + <div class="fr-alert fr-alert--info fr-alert--sm"> + <p>Ce bloc permet de savoir si la prospection est mécanisée ou non et s’il y a des franchissements de cours d’eau (si oui, combien ?)</p> + </div> + </div> + <div> + <div class="fr-grid-row"> + <div class="fr-col-12 fr-col-xl-6"> + <div> + <h3>Caractéristiques ARM</h3> + <div class="fr-mb-1w"> + <div> + <fieldset class="fr-fieldset" id="mecanise" aria-labelledby="mecanise-legend" style="flex-direction: column; align-items: flex-start;"> + <legend class="fr-fieldset__legend--regular fr-fieldset__legend" id="mecanise-legend">Prospection mécanisée + <!----> + </legend> + <div class="fr-fieldset__element"> + <div class="fr-radio-group"><input type="radio" id="mecanise-0" checked="" name="mecanise"><label class="fr-label" for="mecanise-0">Oui + <!----> + </label></div> + </div> + <div class="fr-fieldset__element"> + <div class="fr-radio-group"><input type="radio" id="mecanise-1" name="mecanise"><label class="fr-label" for="mecanise-1">Non + <!----> + </label></div> + </div> + </fieldset> + </div> + <!----> + </div> + <div class="fr-mb-1w"> + <div> + <div class="fr-input-group" style="margin-bottom: 0px;"><label class="fr-label" for="franchissements">Franchissements de cours d'eau (optionnel) + <!----><span class="fr-hint-text">Nombre de franchissements de cours d'eau</span> + </label><input class="fr-input" name="franchissements" id="franchissements" type="number" min="0" value="2"> + <!----> + </div> + </div> + <!----> + </div> + </div> + </div> + </div> + </div> + </div> + <div> + <div> + <h2 class="fr-pt-6w">Périmètre + <!----> + </h2> + <!----> + </div> + <div> + <div> + <div class="fr-mb-1w"> + <div><button class="fr-btn fr-btn--primary fr-btn--md" title="Importer un périmètre" aria-label="Importer un périmètre" type="button">Importer un périmètre</button><button class="fr-btn fr-btn--secondary fr-btn--md fr-ml-2w" title="Éditer les points" aria-label="Éditer les points" type="button">Éditer les points</button> + <!----> + <!----> + <div class="fr-mt-2w"> + <div> + <div class="fr-tabs" style="--tabs-height: 0px;"> + <ul class="fr-tabs__list" role="tablist" aria-label="Affichage des titres en vue carte ou tableau"> + <li role="presentation"><button id="tabpanel-carte-perimetre_edit" class="fr-tabs__tab fr-icon-earth-fill fr-tabs__tab--icon-left" tabindex="-1" role="tab" aria-label="Carte" aria-selected="false" aria-controls="tabpanel-carte-perimetre_edit-panel">Carte</button></li> + <li role="presentation"><button id="tabpanel-points-perimetre_edit" class="fr-tabs__tab fr-icon-list-unordered fr-tabs__tab--icon-left" tabindex="0" role="tab" aria-label="Tableau" aria-selected="true" aria-controls="tabpanel-points-perimetre_edit-panel">Tableau</button></li> + </ul> + <div id="tabpanel-carte-perimetre_edit-panel" class="fr-tabs__panel fr-tabs__panel--direction-start" role="tabpanel" aria-labelledby="tabpanel-carte-perimetre_edit" tabindex="0"> + <!----> + </div> + <div id="tabpanel-points-perimetre_edit-panel" class="fr-tabs__panel fr-tabs__panel--selected" role="tabpanel" aria-labelledby="tabpanel-points-perimetre_edit" tabindex="0"> + <div style="display: flex; flex-direction: column;"> + <div class="fr-select-group"><label class="fr-label" for="4326">Système géographique</label> + <div id="4326_wrapper" class="_typeahead_8eddf1"> + <div class="flex"><input id="4326" type="text" title="" name="4326" disabled="" class="fr-input" placeholder="" autocomplete="off" role="combobox" aria-controls="4326-control" aria-activedescendant="4326-control" aria-expanded="false" aria-autocomplete="list" value="WGS84 - (4326)"></div> + <ul class="_typeahead-list_8eddf1 " tabindex="-1" id="4326-control" role="listbox"> + <li class="_typeahead-list-item_8eddf1 _typeahead-list-item-active_8eddf1" aria-selected="false" id="4326-control-0"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="fr-text--bold">Mayotte 2004 / UTM zone 38S - (4471)</span><span class="fr-text">Mayotte - à terre et extraterritorial</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-1"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="fr-text--bold">Réunion / UTM zone 40S - (2975)</span><span class="fr-text">Réunion</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-2"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="fr-text--bold">RGAF09 / UTM zone 20N - (5490)</span><span class="fr-text">Antilles françaises à terre et extraterritorial à l'ouest du méridien 60° Ouest - Guadeloupe (incluant Grande Terre, Basse Terre, Marie Galante, Les Saintes, Iles de la Petite Terre, La Desirade, St Barthélemy, partie nord de St Martin) et Martinique.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-3"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="fr-text--bold">RGF93 / Lambert-93 - (2154)</span><span class="fr-text">France - à terre et extraterritorial - continentale et Corse.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-4"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="fr-text--bold">RGFG95 / UTM zone 22N - (2972)</span><span class="fr-text">Guyane française - à terre et extraterritorial.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-5"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="fr-text--bold">St Pierre et Miquelon / UTM zone 21N - (4467)</span><span class="fr-text">St Pierre et Miquelon à terre et extraterritorial</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-6"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">ED50 - (4230)</span><span class="fr-text">Europe</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-7"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">Guadeloupe 1948 / UTM zone 20N - (2970)</span><span class="fr-text">Guadeloupe - à terre - Basse-Terre, Grande-Terre, La Desirade, Marie-Galante, Les Saintes.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-8"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">NTF (Greenwich) - (4275)</span><span class="fr-text">France - à terre - continentale et Corse.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-9"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">NTF (Paris) - (4807)</span><span class="fr-text">France - à terre - continentale et Corse.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-10"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">NTF (Paris) / Lambert Nord France - (27561)</span><span class="fr-text">France - continentale au nord de 53,5 grades North (48°09'N).</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-11"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">NTF (Paris) / Lambert Sud france - (27563)</span><span class="fr-text">France - continentale au sud de 50,5 grades nord (45°27'N).</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-12"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">NTF (Paris) / Lambert zone I - (27571)</span><span class="fr-text">France - continentale au nord de 53,5 grades nord (48°09'N).</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-13"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">NTF (Paris) / Lambert zone II - (27572)</span><span class="fr-text">France - continentale entre 45°27'N et 48°09'N.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-14"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">NTF (Paris) / Lambert zone III - (27573)</span><span class="fr-text">France - continentale au sud de 50,5 grades nord (45°27'N).</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-15"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">RGF93 - (4171)</span><span class="fr-text">France - à terre et extraterritorial - continentale et Corse.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-16"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">RGF93 / CC49 - (3949)</span><span class="fr-text">France - continentale entre 48°N et 50°N.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-17"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">RGFG95 - (4624)</span><span class="fr-text">Guyane Française - à terre et extraterritorial.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-18"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">RGFG95 / UTM zone 21N - (3313)</span><span class="fr-text">Guyane française - à terre et extraterritorial.</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-19"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">WGS84 / UTM zone 20N - (32620)</span><span class="fr-text">Hémisphère Nord - entre 66°W et 60°W</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-20"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">WGS84 / UTM zone 21N - (32621)</span><span class="fr-text">Hémisphère Nord - entre 60°W et 54°W</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-21"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">WGS84 / UTM zone 22N - (32622)</span><span class="fr-text">Hémisphère Nord - entre 54°W et 48°W</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-22"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">WGS84 / UTM zone 30N - (32630)</span><span class="fr-text">Hémisphère Nord - entre 6°W et 0°W</span></div> + </li> + <li class="_typeahead-list-item_8eddf1 " aria-selected="false" id="4326-control-23"> + <div style="display: flex; flex-direction: column;" class="fr-pl-2w"><span class="">WGS84 / UTM zone 31N - (32631)</span><span class="fr-text">Hémisphère Nord - entre 0°E et 6°E</span></div> + </li> + </ul> + </div> + </div> + <div style="display: flex; flex-direction: column;"> + <div class="fr-mb-1w"> + <div class="fr-table fr-table--no-scroll" style="overflow: auto;"> + <div class="fr-table__wrapper" style="width: auto;"> + <div class="fr-table__container"> + <div class="fr-table__content"> + <table style="display: table; width: 100%;"> + <caption>Points</caption> + <thead> + <tr> + <th scope="col">Nom du point</th> + <th scope="col">Description</th> + <th scope="col">Longitude</th> + <th scope="col">Latitude</th> + <th scope="col">Longitude (E)</th> + <th scope="col">Latitude (N)</th> + </tr> + </thead> + <tbody> + <tr> + <td><span class="">A</span></td> + <td><span class="">Polygone 1</span></td> + <td><span class="">-52.54</span></td> + <td><span class="">4.22269896902571</span></td> + <td><span class="">-52°32,4'</span></td> + <td><span class="">4°13,362'</span></td> + </tr> + <tr> + <td><span class="">B</span></td> + <td><span class="">Polygone 1</span></td> + <td><span class="">-52.55</span></td> + <td><span class="">4.22438936251509</span></td> + <td><span class="">-52°33'</span></td> + <td><span class="">4°13,463'</span></td> + </tr> + <tr> + <td><span class="">C</span></td> + <td><span class="">Polygone 1</span></td> + <td><span class="">-52.55</span></td> + <td><span class="">4.24113309117193</span></td> + <td><span class="">-52°33'</span></td> + <td><span class="">4°14,468'</span></td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + <div style="display: flex;"> + <!----><a class="fr-btn fr-btn--secondary fr-btn--icon-right fr-icon-download-line" title="Télécharge les points au format csv" href="data:text/csv;charset=utf-8,nom;description;longitude;latitude;x_deg;y_deg%0AA;Polygone%201;-52.54;4.22269896902571;-52%C2%B032,4';4%C2%B013,362'%0AB;Polygone%201;-52.55;4.22438936251509;-52%C2%B033';4%C2%B013,463'%0AC;Polygone%201;-52.55;4.24113309117193;-52%C2%B033';4%C2%B014,468'" download="points-titre-slug.csv" style="margin-left: auto;">.csv</a> + </div> + </div> + <!----> + </div> + </div> + </div> + </div> + </div> + </div> + <!----> + </div> + <!----> + <!----> + <!----> + </div> + </div> + </div> + <div> + <div> + <h2 class="fr-pt-6w">Liste des documents + <!----> + </h2> + <!----> + </div> + <div> + <div> + <div class="fr-table fr-table--no-scroll" style="overflow: auto;"> + <div class="fr-table__wrapper" style="width: auto;"> + <div class="fr-table__container"> + <div class="fr-table__content"> + <table style="display: table; width: 100%;"> + <caption>Documents obligatoires</caption> + <thead> + <tr> + <th scope="col">Nom</th> + <th scope="col">Description</th> + <th scope="col">Visibilité</th> + <th scope="col" class="fr-cell--right">Action</th> + </tr> + </thead> + <tbody> + <tr> + <td><span class="">Décision cas par cas</span></td> + <td><span class=""></span></td> + <td><span class="">Public</span></td> + <td class="fr-cell--right"> + <div style="display: flex; justify-content: end; align-items: center;"><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-edit-line" title="Modifier le document de Décision cas par cas" aria-label="Modifier le document de Décision cas par cas" type="button"> + <!----> + </button><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document de Décision cas par cas" aria-label="Supprimer le document de Décision cas par cas" type="button"> + <!----> + </button></div> + </td> + </tr> + <tr> + <td><span class="">Documents cartographiques</span></td> + <td><span class=""></span></td> + <td><span class="">Public</span></td> + <td class="fr-cell--right"> + <div style="display: flex; justify-content: end; align-items: center;"><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-edit-line" title="Modifier le document de Documents cartographiques" aria-label="Modifier le document de Documents cartographiques" type="button"> + <!----> + </button><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document de Documents cartographiques" aria-label="Supprimer le document de Documents cartographiques" type="button"> + <!----> + </button></div> + </td> + </tr> + <tr> + <td><span class="">Dossier "Loi sur l'eau"</span></td> + <td><span class=""></span></td> + <td><span class="">Public</span></td> + <td class="fr-cell--right"> + <div style="display: flex; justify-content: end; align-items: center;"><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-edit-line" title="Modifier le document de Dossier "Loi sur l'eau"" aria-label="Modifier le document de Dossier "Loi sur l'eau"" type="button"> + <!----> + </button><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document de Dossier "Loi sur l'eau"" aria-label="Supprimer le document de Dossier "Loi sur l'eau"" type="button"> + <!----> + </button></div> + </td> + </tr> + <tr> + <td><span class="fr-label--error">Dossier de demande</span></td> + <td><span class="fr-label--error">Fichier manquant</span></td> + <td><span class="">-</span></td> + <td class="fr-cell--right"><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-add-line" title="Ajouter un document Dossier de demande" aria-label="Ajouter un document Dossier de demande" type="button"> + <!----> + </button></td> + </tr> + <tr> + <td><span class="fr-label--error">Formulaire de demande</span></td> + <td><span class="fr-label--error">Fichier manquant</span></td> + <td><span class="">-</span></td> + <td class="fr-cell--right"><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-add-line" title="Ajouter un document Formulaire de demande" aria-label="Ajouter un document Formulaire de demande" type="button"> + <!----> + </button></td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + <div style="display: flex; flex-direction: column;" class="fr-mt-3w"> + <div> + <div class="fr-table fr-table--no-scroll" style="overflow: auto;"> + <div class="fr-table__wrapper" style="width: auto;"> + <div class="fr-table__container"> + <div class="fr-table__content"> + <table style="display: table; width: 100%;"> + <caption>Documents complémentaires</caption> + <thead> + <tr> + <th scope="col">Nom</th> + <th scope="col">Description</th> + <th scope="col">Visibilité</th> + <th scope="col" class="fr-cell--right">Action</th> + </tr> + </thead> + <tbody></tbody> + </table> + </div> + </div> + </div> + </div> + </div><button class="fr-btn fr-btn--secondary fr-btn--md fr-icon-add-line fr-btn--icon-right fr-mt-1w" title="Ajouter un document complémentaire" aria-label="Ajouter un document complémentaire" type="button" style="align-self: end;">Ajouter</button> + </div> + <!----> + </div> + </div> + <!----> + <div> + <div> + <h2 class="fr-pt-6w">Documents d’entreprise + <!----> + </h2> + <div class="fr-alert fr-alert--info fr-alert--sm"> + <p>Les documents d’entreprise sont des documents propres à l'entreprise, et pourront être réutilisés pour la création d'un autre dossier et mis à jour si nécessaire. Ces documents d’entreprise sont consultables dans la fiche entreprise de votre société. Cette section permet de protéger et de centraliser les informations d'ordre privé relatives à la société et à son personnel.</p> + </div> + </div> + <div> + <div> + <div> + <div class="fr-table fr-table--no-scroll" style="overflow: auto;"> + <div class="fr-table__wrapper" style="width: auto;"> + <div class="fr-table__container"> + <div class="fr-table__content"> + <table style="display: table; width: 100%;"> + <caption>Nom de l'entreprise 0</caption> + <thead> + <tr> + <th scope="col">Nom</th> + <th scope="col">Document selectionné</th> + <th scope="col">Action</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <div style="display: flex; flex-direction: column; align-items: start;"><a class="fr-link" title="Télécharger le document Attestation fiscale - nouvelle fenêtre" href="/apiUrl/download/entrepriseDocuments/id-1" target="_blank">Attestation fiscale</a> + <!----> + </div> + </td> + <td> + <div class="fr-select-group"> + <!----><select class="fr-select" id="id-1" aria-label="Choix du document pour [object Object]" name="id-1" value="id-1"> + <option selected="" disabled="" value="id-1">Attestation fiscale : null (01-01-2025)</option> + <option value="newDocument">Ajouter un nouveau document d'entreprise</option> + <option disabled="" hidden="" value="">Selectionnez une option</option> + </select> + </div> + </td> + <td><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document d’entreprise Attestation fiscale" aria-label="Supprimer le document d’entreprise Attestation fiscale" type="button"> + <!----> + </button></td> + </tr> + <tr> + <td> + <div style="display: flex; flex-direction: column; align-items: start;"><a class="fr-link" title="Télécharger le document Curriculum vitae - nouvelle fenêtre" href="/apiUrl/download/entrepriseDocuments/id-2" target="_blank">Curriculum vitae</a> + <!----> + </div> + </td> + <td> + <div class="fr-select-group"> + <!----><select class="fr-select" id="id-2" aria-label="Choix du document pour [object Object]" name="id-2" value="id-2"> + <option selected="" disabled="" value="id-2">Curriculum vitae : null (01-01-2025)</option> + <option value="newDocument">Ajouter un nouveau document d'entreprise</option> + <option disabled="" hidden="" value="">Selectionnez une option</option> + </select> + </div> + </td> + <td><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document d’entreprise Curriculum vitae" aria-label="Supprimer le document d’entreprise Curriculum vitae" type="button"> + <!----> + </button></td> + </tr> + <tr> + <td> + <div style="display: flex; flex-direction: column; align-items: start;"><a class="fr-link" title="Télécharger le document Justificatif d'identité - nouvelle fenêtre" href="/apiUrl/download/entrepriseDocuments/id-3" target="_blank">Justificatif d'identité</a> + <!----> + </div> + </td> + <td> + <div class="fr-select-group"> + <!----><select class="fr-select" id="id-3" aria-label="Choix du document pour [object Object]" name="id-3" value="id-3"> + <option selected="" disabled="" value="id-3">Justificatif d'identité : null (01-01-2025)</option> + <option value="newDocument">Ajouter un nouveau document d'entreprise</option> + <option disabled="" hidden="" value="">Selectionnez une option</option> + </select> + </div> + </td> + <td><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document d’entreprise Justificatif d'identité" aria-label="Supprimer le document d’entreprise Justificatif d'identité" type="button"> + <!----> + </button></td> + </tr> + <tr> + <td> + <div style="display: flex; flex-direction: column; align-items: start;"><a class="fr-link" title="Télécharger le document Justificatif des capacités techniques - nouvelle fenêtre" href="/apiUrl/download/entrepriseDocuments/id-4" target="_blank">Justificatif des capacités techniques</a> + <!----> + </div> + </td> + <td> + <div class="fr-select-group"> + <!----><select class="fr-select" id="id-4" aria-label="Choix du document pour [object Object]" name="id-4" value="id-4"> + <option selected="" disabled="" value="id-4">Justificatif des capacités techniques : null (01-01-2025)</option> + <option value="newDocument">Ajouter un nouveau document d'entreprise</option> + <option disabled="" hidden="" value="">Selectionnez une option</option> + </select> + </div> + </td> + <td><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document d’entreprise Justificatif des capacités techniques" aria-label="Supprimer le document d’entreprise Justificatif des capacités techniques" type="button"> + <!----> + </button></td> + </tr> + <tr> + <td> + <div style="display: flex; flex-direction: column; align-items: start;"><a class="fr-link" title="Télécharger le document Kbis - nouvelle fenêtre" href="/apiUrl/download/entrepriseDocuments/id-5" target="_blank">Kbis</a> + <!----> + </div> + </td> + <td> + <div class="fr-select-group"> + <!----><select class="fr-select" id="id-5" aria-label="Choix du document pour [object Object]" name="id-5" value="id-5"> + <option selected="" disabled="" value="id-5">Kbis : null (01-01-2025)</option> + <option value="newDocument">Ajouter un nouveau document d'entreprise</option> + <option disabled="" hidden="" value="">Selectionnez une option</option> + </select> + </div> + </td> + <td><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document d’entreprise Kbis" aria-label="Supprimer le document d’entreprise Kbis" type="button"> + <!----> + </button></td> + </tr> + <tr> + <td> + <div style="display: flex; flex-direction: column; align-items: start;"><a class="fr-link" title="Télécharger le document Justificatif des capacités financières - nouvelle fenêtre" href="/apiUrl/download/entrepriseDocuments/id-6" target="_blank">Justificatif des capacités financières</a> + <!----> + </div> + </td> + <td> + <div class="fr-select-group"> + <!----><select class="fr-select" id="id-6" aria-label="Choix du document pour [object Object]" name="id-6" value="id-6"> + <option selected="" disabled="" value="id-6">Justificatif des capacités financières : null (01-01-2025)</option> + <option value="newDocument">Ajouter un nouveau document d'entreprise</option> + <option disabled="" hidden="" value="">Selectionnez une option</option> + </select> + </div> + </td> + <td><button class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-delete-bin-line fr-ml-1w" title="Supprimer le document d’entreprise Justificatif des capacités financières" aria-label="Supprimer le document d’entreprise Justificatif des capacités financières" type="button"> + <!----> + </button></td> + </tr> + <tr> + <td> + <div class="fr-select-group"> + <!----><select class="fr-select" id="nouveau_document_type" aria-label="Ajouter un nouveau type de document" name="nouveau_document_type"> + <option value="atf">Attestation fiscale</option> + <option value="sir">Avis de situation au répertoire Sirene</option> + <option value="cur">Curriculum vitae</option> + <option value="idm">Identification de matériel</option> + <option value="jid">Justificatif d'identité</option> + <option value="jct">Justificatif des capacités techniques</option> + <option value="kbi">Kbis</option> + <option value="jcf">Justificatif des capacités financières</option> + <option selected="" disabled="" hidden="" value="">Selectionnez une option</option> + </select> + </div> + </td> + <td><span class=""></span></td> + <td><span class=""></span></td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + </div> + <!----> + </div> + </div> + <div class="fr-input-group fr-mt-2w" style="flex-grow: 1;"><label class="fr-label" for="etape_notes">Notes (optionnel) + <!----> + </label><textarea class="fr-input" name="etape_notes" id="etape_notes" value="Super notes de cette story"></textarea></div> + <div class="fr-checkbox-group"><input name="archive" id="is_avertissement" type="checkbox"><label class="fr-label" for="is_avertissement">Cette note est un avertissement<span class="fr-hint-text">Apparait sur le résumé de la démarche</span></label></div> + </div> + <!----> + <div class="fr-mt-2w fr-pt-2w fr-pb-2w" style="position: sticky; bottom: 0px; z-index: 100000; background: white;"> + <div style="display: flex; flex-direction: column;"> + <div style="display: flex; justify-content: end; align-items: center;" class="fr-mt-2w"> + <!----><button class="fr-btn fr-btn--primary fr-btn--md fr-ml-2w" title="Enregistrer l'étape" aria-label="Enregistrer l'étape" type="submit">Enregistrer l'étape</button> + <!----> + </div> + <!----> + </div> + </div> +</form> \ No newline at end of file diff --git a/packages/ui/src/components/titre.stories.tsx b/packages/ui/src/components/titre.stories.tsx index 2fc59e2f1b0f2a672a90224bfd953fd16eae1f43..d36f31c9a384988cb1f4a7969a7eb832782f500d 100644 --- a/packages/ui/src/components/titre.stories.tsx +++ b/packages/ui/src/components/titre.stories.tsx @@ -484,11 +484,11 @@ const bonEspoirApiClient: PropsApiClient = { getTitreAction(titreIdOrSlug) // prettier-ignore - const bonEspoirData = titreGetValidator.parse({"id":"sJorD6pQomXTN7oRpyGwLijB","nom":"Bon Espoir","slug":"m-pr-bon-espoir-2001","titre_type_id":"prm","titre_statut_id":"ech","titre_doublon":null,"references":[{"nom":"21/2001","referenceTypeId":"dea"},{"nom":"2013-0033-MI","referenceTypeId":"deb"}],"titre_last_modified_date":"2023-11-30","demarches":[{"id":"ry8fHgRWiKEOE1x1ZANmajh8","slug":"m-pr-bon-espoir-2001-oct01","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":"2001-11-01","date_fin":null,"duree":60,"substances":["auru","scoc"],"titulaireIds":null,"amodiataireIds":null,"perimetre":{"geojson4326_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[-53.9579321010744,5.07776938770113],[-53.9575232150351,4.98735333700249],[-53.8673626701318,4.98775355007457],[-53.8672265271601,4.95631734759459],[-53.7770631139658,4.95670276466037],[-53.7769878916108,4.93868722476635],[-53.5698730075868,4.93952315477954],[-53.5702069576163,5.02537608911083],[-53.759383911755,5.02460196044417],[-53.7596128864516,5.07864912381548],[-53.9579321010744,5.07776938770113]]]]}},"geojson4326_points":{"type":"FeatureCollection","properties":{},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.9579321010744,5.07776938770113]},"properties":{"nom":"1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7596128864516,5.07864912381548]},"properties":{"nom":"2","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.759383911755,5.02460196044417]},"properties":{"nom":"3","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.5702069576163,5.02537608911083]},"properties":{"nom":"4","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.5698730075868,4.93952315477954]},"properties":{"nom":"5","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7769878916108,4.93868722476635]},"properties":{"nom":"6","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7770631139658,4.95670276466037]},"properties":{"nom":"7","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8672265271601,4.95631734759459]},"properties":{"nom":"8","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8673626701318,4.98775355007457]},"properties":{"nom":"9","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.9575232150351,4.98735333700249]},"properties":{"nom":"10","description":null}}]},"geojson_origine_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[-53.957932101,5.077769388],[-53.957523215,4.987353337],[-53.86736267,4.98775355],[-53.867226527,4.956317348],[-53.777063114,4.956702765],[-53.776987892,4.938687225],[-53.569873008,4.939523155],[-53.570206958,5.025376089],[-53.759383912,5.02460196],[-53.759612886,5.078649124],[-53.957932101,5.077769388]]]]}},"geojson_origine_points":{"type":"FeatureCollection","properties":{},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.9579321010744,5.07776938770113]},"properties":{"nom":"1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7596128864516,5.07864912381548]},"properties":{"nom":"2","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.759383911755,5.02460196044417]},"properties":{"nom":"3","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.5702069576163,5.02537608911083]},"properties":{"nom":"4","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.5698730075868,4.93952315477954]},"properties":{"nom":"5","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7769878916108,4.93868722476635]},"properties":{"nom":"6","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7770631139658,4.95670276466037]},"properties":{"nom":"7","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8672265271601,4.95631734759459]},"properties":{"nom":"8","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8673626701318,4.98775355007457]},"properties":{"nom":"9","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.9575232150351,4.98735333700249]},"properties":{"nom":"10","description":null}}]},"geojson_origine_geo_systeme_id":"4326","geojson4326_forages":null,"geojson_origine_forages":null,"surface":465.5,"communes":[{"id":"97306","nom":"Mana"},{"id":"97311","nom":"Saint-Laurent-du-Maroni"}],"secteurs_maritimes":[],"sdom_zones":["0","2"],"forets":["LDD","MDF","PAUL"]}},"etape_statut_id":"fai","is_brouillon":false,"date":"2001-10-26","id":"CRVhvEIQAc319vUd8BfZoH5W","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-oct01-dpu01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":3201430},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":"EUR"}]},{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000000774145"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"ECOI0100462D"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"2001-10-24","id":"Ce4K8goEZzjqXRJLL051jcpD","ordre":1,"note":{"valeur":"Décret du 24 octobre 2001 accordant un permis de recherches A en Guyane","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-oct01-dex01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":null},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":null}]},{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"oct","demarche_statut_id":"acc","demarche_date_debut":"2001-11-01","demarche_date_fin":"2006-11-01","ordre":1},{"id":"PnFewl8P4Zt5Vm49zXqyn7Ml","slug":"m-pr-bon-espoir-2001-pr101","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["auru"],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"2010-03-02","id":"qtn2a3DNPx258VZgSjqXGKf6","ordre":4,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-pr101-dpu02","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":560000},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":"EUR"}]},{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000021889053"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"DEVO1003938A"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"2010-02-17","id":"tjOMgkb83wksMc6DFuqrecbu","ordre":3,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-pr101-dex02","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":null},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":null}]},{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"2010-02-17-arr-a26ea089","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"arr","description":"Arrêté du 17 février 2010 modifiant l'arrêté du 6 mai 2009 prolongeant la validité du permis exclusif de recherches de mines d'or dit « Permis de Bon Espoir » et réduisant sa surface (Guyane)"}],"avis_documents":[]},{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":"2011-10-31","duree":null,"substances":["auru"],"titulaireIds":null,"amodiataireIds":null,"perimetre":{"geojson4326_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[-53.9577777777778,5.07666666666667],[-53.9575,5.0325],[-53.8944444444444,5.00055555555556],[-53.8208333333333,4.97972222222222],[-53.7138888888889,4.96388888888889],[-53.7322222222222,5.02361111111111],[-53.8763888888889,5.02277777777778],[-53.9577777777778,5.07666666666667]]]]}},"geojson4326_points":{"type":"FeatureCollection","properties":{},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.9577777777778,5.07666666666667]},"properties":{"nom":"A","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8763888888889,5.02277777777778]},"properties":{"nom":"B","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7322222222222,5.02361111111111]},"properties":{"nom":"C","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7138888888889,4.96388888888889]},"properties":{"nom":"D","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8208333333333,4.97972222222222]},"properties":{"nom":"E","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8944444444444,5.00055555555556]},"properties":{"nom":"F","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.9575,5.0325]},"properties":{"nom":"G","description":null}}]},"geojson_origine_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[-53.957777778,5.076666667],[-53.9575,5.0325],[-53.894444444,5.000555556],[-53.820833333,4.979722222],[-53.713888889,4.963888889],[-53.732222222,5.023611111],[-53.876388889,5.022777778],[-53.957777778,5.076666667]]]]}},"geojson_origine_points":{"type":"FeatureCollection","properties":{},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.9577777777778,5.07666666666667]},"properties":{"nom":"A","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8763888888889,5.02277777777778]},"properties":{"nom":"B","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7322222222222,5.02361111111111]},"properties":{"nom":"C","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7138888888889,4.96388888888889]},"properties":{"nom":"D","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8208333333333,4.97972222222222]},"properties":{"nom":"E","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8944444444444,5.00055555555556]},"properties":{"nom":"F","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.9575,5.0325]},"properties":{"nom":"G","description":null}}]},"geojson_origine_geo_systeme_id":"4326","geojson4326_forages":null,"geojson_origine_forages":null,"surface":122.275,"communes":[{"id":"97306","nom":"Mana"},{"id":"97311","nom":"Saint-Laurent-du-Maroni"}],"secteurs_maritimes":[],"sdom_zones":["0","2"],"forets":["LDD","PAUL"]}},"etape_statut_id":"fai","is_brouillon":false,"date":"2009-05-16","id":"07cbyPCYcOtKYkw4kOqg2Sed","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-pr101-dpu01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":837000},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":"EUR"}]},{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000020616467"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"DEVO0909004A"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"2009-05-06","id":"orsPMmIfX4kSgVus0HTrBxAo","ordre":1,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-pr101-dex01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":null},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":null}]},{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"2009-05-06-arr-54f88e41","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"arr","description":"Arrêté du 6 mai 2009 prolongeant la validité du permis exclusif de recherches de mines d'or dit « Permis Bon Espoir » et réduisant sa superficie (Guyane)"}],"avis_documents":[]}],"demarche_type_id":"pr1","demarche_statut_id":"acc","demarche_date_debut":"2006-11-01","demarche_date_fin":"2011-10-31","ordre":2},{"id":"EMFAv33wlGqMcjd6DwKzQBvr","slug":"m-pr-bon-espoir-2001-pr201","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":"2016-10-31","duree":60,"substances":["auru","scoc"],"titulaireIds":["fr-401802863"],"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"2015-08-15","id":"Qp5DRYEN3Nc9n4CIwEYW7evs","ordre":9,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-pr201-dpu01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":1250000},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":"EUR"}]},{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000031053068"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"EINL1518062A"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":60,"substances":["auru","scoc"],"titulaireIds":["fr-401802863"],"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"2015-08-03","id":"ABvgimvovFWeEhoMOrKi4wAy","ordre":8,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-pr201-dex01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":null},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":null}]},{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"2015-08-03-arm-8bf71a65","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"arm","description":"Arrêté du 3 août 2015 prolongeant la durée de validité du permis exclusif de recherches de mines d'or et de substances connexes dit « Permis de Bon Espoir » attribué à la société Armina Ressources Minières dans le département de Guyane"}],"avis_documents":[]},{"etape_type_id":"men","etape_statut_id":"fai","is_brouillon":false,"date":"2011-06-30","id":"nLXaR7H78V43GB47ypDoqvKz","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-pr201-men01","sections_with_values":[],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"mfr", "demarche_id_en_concurrence": null, "demarches_consentement": [],"fondamentale":{"date_debut":null,"date_fin":null,"duree":60,"substances":["auru","arge","cuiv"],"titulaireIds":["fr-401802863"],"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"2011-06-29","id":"iV47juaOeL4EAUsOqiWN6gOO","ordre":1,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-pr201-mfr01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":null},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"pr2","demarche_statut_id":"acc","demarche_date_debut":"2011-10-31","demarche_date_fin":"2016-10-31","ordre":3}],"nb_activites_to_do":null}) + const bonEspoirData = titreGetValidator.parse({"id":"sJorD6pQomXTN7oRpyGwLijB","nom":"Bon Espoir","slug":"m-pr-bon-espoir-2001","titre_type_id":"prm","titre_statut_id":"ech","titre_doublon":null,"references":[{"nom":"21/2001","referenceTypeId":"dea"},{"nom":"2013-0033-MI","referenceTypeId":"deb"}],"titre_last_modified_date":"2023-11-30","demarches":[{"id":"ry8fHgRWiKEOE1x1ZANmajh8","slug":"m-pr-bon-espoir-2001-oct01","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":"2001-11-01","date_fin":null,"duree":60,"substances":["auru","scoc"],"titulaireIds":null,"amodiataireIds":null,"perimetre":{"geojson4326_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[-53.9579321010744,5.07776938770113],[-53.9575232150351,4.98735333700249],[-53.8673626701318,4.98775355007457],[-53.8672265271601,4.95631734759459],[-53.7770631139658,4.95670276466037],[-53.7769878916108,4.93868722476635],[-53.5698730075868,4.93952315477954],[-53.5702069576163,5.02537608911083],[-53.759383911755,5.02460196044417],[-53.7596128864516,5.07864912381548],[-53.9579321010744,5.07776938770113]]]]}},"geojson4326_points":{"type":"FeatureCollection","properties":{},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.9579321010744,5.07776938770113]},"properties":{"nom":"1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7596128864516,5.07864912381548]},"properties":{"nom":"2","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.759383911755,5.02460196044417]},"properties":{"nom":"3","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.5702069576163,5.02537608911083]},"properties":{"nom":"4","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.5698730075868,4.93952315477954]},"properties":{"nom":"5","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7769878916108,4.93868722476635]},"properties":{"nom":"6","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7770631139658,4.95670276466037]},"properties":{"nom":"7","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8672265271601,4.95631734759459]},"properties":{"nom":"8","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8673626701318,4.98775355007457]},"properties":{"nom":"9","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.9575232150351,4.98735333700249]},"properties":{"nom":"10","description":null}}]},"geojson_origine_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[-53.957932101,5.077769388],[-53.957523215,4.987353337],[-53.86736267,4.98775355],[-53.867226527,4.956317348],[-53.777063114,4.956702765],[-53.776987892,4.938687225],[-53.569873008,4.939523155],[-53.570206958,5.025376089],[-53.759383912,5.02460196],[-53.759612886,5.078649124],[-53.957932101,5.077769388]]]]}},"geojson_origine_points":{"type":"FeatureCollection","properties":{},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.9579321010744,5.07776938770113]},"properties":{"nom":"1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7596128864516,5.07864912381548]},"properties":{"nom":"2","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.759383911755,5.02460196044417]},"properties":{"nom":"3","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.5702069576163,5.02537608911083]},"properties":{"nom":"4","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.5698730075868,4.93952315477954]},"properties":{"nom":"5","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7769878916108,4.93868722476635]},"properties":{"nom":"6","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7770631139658,4.95670276466037]},"properties":{"nom":"7","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8672265271601,4.95631734759459]},"properties":{"nom":"8","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8673626701318,4.98775355007457]},"properties":{"nom":"9","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.9575232150351,4.98735333700249]},"properties":{"nom":"10","description":null}}]},"geojson_origine_geo_systeme_id":"4326","geojson4326_forages":null,"geojson_origine_forages":null,"surface":465.5,"communes":[{"id":"97306","nom":"Mana"},{"id":"97311","nom":"Saint-Laurent-du-Maroni"}],"secteurs_maritimes":[],"sdom_zones":["0","2"],"forets":["LDD","MDF","PAUL"]}},"etape_statut_id":"fai","is_brouillon":false,"date":"2001-10-26","id":"CRVhvEIQAc319vUd8BfZoH5W","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-oct01-dpu01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":3201430},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":"EUR"}]},{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000000774145"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"ECOI0100462D"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"2001-10-24","id":"Ce4K8goEZzjqXRJLL051jcpD","ordre":1,"note":{"valeur":"Décret du 24 octobre 2001 accordant un permis de recherches A en Guyane","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-oct01-dex01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":null},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":null}]},{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"oct","demarche_statut_id":"acc","demarche_date_debut":"2001-11-01","demarche_date_fin":"2006-11-01","ordre":1},{"id":"PnFewl8P4Zt5Vm49zXqyn7Ml","slug":"m-pr-bon-espoir-2001-pr101","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["auru"],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"2010-03-02","id":"qtn2a3DNPx258VZgSjqXGKf6","ordre":4,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-pr101-dpu02","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":560000},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":"EUR"}]},{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000021889053"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"DEVO1003938A"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"2010-02-17","id":"tjOMgkb83wksMc6DFuqrecbu","ordre":3,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-pr101-dex02","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":null},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":null}]},{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"2010-02-17-arr-a26ea089","type":"DESCRIPTION_OPTIONNELLE","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"arr","description":"Arrêté du 17 février 2010 modifiant l'arrêté du 6 mai 2009 prolongeant la validité du permis exclusif de recherches de mines d'or dit « Permis de Bon Espoir » et réduisant sa surface (Guyane)"}],"avis_documents":[]},{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":"2011-10-31","duree":null,"substances":["auru"],"titulaireIds":null,"amodiataireIds":null,"perimetre":{"geojson4326_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[-53.9577777777778,5.07666666666667],[-53.9575,5.0325],[-53.8944444444444,5.00055555555556],[-53.8208333333333,4.97972222222222],[-53.7138888888889,4.96388888888889],[-53.7322222222222,5.02361111111111],[-53.8763888888889,5.02277777777778],[-53.9577777777778,5.07666666666667]]]]}},"geojson4326_points":{"type":"FeatureCollection","properties":{},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.9577777777778,5.07666666666667]},"properties":{"nom":"A","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8763888888889,5.02277777777778]},"properties":{"nom":"B","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7322222222222,5.02361111111111]},"properties":{"nom":"C","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7138888888889,4.96388888888889]},"properties":{"nom":"D","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8208333333333,4.97972222222222]},"properties":{"nom":"E","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8944444444444,5.00055555555556]},"properties":{"nom":"F","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.9575,5.0325]},"properties":{"nom":"G","description":null}}]},"geojson_origine_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[-53.957777778,5.076666667],[-53.9575,5.0325],[-53.894444444,5.000555556],[-53.820833333,4.979722222],[-53.713888889,4.963888889],[-53.732222222,5.023611111],[-53.876388889,5.022777778],[-53.957777778,5.076666667]]]]}},"geojson_origine_points":{"type":"FeatureCollection","properties":{},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.9577777777778,5.07666666666667]},"properties":{"nom":"A","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8763888888889,5.02277777777778]},"properties":{"nom":"B","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7322222222222,5.02361111111111]},"properties":{"nom":"C","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.7138888888889,4.96388888888889]},"properties":{"nom":"D","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8208333333333,4.97972222222222]},"properties":{"nom":"E","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.8944444444444,5.00055555555556]},"properties":{"nom":"F","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.9575,5.0325]},"properties":{"nom":"G","description":null}}]},"geojson_origine_geo_systeme_id":"4326","geojson4326_forages":null,"geojson_origine_forages":null,"surface":122.275,"communes":[{"id":"97306","nom":"Mana"},{"id":"97311","nom":"Saint-Laurent-du-Maroni"}],"secteurs_maritimes":[],"sdom_zones":["0","2"],"forets":["LDD","PAUL"]}},"etape_statut_id":"fai","is_brouillon":false,"date":"2009-05-16","id":"07cbyPCYcOtKYkw4kOqg2Sed","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-pr101-dpu01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":837000},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":"EUR"}]},{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000020616467"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"DEVO0909004A"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"2009-05-06","id":"orsPMmIfX4kSgVus0HTrBxAo","ordre":1,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-pr101-dex01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":null},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":null}]},{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"2009-05-06-arr-54f88e41","type":"DESCRIPTION_OPTIONNELLE","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"arr","description":"Arrêté du 6 mai 2009 prolongeant la validité du permis exclusif de recherches de mines d'or dit « Permis Bon Espoir » et réduisant sa superficie (Guyane)"}],"avis_documents":[]}],"demarche_type_id":"pr1","demarche_statut_id":"acc","demarche_date_debut":"2006-11-01","demarche_date_fin":"2011-10-31","ordre":2},{"id":"EMFAv33wlGqMcjd6DwKzQBvr","slug":"m-pr-bon-espoir-2001-pr201","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":"2016-10-31","duree":60,"substances":["auru","scoc"],"titulaireIds":["fr-401802863"],"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"2015-08-15","id":"Qp5DRYEN3Nc9n4CIwEYW7evs","ordre":9,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-pr201-dpu01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":1250000},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":"EUR"}]},{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000031053068"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"EINL1518062A"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":60,"substances":["auru","scoc"],"titulaireIds":["fr-401802863"],"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"2015-08-03","id":"ABvgimvovFWeEhoMOrKi4wAy","ordre":8,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-pr201-dex01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":null},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":null}]},{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"2015-08-03-arm-8bf71a65","type":"DESCRIPTION_OPTIONNELLE","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"arm","description":"Arrêté du 3 août 2015 prolongeant la durée de validité du permis exclusif de recherches de mines d'or et de substances connexes dit « Permis de Bon Espoir » attribué à la société Armina Ressources Minières dans le département de Guyane"}],"avis_documents":[]},{"etape_type_id":"men","etape_statut_id":"fai","is_brouillon":false,"date":"2011-06-30","id":"nLXaR7H78V43GB47ypDoqvKz","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-pr201-men01","sections_with_values":[],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"mfr", "demarche_id_en_concurrence": null, "demarches_consentement": [],"fondamentale":{"date_debut":null,"date_fin":null,"duree":60,"substances":["auru","arge","cuiv"],"titulaireIds":["fr-401802863"],"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"2011-06-29","id":"iV47juaOeL4EAUsOqiWN6gOO","ordre":1,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-bon-espoir-2001-pr201-mfr01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":null},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"pr2","demarche_statut_id":"acc","demarche_date_debut":"2011-10-31","demarche_date_fin":"2016-10-31","ordre":3}],"nb_activites_to_do":null}) bonEspoirData.nb_activites_to_do = 0 // prettier-ignore bonEspoirData.demarches.push(demarcheGetValidator.parse({ - "id": "idtravaux", "ordre": 4, "slug": "m-pr-bon-espoir-2001-dam01", "description": null, "etapes": [{ "etape_type_id": "wpo", "is_brouillon": false, "ordre": 4, note: {valeur: '', is_avertissement: false}, "etape_statut_id": "acc", "date": "2012-07-23", "id": "idEtapeTravaux1", "slug": "m-pr-bon-espoir-2001-dam01-wpo01", "sections_with_values": [], "entreprises_documents": [], "avis_documents": [], "etape_documents": [{ "id": "2012-07-23-apd-607c3aa8", "description": "N°2012-SPR-DRMSS-1", "etape_document_type_id": "apd", "public_lecture": false, "entreprises_lecture": false }] }, { "etape_type_id": "wpp", is_brouillon: ETAPE_IS_NOT_BROUILLON, "ordre": 3, note: { valeur: 'note importante', is_avertissement: true },"etape_statut_id": "fai","date": "2011-05-04","id": "idEtapeTravaux2","slug": "m-pr-bon-espoir-2001-dam01-wpp01","sections_with_values": [],"entreprises_documents": [],"avis_documents":[],"etape_documents": [{"id": "id_Document","description": "","etape_document_type_id": "apu","public_lecture": false,"entreprises_lecture": false }]}, {"etape_type_id": "wfd",is_brouillon: ETAPE_IS_NOT_BROUILLON, "ordre": 2,note: {valeur: '', is_avertissement: false}, "etape_statut_id": "fai","date": "2010-10-01","id": "idEtapeTravaux3","slug": "m-pr-bon-espoir-2001-dam01-wfd01","sections_with_values": [],"entreprises_documents": [],"etape_documents": [],"avis_documents":[]}, {"etape_type_id": "mcr",is_brouillon: ETAPE_IS_NOT_BROUILLON,"ordre": 1,note: {valeur: '', is_avertissement: false},"etape_statut_id": "fav","date": "2010-10-01","id": "idEtapeTravaux4","slug": "m-pr-bon-espoir-2001-dam01-mcr01","sections_with_values": [],"entreprises_documents": [],"etape_documents": [],"avis_documents":[]}],"demarche_type_id": "dam","demarche_statut_id": "fpm","demarche_date_debut": null,"demarche_date_fin": null + "id": "idtravaux", "ordre": 4, "slug": "m-pr-bon-espoir-2001-dam01", "description": null, "etapes": [{ "etape_type_id": "wpo", "is_brouillon": false, "ordre": 4, note: {valeur: '', is_avertissement: false}, "etape_statut_id": "acc", "date": "2012-07-23", "id": "idEtapeTravaux1", "slug": "m-pr-bon-espoir-2001-dam01-wpo01", "sections_with_values": [], "entreprises_documents": [], "avis_documents": [], "etape_documents": [{ "id": "2012-07-23-apd-607c3aa8","type":"DESCRIPTION_OPTIONNELLE", "description": "N°2012-SPR-DRMSS-1", "etape_document_type_id": "apd", "public_lecture": false, "entreprises_lecture": false }] }, { "etape_type_id": "wpp", is_brouillon: ETAPE_IS_NOT_BROUILLON, "ordre": 3, note: { valeur: 'note importante', is_avertissement: true },"etape_statut_id": "fai","date": "2011-05-04","id": "idEtapeTravaux2","slug": "m-pr-bon-espoir-2001-dam01-wpp01","sections_with_values": [],"entreprises_documents": [],"avis_documents":[],"etape_documents": [{"id": "id_Document","type":"DESCRIPTION_OPTIONNELLE","description": "","etape_document_type_id": "apu","public_lecture": false,"entreprises_lecture": false }]}, {"etape_type_id": "wfd",is_brouillon: ETAPE_IS_NOT_BROUILLON, "ordre": 2,note: {valeur: '', is_avertissement: false}, "etape_statut_id": "fai","date": "2010-10-01","id": "idEtapeTravaux3","slug": "m-pr-bon-espoir-2001-dam01-wfd01","sections_with_values": [],"entreprises_documents": [],"etape_documents": [],"avis_documents":[]}, {"etape_type_id": "mcr",is_brouillon: ETAPE_IS_NOT_BROUILLON,"ordre": 1,note: {valeur: '', is_avertissement: false},"etape_statut_id": "fav","date": "2010-10-01","id": "idEtapeTravaux4","slug": "m-pr-bon-espoir-2001-dam01-mcr01","sections_with_values": [],"entreprises_documents": [],"etape_documents": [],"avis_documents":[]}],"demarche_type_id": "dam","demarche_statut_id": "fpm","demarche_date_debut": null,"demarche_date_fin": null })) @@ -544,7 +544,7 @@ const basseManaApiClient: PropsApiClient = { getTitreAction(titreIdOrSlug) // prettier-ignore - const basseManaData = titreGetValidator.parse({ "id": "ORKjSbwrb87xE53MsYClV8OF", "nom": "Basse Mana", "slug": "m-pr-basse-mana-2018", "titre_type_id": "prm", "titre_statut_id": "sup", "titre_doublon": null, "references": [{ "nom": "22/2018", "referenceTypeId": "dea" }, { "nom": "2016-0010-MI", "referenceTypeId": "deb" }], "titre_last_modified_date": "2023-12-19", "demarches": [{ "id": "GnIerujOWqlS3U06Xcbc1Dr0", "slug": "m-pr-basse-mana-2018-oct01", "description": null, "etapes": [{ "etape_type_id": "dpu", "fondamentale": { "date_debut": null, "date_fin": null, "duree": 36, "substances": ["tant", "niob", "lith", "bery", "etai", "wolf", "tita", "auru"], "titulaireIds": ["fr-790856850"], "amodiataireIds": null, "perimetre": { "geojson4326_perimetre": { "type": "Feature", "properties": {}, "geometry": { "type": "MultiPolygon", "coordinates": [[[[-53.699125239725, 5.29137675727333], [-53.735659753333, 5.24333287037071], [-53.6847736578144, 5.232646225266], [-53.664223513371, 5.23752353831223], [-53.6554344678131, 5.25034817283726], [-53.6402449164671, 5.25044876137938], [-53.6331053301638, 5.26979119871868], [-53.6650166925488, 5.27353207619541], [-53.699125239725, 5.29137675727333]]]] } }, "geojson4326_points": { "type": "FeatureCollection", "properties": {}, "features": [{ "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.699125239725, 5.29137675727333] }, "properties": { "nom": "A", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6650166925488, 5.27353207619541] }, "properties": { "nom": "B", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6331053301638, 5.26979119871868] }, "properties": { "nom": "C", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6402449164671, 5.25044876137938] }, "properties": { "nom": "D", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6554344678131, 5.25034817283726] }, "properties": { "nom": "E", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.664223513371, 5.23752353831223] }, "properties": { "nom": "F", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6847736578144, 5.232646225266] }, "properties": { "nom": "G", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.735659753333, 5.24333287037071] }, "properties": { "nom": "H", "description": null } }] }, "geojson_origine_perimetre": { "type": "Feature", "properties": {}, "geometry": { "type": "MultiPolygon", "coordinates": [[[[200814, 585525], [204589, 583534], [208127, 583105], [207326, 580968], [205641, 580964], [204660, 579549], [202378, 579019], [196738, 580226], [200814, 585525]]]] } }, "geojson_origine_points": { "type": "FeatureCollection", "features": [{ "type": "Feature", "geometry": { "type": "Point", "coordinates": [200814, 585525] }, "properties": { "nom": "A" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [204589, 583534] }, "properties": { "nom": "B" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [208127, 583105] }, "properties": { "nom": "C" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [207326, 580968] }, "properties": { "nom": "D" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [205641, 580964] }, "properties": { "nom": "E" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [204660, 579549] }, "properties": { "nom": "F" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [202378, 579019] }, "properties": { "nom": "G" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [196738, 580226] }, "properties": { "nom": "H" } }] }, "geojson_origine_geo_systeme_id": "2972", "geojson4326_forages": null, "geojson_origine_forages": null, "surface": 48, "communes": [{ "id": "97306", "nom": "Mana" }], "secteurs_maritimes": [], "sdom_zones": ["2"], "forets": ["BSM"] } }, "etape_statut_id": "fai", "is_brouillon": false, "date": "2018-09-11", "id": "ooH6ZbECJPcDPFsE0McnKvUm", "ordre": 9, "note": { "valeur": "", "is_avertissement": false }, "slug": "m-pr-basse-mana-2018-oct01-dpu01", "sections_with_values": [{ "id": "prx", "nom": "Propriétés du permis exclusif de recherches", "elements": [{ "id": "engagement", "nom": "Engagement", "optionnel": true, "type": "number", "value": 150000 }, { "id": "engagementDeviseId", "nom": "Devise de l'engagement", "description": "", "optionnel": true, "type": "select", "options": [{ "id": "EUR", "nom": "Euros" }, { "id": "FRF", "nom": "Francs" }, { "id": "XPF", "nom": "Francs Pacifique" }], "value": "EUR" }] }, { "id": "publication", "nom": "Références Légifrance", "elements": [{ "id": "jorf", "nom": "Numéro JORF", "description": "", "optionnel": false, "type": "text", "value": "JORFTEXT000037382008" }, { "id": "nor", "nom": "Numéro NOR", "description": "", "optionnel": true, "type": "text", "value": "ECOL1816264A" }] }], "entreprises_documents": [], "etape_documents": [], "avis_documents": [] }, { "etape_type_id": "dex", "fondamentale": { "date_debut": null, "date_fin": null, "duree": 36, "substances": ["tant", "niob", "lith", "bery", "etai", "wolf", "tita", "auru"], "titulaireIds": ["fr-790856850"], "amodiataireIds": null, "perimetre": { "geojson4326_perimetre": { "type": "Feature", "properties": {}, "geometry": { "type": "MultiPolygon", "coordinates": [[[[-53.699125239725, 5.29137675727333], [-53.735659753333, 5.24333287037071], [-53.6847736578144, 5.232646225266], [-53.664223513371, 5.23752353831223], [-53.6554344678131, 5.25034817283726], [-53.6402449164671, 5.25044876137938], [-53.6331053301638, 5.26979119871868], [-53.6650166925488, 5.27353207619541], [-53.699125239725, 5.29137675727333]]]] } }, "geojson4326_points": { "type": "FeatureCollection", "properties": {}, "features": [{ "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.699125239725, 5.29137675727333] }, "properties": { "nom": "A", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6650166925488, 5.27353207619541] }, "properties": { "nom": "B", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6331053301638, 5.26979119871868] }, "properties": { "nom": "C", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6402449164671, 5.25044876137938] }, "properties": { "nom": "D", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6554344678131, 5.25034817283726] }, "properties": { "nom": "E", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.664223513371, 5.23752353831223] }, "properties": { "nom": "F", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6847736578144, 5.232646225266] }, "properties": { "nom": "G", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.735659753333, 5.24333287037071] }, "properties": { "nom": "H", "description": null } }] }, "geojson_origine_perimetre": { "type": "Feature", "properties": {}, "geometry": { "type": "MultiPolygon", "coordinates": [[[[200814, 585525], [204589, 583534], [208127, 583105], [207326, 580968], [205641, 580964], [204660, 579549], [202378, 579019], [196738, 580226], [200814, 585525]]]] } }, "geojson_origine_points": { "type": "FeatureCollection", "features": [{ "type": "Feature", "geometry": { "type": "Point", "coordinates": [200814, 585525] }, "properties": { "nom": "A" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [204589, 583534] }, "properties": { "nom": "B" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [208127, 583105] }, "properties": { "nom": "C" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [207326, 580968] }, "properties": { "nom": "D" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [205641, 580964] }, "properties": { "nom": "E" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [204660, 579549] }, "properties": { "nom": "F" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [202378, 579019] }, "properties": { "nom": "G" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [196738, 580226] }, "properties": { "nom": "H" } }] }, "geojson_origine_geo_systeme_id": "2972", "geojson4326_forages": null, "geojson_origine_forages": null, "surface": 48, "communes": [{ "id": "97306", "nom": "Mana" }], "secteurs_maritimes": [], "sdom_zones": ["2"], "forets": ["BSM"] } }, "etape_statut_id": "acc", "is_brouillon": false, "date": "2018-08-31", "id": "KJtV68vswF5ewUyF2jTuLGhS", "ordre": 8, "note": { "valeur": "", "is_avertissement": false }, "slug": "m-pr-basse-mana-2018-oct01-dex01", "sections_with_values": [{ "id": "prx", "nom": "Propriétés du permis exclusif de recherches", "elements": [{ "id": "engagement", "nom": "Engagement", "optionnel": true, "type": "number", "value": 150000 }, { "id": "engagementDeviseId", "nom": "Devise de l'engagement", "description": "", "optionnel": true, "type": "select", "options": [{ "id": "EUR", "nom": "Euros" }, { "id": "FRF", "nom": "Francs" }, { "id": "XPF", "nom": "Francs Pacifique" }], "value": "EUR" }] }, { "id": "publication", "nom": "Références Légifrance", "elements": [{ "id": "jorf", "nom": "Numéro JORF", "description": "", "optionnel": true, "type": "text", "value": "JORFTEXT000037382008" }, { "id": "nor", "nom": "Numéro NOR", "description": "", "optionnel": true, "type": "text", "value": "ECOL1816264A" }] }], "entreprises_documents": [], "etape_documents": [], "avis_documents": [] }, { "etape_type_id": "men", "etape_statut_id": "fai", "is_brouillon": false, "date": "2016-08-28", "id": "qVJM9zS6hWyIr3My5OoubQA3", "ordre": 2, "note": { "valeur": "", "is_avertissement": false }, "slug": "m-pr-basse-mana-2018-oct01-men01", "sections_with_values": [], "entreprises_documents": [], "etape_documents": [], "avis_documents": [] }, { "etape_type_id": "mfr", "demarche_id_en_concurrence": null, "demarches_consentement": [], "fondamentale": { "date_debut": null, "date_fin": null, "duree": 36, "substances": ["tant", "niob", "scoc"], "titulaireIds": null, "amodiataireIds": null, "perimetre": null }, "etape_statut_id": "fai", "is_brouillon": false, "date": "2016-06-19", "id": "abABihashClZP0lL3NUPELNV", "ordre": 1, "note": { "valeur": "", "is_avertissement": false }, "slug": "m-pr-basse-mana-2018-oct01-mfr01", "sections_with_values": [{ "id": "prx", "nom": "Propriétés du permis exclusif de recherches", "elements": [{ "id": "engagement", "nom": "Engagement", "optionnel": true, "type": "number", "value": null }, { "id": "engagementDeviseId", "nom": "Devise de l'engagement", "description": "", "optionnel": true, "type": "select", "options": [{ "id": "EUR", "nom": "Euros" }, { "id": "FRF", "nom": "Francs" }, { "id": "XPF", "nom": "Francs Pacifique" }], "value": null }] }], "entreprises_documents": [], "etape_documents": [], "avis_documents": [] }], "demarche_type_id": "oct", "demarche_statut_id": "acc", "demarche_date_debut": "2018-09-11", "demarche_date_fin": "2021-09-11", "ordre": 1 }, { "id": "mZAUVvPyznbzpj3e3grjFmlJ", "slug": "m-pr-basse-mana-2018-pr101", "description": null, "etapes": [{ "etape_type_id": "rpu", "fondamentale": { "date_debut": null, "date_fin": null, "duree": null, "substances": null, "titulaireIds": null, "amodiataireIds": null, "perimetre": null }, "etape_statut_id": "fai", "is_brouillon": false, "date": "2023-11-17", "id": "f76c17ab21ca966988390d92", "ordre": 11, "note": { "valeur": "", "is_avertissement": false }, "slug": "m-pr-basse-mana-2018-pr101-rpu01", "sections_with_values": [], "entreprises_documents": [], "etape_documents": [], "avis_documents": [] }, { "etape_type_id": "dpu", "fondamentale": { "date_debut": null, "date_fin": null, "duree": null, "substances": null, "titulaireIds": null, "amodiataireIds": null, "perimetre": null }, "etape_statut_id": "fai", "is_brouillon": false, "date": "2023-11-15", "id": "71f6497117b21325d53d8e56", "ordre": 10, "note": { "valeur": "", "is_avertissement": false }, "slug": "m-pr-basse-mana-2018-pr101-dpu01", "sections_with_values": [{ "id": "publication", "nom": "Références Légifrance", "elements": [{ "id": "jorf", "nom": "Numéro JORF", "description": "", "optionnel": false, "type": "text", "value": "Texte 3 sur 160" }] }], "entreprises_documents": [], "etape_documents": [{ "id": "2023-11-15-pub-4d420801", "public_lecture": true, "entreprises_lecture": true, "etape_document_type_id": "pub", "description": "" }], "avis_documents": [] }, { "etape_type_id": "dex", "fondamentale": { "date_debut": null, "date_fin": null, "duree": 30, "substances": null, "titulaireIds": null, "amodiataireIds": null, "perimetre": null }, "etape_statut_id": "acc", "is_brouillon": false, "date": "2023-11-07", "id": "590f6dd2f808eeadf51b820e", "ordre": 9, "note": { "valeur": "", "is_avertissement": false }, "slug": "m-pr-basse-mana-2018-pr101-dex01", "sections_with_values": [{ "id": "publication", "nom": "Références Légifrance", "elements": [{ "id": "jorf", "nom": "Numéro JORF", "description": "", "optionnel": true, "type": "text", "value": null }, { "id": "nor", "nom": "Numéro NOR", "description": "", "optionnel": true, "type": "text", "value": null }] }], "entreprises_documents": [], "etape_documents": [], "avis_documents": [] }, { "etape_type_id": "ppu", "etape_statut_id": "ter", "is_brouillon": false, "date": "2023-03-27", "id": "M1mK0vhAHH5CTaUwq4cJzK49", "ordre": 5, "note": { "valeur": "", "is_avertissement": false }, "slug": "m-pr-basse-mana-2018-pr101-ppu01", "sections_with_values": [{ "id": "opdp", "elements": [{ "id": "lien", "nom": "Lien public externe", "description": "", "optionnel": true, "type": "url", "value": null }, {"id": "duree", "nom": "Durée en jours de la consultation du public", "description": "", "optionnel": false, "type": "number", "value": 15}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"men","etape_statut_id":"fai","is_brouillon":false,"date":"2021-04-30","id":"wFb34sxGyHoRNOByPffQZyAF","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-basse-mana-2018-pr101-men01","sections_with_values":[],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"mfr", "demarche_id_en_concurrence": null, "demarches_consentement": [],"fondamentale":{"date_debut":null,"date_fin":null,"duree":60,"substances":["tant","niob","lith","bery","etai","wolf","tita","auru"],"titulaireIds":["fr-790856850"],"amodiataireIds":null,"perimetre":{"geojson4326_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[-53.699150462397206,5.291394409468797],[-53.73568497160258,5.2433505257409125],[-53.684798879087204,5.232663883719148],[-53.664248736219285,5.2375411971227654],[-53.65545969176547,5.250365830767107],[-53.64027014144058,5.250466419912988],[-53.633130556393525,5.269808855679936],[-53.66511918689031,5.291623119512839],[-53.699150462397206,5.291394409468797]]]]}},"geojson4326_points":{"type":"FeatureCollection","properties":{},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.699150462397206,5.291394409468797]},"properties":{"nom":"A","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.66511918689031,5.291623119512839]},"properties":{"nom":"B","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.633130556393525,5.269808855679936]},"properties":{"nom":"C","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.64027014144058,5.250466419912988]},"properties":{"nom":"D","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.65545969176547,5.250365830767107]},"properties":{"nom":"E","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.664248736219285,5.2375411971227654]},"properties":{"nom":"F","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.684798879087204,5.232663883719148]},"properties":{"nom":"G","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.73568497160258,5.2433505257409125]},"properties":{"nom":"H","description":null}}]},"geojson_origine_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[200814,585525],[204589,585534],[208127,583105],[207326,580968],[205641,580964],[204660,579549],[202378,579019],[196738,580226],[200814,585525]]]]}},"geojson_origine_points":{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[200814,585525]},"properties":{"nom":"A"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[204589,585534]},"properties":{"nom":"B"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[208127,583105]},"properties":{"nom":"C"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[207326,580968]},"properties":{"nom":"D"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[205641,580964]},"properties":{"nom":"E"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[204660,579549]},"properties":{"nom":"F"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[202378,579019]},"properties":{"nom":"G"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[196738,580226]},"properties":{"nom":"H"}}]},"geojson_origine_geo_systeme_id":"2972","geojson4326_forages":null,"geojson_origine_forages":null,"surface":48.06,"communes":[{"id":"97306","nom":"Mana"}],"secteurs_maritimes":[],"sdom_zones":["2"],"forets":["BSM"]}},"etape_statut_id":"fai","is_brouillon":false,"date":"2021-04-30","id":"NKW0jIKc5cPBIp2dwu2VceCG","ordre":1,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-basse-mana-2018-pr101-mfr01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":null},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"pr1","demarche_statut_id":"acc","demarche_date_debut":"2021-09-11","demarche_date_fin":"2024-03-11","ordre":2},{"id":"5df48d3536a38dd1dab542d7","slug":"m-pr-basse-mana-2018-pr201","description":"","etapes":[{"etape_type_id":"men","etape_statut_id":"fai","is_brouillon":false,"date":"2023-10-30","id":"37a1752da216067fc73328f9","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-basse-mana-2018-pr201-men01","sections_with_values":[],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"mfr", "demarche_id_en_concurrence": null, "demarches_consentement": [],"fondamentale":{"date_debut":null,"date_fin":null,"duree":60,"substances":["tant","niob","lith","bery","etai","wolf","tita","auru"],"titulaireIds":null,"amodiataireIds":null,"perimetre":{"geojson4326_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[-53.695977302723314,5.258026897118486],[-53.69166175320614,5.243894120712839],[-53.691207934852734,5.238962048893827],[-53.66947244758239,5.236434510036549],[-53.66426676493007,5.2375411203489115],[-53.655468706369525,5.250365792413383],[-53.64027010339901,5.25045738302719],[-53.63422022259896,5.267391338838475],[-53.64933956522329,5.274005464773927],[-53.66943759690406,5.2748050575845875],[-53.66988205803166,5.281761503749559],[-53.671594626284566,5.281690874443703],[-53.67432345044184,5.276844434310086],[-53.67742349010169,5.274481516415551],[-53.68523182828244,5.270616251350751],[-53.695977302723314,5.258026897118486]]]]}},"geojson4326_points":{"type":"FeatureCollection","properties":{},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.695977302723314,5.258026897118486]},"properties":{"nom":"A","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.68523182828244,5.270616251350751]},"properties":{"nom":"B","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.67742349010169,5.274481516415551]},"properties":{"nom":"C","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.67432345044184,5.276844434310086]},"properties":{"nom":"D","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.671594626284566,5.281690874443703]},"properties":{"nom":"E","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.66988205803166,5.281761503749559]},"properties":{"nom":"F","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.66943759690406,5.2748050575845875]},"properties":{"nom":"G","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.64933956522329,5.274005464773927]},"properties":{"nom":"H","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.63422022259896,5.267391338838475]},"properties":{"nom":"I","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.64027010339901,5.25045738302719]},"properties":{"nom":"J","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.655468706369525,5.250365792413383]},"properties":{"nom":"K","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.66426676493007,5.2375411203489115]},"properties":{"nom":"L","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.66947244758239,5.236434510036549]},"properties":{"nom":"M","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.691207934852734,5.238962048893827]},"properties":{"nom":"N","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.69166175320614,5.243894120712839]},"properties":{"nom":"O","description":null}}]},"geojson_origine_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[201150,581831],[202348,583219],[203216,583643],[203561,583903],[203866,584438],[204056,584445],[204102,583675],[206331,583577],[208005,582838],[207326,580967],[205640,580964],[204658,579549],[204080,579429],[201670,579719],[201622,580265],[201150,581831]]]]}},"geojson_origine_points":{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[201150,581831]},"properties":{"nom":"A"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[202348,583219]},"properties":{"nom":"B"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[203216,583643]},"properties":{"nom":"C"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[203561,583903]},"properties":{"nom":"D"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[203866,584438]},"properties":{"nom":"E"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[204056,584445]},"properties":{"nom":"F"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[204102,583675]},"properties":{"nom":"G"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[206331,583577]},"properties":{"nom":"H"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[208005,582838]},"properties":{"nom":"I"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[207326,580967]},"properties":{"nom":"J"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[205640,580964]},"properties":{"nom":"K"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[204658,579549]},"properties":{"nom":"L"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[204080,579429]},"properties":{"nom":"M"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[201670,579719]},"properties":{"nom":"N"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[201622,580265]},"properties":{"nom":"O"}}]},"geojson_origine_geo_systeme_id":"2972","geojson4326_forages":null,"geojson_origine_forages":null,"surface":20.69,"communes":[{"id":"97306","nom":"Mana"}],"secteurs_maritimes":[],"sdom_zones":["2"],"forets":["BSM"]}},"etape_statut_id":"fai","is_brouillon":false,"date":"2023-10-30","id":"47a22a6ca44891d40e2f4149","ordre":1,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-basse-mana-2018-pr201-mfr01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":null},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"pr2","demarche_statut_id":"dep","demarche_date_debut":"2024-03-11","demarche_date_fin":null,"ordre":3}],"nb_activites_to_do":null}) + const basseManaData = titreGetValidator.parse({ "id": "ORKjSbwrb87xE53MsYClV8OF", "nom": "Basse Mana", "slug": "m-pr-basse-mana-2018", "titre_type_id": "prm", "titre_statut_id": "sup", "titre_doublon": null, "references": [{ "nom": "22/2018", "referenceTypeId": "dea" }, { "nom": "2016-0010-MI", "referenceTypeId": "deb" }], "titre_last_modified_date": "2023-12-19", "demarches": [{ "id": "GnIerujOWqlS3U06Xcbc1Dr0", "slug": "m-pr-basse-mana-2018-oct01", "description": null, "etapes": [{ "etape_type_id": "dpu", "fondamentale": { "date_debut": null, "date_fin": null, "duree": 36, "substances": ["tant", "niob", "lith", "bery", "etai", "wolf", "tita", "auru"], "titulaireIds": ["fr-790856850"], "amodiataireIds": null, "perimetre": { "geojson4326_perimetre": { "type": "Feature", "properties": {}, "geometry": { "type": "MultiPolygon", "coordinates": [[[[-53.699125239725, 5.29137675727333], [-53.735659753333, 5.24333287037071], [-53.6847736578144, 5.232646225266], [-53.664223513371, 5.23752353831223], [-53.6554344678131, 5.25034817283726], [-53.6402449164671, 5.25044876137938], [-53.6331053301638, 5.26979119871868], [-53.6650166925488, 5.27353207619541], [-53.699125239725, 5.29137675727333]]]] } }, "geojson4326_points": { "type": "FeatureCollection", "properties": {}, "features": [{ "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.699125239725, 5.29137675727333] }, "properties": { "nom": "A", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6650166925488, 5.27353207619541] }, "properties": { "nom": "B", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6331053301638, 5.26979119871868] }, "properties": { "nom": "C", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6402449164671, 5.25044876137938] }, "properties": { "nom": "D", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6554344678131, 5.25034817283726] }, "properties": { "nom": "E", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.664223513371, 5.23752353831223] }, "properties": { "nom": "F", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6847736578144, 5.232646225266] }, "properties": { "nom": "G", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.735659753333, 5.24333287037071] }, "properties": { "nom": "H", "description": null } }] }, "geojson_origine_perimetre": { "type": "Feature", "properties": {}, "geometry": { "type": "MultiPolygon", "coordinates": [[[[200814, 585525], [204589, 583534], [208127, 583105], [207326, 580968], [205641, 580964], [204660, 579549], [202378, 579019], [196738, 580226], [200814, 585525]]]] } }, "geojson_origine_points": { "type": "FeatureCollection", "features": [{ "type": "Feature", "geometry": { "type": "Point", "coordinates": [200814, 585525] }, "properties": { "nom": "A" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [204589, 583534] }, "properties": { "nom": "B" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [208127, 583105] }, "properties": { "nom": "C" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [207326, 580968] }, "properties": { "nom": "D" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [205641, 580964] }, "properties": { "nom": "E" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [204660, 579549] }, "properties": { "nom": "F" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [202378, 579019] }, "properties": { "nom": "G" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [196738, 580226] }, "properties": { "nom": "H" } }] }, "geojson_origine_geo_systeme_id": "2972", "geojson4326_forages": null, "geojson_origine_forages": null, "surface": 48, "communes": [{ "id": "97306", "nom": "Mana" }], "secteurs_maritimes": [], "sdom_zones": ["2"], "forets": ["BSM"] } }, "etape_statut_id": "fai", "is_brouillon": false, "date": "2018-09-11", "id": "ooH6ZbECJPcDPFsE0McnKvUm", "ordre": 9, "note": { "valeur": "", "is_avertissement": false }, "slug": "m-pr-basse-mana-2018-oct01-dpu01", "sections_with_values": [{ "id": "prx", "nom": "Propriétés du permis exclusif de recherches", "elements": [{ "id": "engagement", "nom": "Engagement", "optionnel": true, "type": "number", "value": 150000 }, { "id": "engagementDeviseId", "nom": "Devise de l'engagement", "description": "", "optionnel": true, "type": "select", "options": [{ "id": "EUR", "nom": "Euros" }, { "id": "FRF", "nom": "Francs" }, { "id": "XPF", "nom": "Francs Pacifique" }], "value": "EUR" }] }, { "id": "publication", "nom": "Références Légifrance", "elements": [{ "id": "jorf", "nom": "Numéro JORF", "description": "", "optionnel": false, "type": "text", "value": "JORFTEXT000037382008" }, { "id": "nor", "nom": "Numéro NOR", "description": "", "optionnel": true, "type": "text", "value": "ECOL1816264A" }] }], "entreprises_documents": [], "etape_documents": [], "avis_documents": [] }, { "etape_type_id": "dex", "fondamentale": { "date_debut": null, "date_fin": null, "duree": 36, "substances": ["tant", "niob", "lith", "bery", "etai", "wolf", "tita", "auru"], "titulaireIds": ["fr-790856850"], "amodiataireIds": null, "perimetre": { "geojson4326_perimetre": { "type": "Feature", "properties": {}, "geometry": { "type": "MultiPolygon", "coordinates": [[[[-53.699125239725, 5.29137675727333], [-53.735659753333, 5.24333287037071], [-53.6847736578144, 5.232646225266], [-53.664223513371, 5.23752353831223], [-53.6554344678131, 5.25034817283726], [-53.6402449164671, 5.25044876137938], [-53.6331053301638, 5.26979119871868], [-53.6650166925488, 5.27353207619541], [-53.699125239725, 5.29137675727333]]]] } }, "geojson4326_points": { "type": "FeatureCollection", "properties": {}, "features": [{ "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.699125239725, 5.29137675727333] }, "properties": { "nom": "A", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6650166925488, 5.27353207619541] }, "properties": { "nom": "B", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6331053301638, 5.26979119871868] }, "properties": { "nom": "C", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6402449164671, 5.25044876137938] }, "properties": { "nom": "D", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6554344678131, 5.25034817283726] }, "properties": { "nom": "E", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.664223513371, 5.23752353831223] }, "properties": { "nom": "F", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.6847736578144, 5.232646225266] }, "properties": { "nom": "G", "description": null } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [-53.735659753333, 5.24333287037071] }, "properties": { "nom": "H", "description": null } }] }, "geojson_origine_perimetre": { "type": "Feature", "properties": {}, "geometry": { "type": "MultiPolygon", "coordinates": [[[[200814, 585525], [204589, 583534], [208127, 583105], [207326, 580968], [205641, 580964], [204660, 579549], [202378, 579019], [196738, 580226], [200814, 585525]]]] } }, "geojson_origine_points": { "type": "FeatureCollection", "features": [{ "type": "Feature", "geometry": { "type": "Point", "coordinates": [200814, 585525] }, "properties": { "nom": "A" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [204589, 583534] }, "properties": { "nom": "B" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [208127, 583105] }, "properties": { "nom": "C" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [207326, 580968] }, "properties": { "nom": "D" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [205641, 580964] }, "properties": { "nom": "E" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [204660, 579549] }, "properties": { "nom": "F" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [202378, 579019] }, "properties": { "nom": "G" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [196738, 580226] }, "properties": { "nom": "H" } }] }, "geojson_origine_geo_systeme_id": "2972", "geojson4326_forages": null, "geojson_origine_forages": null, "surface": 48, "communes": [{ "id": "97306", "nom": "Mana" }], "secteurs_maritimes": [], "sdom_zones": ["2"], "forets": ["BSM"] } }, "etape_statut_id": "acc", "is_brouillon": false, "date": "2018-08-31", "id": "KJtV68vswF5ewUyF2jTuLGhS", "ordre": 8, "note": { "valeur": "", "is_avertissement": false }, "slug": "m-pr-basse-mana-2018-oct01-dex01", "sections_with_values": [{ "id": "prx", "nom": "Propriétés du permis exclusif de recherches", "elements": [{ "id": "engagement", "nom": "Engagement", "optionnel": true, "type": "number", "value": 150000 }, { "id": "engagementDeviseId", "nom": "Devise de l'engagement", "description": "", "optionnel": true, "type": "select", "options": [{ "id": "EUR", "nom": "Euros" }, { "id": "FRF", "nom": "Francs" }, { "id": "XPF", "nom": "Francs Pacifique" }], "value": "EUR" }] }, { "id": "publication", "nom": "Références Légifrance", "elements": [{ "id": "jorf", "nom": "Numéro JORF", "description": "", "optionnel": true, "type": "text", "value": "JORFTEXT000037382008" }, { "id": "nor", "nom": "Numéro NOR", "description": "", "optionnel": true, "type": "text", "value": "ECOL1816264A" }] }], "entreprises_documents": [], "etape_documents": [], "avis_documents": [] }, { "etape_type_id": "men", "etape_statut_id": "fai", "is_brouillon": false, "date": "2016-08-28", "id": "qVJM9zS6hWyIr3My5OoubQA3", "ordre": 2, "note": { "valeur": "", "is_avertissement": false }, "slug": "m-pr-basse-mana-2018-oct01-men01", "sections_with_values": [], "entreprises_documents": [], "etape_documents": [], "avis_documents": [] }, { "etape_type_id": "mfr", "demarche_id_en_concurrence": null, "demarches_consentement": [], "fondamentale": { "date_debut": null, "date_fin": null, "duree": 36, "substances": ["tant", "niob", "scoc"], "titulaireIds": null, "amodiataireIds": null, "perimetre": null }, "etape_statut_id": "fai", "is_brouillon": false, "date": "2016-06-19", "id": "abABihashClZP0lL3NUPELNV", "ordre": 1, "note": { "valeur": "", "is_avertissement": false }, "slug": "m-pr-basse-mana-2018-oct01-mfr01", "sections_with_values": [{ "id": "prx", "nom": "Propriétés du permis exclusif de recherches", "elements": [{ "id": "engagement", "nom": "Engagement", "optionnel": true, "type": "number", "value": null }, { "id": "engagementDeviseId", "nom": "Devise de l'engagement", "description": "", "optionnel": true, "type": "select", "options": [{ "id": "EUR", "nom": "Euros" }, { "id": "FRF", "nom": "Francs" }, { "id": "XPF", "nom": "Francs Pacifique" }], "value": null }] }], "entreprises_documents": [], "etape_documents": [], "avis_documents": [] }], "demarche_type_id": "oct", "demarche_statut_id": "acc", "demarche_date_debut": "2018-09-11", "demarche_date_fin": "2021-09-11", "ordre": 1 }, { "id": "mZAUVvPyznbzpj3e3grjFmlJ", "slug": "m-pr-basse-mana-2018-pr101", "description": null, "etapes": [{ "etape_type_id": "rpu", "fondamentale": { "date_debut": null, "date_fin": null, "duree": null, "substances": null, "titulaireIds": null, "amodiataireIds": null, "perimetre": null }, "etape_statut_id": "fai", "is_brouillon": false, "date": "2023-11-17", "id": "f76c17ab21ca966988390d92", "ordre": 11, "note": { "valeur": "", "is_avertissement": false }, "slug": "m-pr-basse-mana-2018-pr101-rpu01", "sections_with_values": [], "entreprises_documents": [], "etape_documents": [], "avis_documents": [] }, { "etape_type_id": "dpu", "fondamentale": { "date_debut": null, "date_fin": null, "duree": null, "substances": null, "titulaireIds": null, "amodiataireIds": null, "perimetre": null }, "etape_statut_id": "fai", "is_brouillon": false, "date": "2023-11-15", "id": "71f6497117b21325d53d8e56", "ordre": 10, "note": { "valeur": "", "is_avertissement": false }, "slug": "m-pr-basse-mana-2018-pr101-dpu01", "sections_with_values": [{ "id": "publication", "nom": "Références Légifrance", "elements": [{ "id": "jorf", "nom": "Numéro JORF", "description": "", "optionnel": false, "type": "text", "value": "Texte 3 sur 160" }] }], "entreprises_documents": [], "etape_documents": [{ "id": "2023-11-15-pub-4d420801", "type": "DESCRIPTION_OPTIONNELLE", "public_lecture": true, "entreprises_lecture": true, "etape_document_type_id": "pub", "description": "" }], "avis_documents": [] }, { "etape_type_id": "dex", "fondamentale": { "date_debut": null, "date_fin": null, "duree": 30, "substances": null, "titulaireIds": null, "amodiataireIds": null, "perimetre": null }, "etape_statut_id": "acc", "is_brouillon": false, "date": "2023-11-07", "id": "590f6dd2f808eeadf51b820e", "ordre": 9, "note": { "valeur": "", "is_avertissement": false }, "slug": "m-pr-basse-mana-2018-pr101-dex01", "sections_with_values": [{ "id": "publication", "nom": "Références Légifrance", "elements": [{ "id": "jorf", "nom": "Numéro JORF", "description": "", "optionnel": true, "type": "text", "value": null }, { "id": "nor", "nom": "Numéro NOR", "description": "", "optionnel": true, "type": "text", "value": null }] }], "entreprises_documents": [], "etape_documents": [], "avis_documents": [] }, { "etape_type_id": "ppu", "etape_statut_id": "ter", "is_brouillon": false, "date": "2023-03-27", "id": "M1mK0vhAHH5CTaUwq4cJzK49", "ordre": 5, "note": { "valeur": "", "is_avertissement": false }, "slug": "m-pr-basse-mana-2018-pr101-ppu01", "sections_with_values": [{ "id": "opdp", "elements": [{ "id": "lien", "nom": "Lien public externe", "description": "", "optionnel": true, "type": "url", "value": null }, {"id": "duree", "nom": "Durée en jours de la consultation du public", "description": "", "optionnel": false, "type": "number", "value": 15}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"men","etape_statut_id":"fai","is_brouillon":false,"date":"2021-04-30","id":"wFb34sxGyHoRNOByPffQZyAF","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-basse-mana-2018-pr101-men01","sections_with_values":[],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"mfr", "demarche_id_en_concurrence": null, "demarches_consentement": [],"fondamentale":{"date_debut":null,"date_fin":null,"duree":60,"substances":["tant","niob","lith","bery","etai","wolf","tita","auru"],"titulaireIds":["fr-790856850"],"amodiataireIds":null,"perimetre":{"geojson4326_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[-53.699150462397206,5.291394409468797],[-53.73568497160258,5.2433505257409125],[-53.684798879087204,5.232663883719148],[-53.664248736219285,5.2375411971227654],[-53.65545969176547,5.250365830767107],[-53.64027014144058,5.250466419912988],[-53.633130556393525,5.269808855679936],[-53.66511918689031,5.291623119512839],[-53.699150462397206,5.291394409468797]]]]}},"geojson4326_points":{"type":"FeatureCollection","properties":{},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.699150462397206,5.291394409468797]},"properties":{"nom":"A","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.66511918689031,5.291623119512839]},"properties":{"nom":"B","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.633130556393525,5.269808855679936]},"properties":{"nom":"C","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.64027014144058,5.250466419912988]},"properties":{"nom":"D","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.65545969176547,5.250365830767107]},"properties":{"nom":"E","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.664248736219285,5.2375411971227654]},"properties":{"nom":"F","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.684798879087204,5.232663883719148]},"properties":{"nom":"G","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.73568497160258,5.2433505257409125]},"properties":{"nom":"H","description":null}}]},"geojson_origine_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[200814,585525],[204589,585534],[208127,583105],[207326,580968],[205641,580964],[204660,579549],[202378,579019],[196738,580226],[200814,585525]]]]}},"geojson_origine_points":{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[200814,585525]},"properties":{"nom":"A"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[204589,585534]},"properties":{"nom":"B"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[208127,583105]},"properties":{"nom":"C"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[207326,580968]},"properties":{"nom":"D"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[205641,580964]},"properties":{"nom":"E"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[204660,579549]},"properties":{"nom":"F"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[202378,579019]},"properties":{"nom":"G"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[196738,580226]},"properties":{"nom":"H"}}]},"geojson_origine_geo_systeme_id":"2972","geojson4326_forages":null,"geojson_origine_forages":null,"surface":48.06,"communes":[{"id":"97306","nom":"Mana"}],"secteurs_maritimes":[],"sdom_zones":["2"],"forets":["BSM"]}},"etape_statut_id":"fai","is_brouillon":false,"date":"2021-04-30","id":"NKW0jIKc5cPBIp2dwu2VceCG","ordre":1,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-basse-mana-2018-pr101-mfr01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":null},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"pr1","demarche_statut_id":"acc","demarche_date_debut":"2021-09-11","demarche_date_fin":"2024-03-11","ordre":2},{"id":"5df48d3536a38dd1dab542d7","slug":"m-pr-basse-mana-2018-pr201","description":"","etapes":[{"etape_type_id":"men","etape_statut_id":"fai","is_brouillon":false,"date":"2023-10-30","id":"37a1752da216067fc73328f9","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-basse-mana-2018-pr201-men01","sections_with_values":[],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"mfr", "demarche_id_en_concurrence": null, "demarches_consentement": [],"fondamentale":{"date_debut":null,"date_fin":null,"duree":60,"substances":["tant","niob","lith","bery","etai","wolf","tita","auru"],"titulaireIds":null,"amodiataireIds":null,"perimetre":{"geojson4326_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[-53.695977302723314,5.258026897118486],[-53.69166175320614,5.243894120712839],[-53.691207934852734,5.238962048893827],[-53.66947244758239,5.236434510036549],[-53.66426676493007,5.2375411203489115],[-53.655468706369525,5.250365792413383],[-53.64027010339901,5.25045738302719],[-53.63422022259896,5.267391338838475],[-53.64933956522329,5.274005464773927],[-53.66943759690406,5.2748050575845875],[-53.66988205803166,5.281761503749559],[-53.671594626284566,5.281690874443703],[-53.67432345044184,5.276844434310086],[-53.67742349010169,5.274481516415551],[-53.68523182828244,5.270616251350751],[-53.695977302723314,5.258026897118486]]]]}},"geojson4326_points":{"type":"FeatureCollection","properties":{},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.695977302723314,5.258026897118486]},"properties":{"nom":"A","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.68523182828244,5.270616251350751]},"properties":{"nom":"B","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.67742349010169,5.274481516415551]},"properties":{"nom":"C","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.67432345044184,5.276844434310086]},"properties":{"nom":"D","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.671594626284566,5.281690874443703]},"properties":{"nom":"E","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.66988205803166,5.281761503749559]},"properties":{"nom":"F","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.66943759690406,5.2748050575845875]},"properties":{"nom":"G","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.64933956522329,5.274005464773927]},"properties":{"nom":"H","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.63422022259896,5.267391338838475]},"properties":{"nom":"I","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.64027010339901,5.25045738302719]},"properties":{"nom":"J","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.655468706369525,5.250365792413383]},"properties":{"nom":"K","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.66426676493007,5.2375411203489115]},"properties":{"nom":"L","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.66947244758239,5.236434510036549]},"properties":{"nom":"M","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.691207934852734,5.238962048893827]},"properties":{"nom":"N","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-53.69166175320614,5.243894120712839]},"properties":{"nom":"O","description":null}}]},"geojson_origine_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[201150,581831],[202348,583219],[203216,583643],[203561,583903],[203866,584438],[204056,584445],[204102,583675],[206331,583577],[208005,582838],[207326,580967],[205640,580964],[204658,579549],[204080,579429],[201670,579719],[201622,580265],[201150,581831]]]]}},"geojson_origine_points":{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[201150,581831]},"properties":{"nom":"A"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[202348,583219]},"properties":{"nom":"B"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[203216,583643]},"properties":{"nom":"C"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[203561,583903]},"properties":{"nom":"D"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[203866,584438]},"properties":{"nom":"E"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[204056,584445]},"properties":{"nom":"F"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[204102,583675]},"properties":{"nom":"G"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[206331,583577]},"properties":{"nom":"H"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[208005,582838]},"properties":{"nom":"I"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[207326,580967]},"properties":{"nom":"J"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[205640,580964]},"properties":{"nom":"K"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[204658,579549]},"properties":{"nom":"L"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[204080,579429]},"properties":{"nom":"M"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[201670,579719]},"properties":{"nom":"N"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[201622,580265]},"properties":{"nom":"O"}}]},"geojson_origine_geo_systeme_id":"2972","geojson4326_forages":null,"geojson_origine_forages":null,"surface":20.69,"communes":[{"id":"97306","nom":"Mana"}],"secteurs_maritimes":[],"sdom_zones":["2"],"forets":["BSM"]}},"etape_statut_id":"fai","is_brouillon":false,"date":"2023-10-30","id":"47a22a6ca44891d40e2f4149","ordre":1,"note":{"valeur":"","is_avertissement":false},"slug":"m-pr-basse-mana-2018-pr201-mfr01","sections_with_values":[{"id":"prx","nom":"Propriétés du permis exclusif de recherches","elements":[{"id":"engagement","nom":"Engagement","optionnel":true,"type":"number","value":null},{"id":"engagementDeviseId","nom":"Devise de l'engagement","description":"","optionnel":true,"type":"select","options":[{"id":"EUR","nom":"Euros"},{"id":"FRF","nom":"Francs"},{"id":"XPF","nom":"Francs Pacifique"}],"value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"pr2","demarche_statut_id":"dep","demarche_date_debut":"2024-03-11","demarche_date_fin":null,"ordre":3}],"nb_activites_to_do":null}) return Promise.resolve(basseManaData) }, @@ -731,7 +731,7 @@ const lenoncourtApiClient: PropsApiClient = { getTitreAction(titreIdOrSlug) // prettier-ignore - const lenoncourtData = titreGetValidator.parse({"id":"s7RvqvCAgKs4DxkQBYV93cVx","nom":"Lenoncourt","slug":"m-cx-lenoncourt-1968","titre_type_id":"cxm","titre_statut_id":"val","titre_doublon":null,"references":[{"nom":"2013-0275-MI","referenceTypeId":"deb"},{"nom":"54TM0153","referenceTypeId":"rnt"}],"titre_last_modified_date":"2024-03-21","demarches":[{"id":"ozYnUjy40eru81jUnXz5snv2","slug":"m-cx-lenoncourt-1968-oct01","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["nacl"],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"1968-01-24","id":"SG2zAN9QaKBN1hZKqKEgQGpI","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-oct01-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"1968-01-24-dec-89a94bb2","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"dec","description":"Décret du 13 janvier 1968 instituant la concession de mines de sels de sodium de Lenoncourt (Meurthe-et-Moselle) au profit de la société Les Soudières réunies - La Madeleine-Varangéville"}],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"1968-01-13","id":"LM2Zk3PwAjrduc4EqmucOjeB","ordre":1,"note":{"valeur":"Décret du 13 janvier 1968 instituant la concession de mines de sels de sodium de Lenoncourt (Meurthe-et-Moselle) au profit de la société Les Soudières réunies - La Madeleine-Varangéville","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-oct01-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"oct","demarche_statut_id":"acc","demarche_date_debut":"1968-01-24","demarche_date_fin":"2024-03-01","ordre":1},{"id":"wM0cpipWSef9lDAHDurJxxhk","slug":"m-cx-lenoncourt-1968-mut01","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["selg","selh"],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"1970-11-19","id":"XScxzwDKFxmYtDnkJ7X7qZBi","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut01-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"1970-11-19-dec-8a77b142","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"dec","description":"Décret du 16 novembre 1970 autorisant la mutation de propriété de cinq concessions de mines de sel gemme et de sources salées au profit de la société Produits chimiques Pechlney-Saint-Gobaln."}],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":["fr-606320471"],"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"1970-11-16","id":"ejAqTpzBj82jgF0ShiwMRQmW","ordre":1,"note":{"valeur":"Décret du 16 novembre 1970 autorisant la mutation de propriété de cinq concessions de mines de sel gemme et de sources salées au profit de la société Produits chimiques Pechlney-Saint-Gobaln.","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut01-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"mut","demarche_statut_id":"acc","demarche_date_debut":null,"demarche_date_fin":null,"ordre":2},{"id":"1UC2b0ORsm2ezCh6whHzbOKR","slug":"m-cx-lenoncourt-1968-mut02","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["selg","selh"],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"1975-11-27","id":"TjimKkEETzF0yGBG2m085on9","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut02-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"1975-11-27-dec-b50a06f5","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"dec","description":"Décret du 24 novembre 1975 autorisant la mutation de cinq concessions de mines de sel gemme et de sources salées au profit de la Compagnie industrielle et minière"}],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":["fr-712025048"],"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"1975-11-24","id":"aYO0zwBFBOZP7VN11JaJDhzI","ordre":1,"note":{"valeur":"Décret du 24 novembre 1975 autorisant la mutation de cinq concessions de mines de sel gemme et de sources salées au profit de la Compagnie industrielle et minière","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut02-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"mut","demarche_statut_id":"acc","demarche_date_debut":null,"demarche_date_fin":null,"ordre":3},{"id":"H5eANAZPKhY9eFQtCyLYjCvp","slug":"m-cx-lenoncourt-1968-exp01","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["nacl"],"titulaireIds":["fr-712025048"],"amodiataireIds":null,"perimetre":{"geojson4326_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[6.275644095814427,48.6854960696669],[6.255874124806144,48.675237870291575],[6.295319143383101,48.66801114312286],[6.316241924966296,48.676189123934925],[6.315656943097024,48.680413137182065],[6.307671761547864,48.69027442550079],[6.302487495007789,48.68919858322589],[6.296317613859298,48.68917495187758],[6.290997693817669,48.68780534512822],[6.285653764289864,48.68913324659737],[6.281744418990354,48.68911774206666],[6.275644095814427,48.6854960696669]]]]}},"geojson4326_points":{"type":"FeatureCollection","properties":{},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[6.275644095814427,48.6854960696669]},"properties":{"nom":"A","description":"Point situé sur la ligne joignant les clochers de Saulxures-lès-Nancy et de Buissoncourt, à son intersection avec la limite des communes de Saulxures-lès-Nancy et de Lenoncourt, soit à environ 2040 mètres à l'Est-Sud-Est du clocher de Saulxures-lès-Nancy"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.281744418990354,48.68911774206666]},"properties":{"nom":"B1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.285653764289864,48.68913324659737]},"properties":{"nom":"C1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.290997693817669,48.68780534512822]},"properties":{"nom":"D1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.296317613859298,48.68917495187758]},"properties":{"nom":"E1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.302487495007789,48.68919858322589]},"properties":{"nom":"F1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.307671761547864,48.69027442550079]},"properties":{"nom":"G1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.315656943097024,48.680413137182065]},"properties":{"nom":"B","description":"Point situé sur la ligne joignant les clochers de Saulxures-lès-Nancy et de Buissoncourt, à son intersection avec la limite Ouest de la concession de Cercueil-Buissoncourt, soit à environ 2 150 mètres au Nord-Nord-Ouest du clocher de Buissoncourt"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.316241924966296,48.676189123934925]},"properties":{"nom":"C","description":"Borne commune aux concessions d'Art-sur-Meurthe et de Cercueil-Buissoncourt"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.295319143383101,48.66801114312286]},"properties":{"nom":"D","description":"Sommet A de la concession d'Art-sur-Meurthe:"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.255874124806144,48.675237870291575]},"properties":{"nom":"E","description":"Sommet M de la concession d'Art-sur•Meurthe:"}}]},"geojson_origine_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[889907.42,1117010.26],[890334.9,1117435.93],[890622.24,1117452.72],[891022.89,1117325.88],[891406.04,1117498.53],[891859.53,1117525.03],[892234.39,1117664.59],[892879.34,1116600.52],[892947.15,1116133.73],[891456.2,1115144.46],[888513.03,1115795.21],[889907.42,1117010.26]]]]}},"geojson_origine_points":{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[889907.42,1117010.26]},"properties":{"nom":"A","description":"Point situé sur la ligne joignant les clochers de Saulxures-lès-Nancy et de Buissoncourt, à son intersection avec la limite des communes de Saulxures-lès-Nancy et de Lenoncourt, soit à environ 2040 mètres à l’Est-Sud-Est du clocher de Saulxures-lès-Nancy"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[890334.9,1117435.93]},"properties":{"nom":"B1"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[890622.24,1117452.72]},"properties":{"nom":"C1"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[891022.89,1117325.88]},"properties":{"nom":"D1"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[891406.04,1117498.53]},"properties":{"nom":"E1"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[891859.53,1117525.03]},"properties":{"nom":"F1"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[892234.39,1117664.59]},"properties":{"nom":"G1"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[892879.34,1116600.52]},"properties":{"nom":"B","description":"Point situé sur la ligne joignant les clochers de Saulxures-lès-Nancy et de Buissoncourt, à son intersection avec la limite Ouest de la concession de Cercueil-Buissoncourt, soit à environ 2 150 mètres au Nord-Nord-Ouest du clocher de Buissoncourt"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[892947.15,1116133.73]},"properties":{"nom":"C","description":"Borne commune aux concessions d’Art-sur-Meurthe et de Cercueil-Buissoncourt"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[891456.2,1115144.46]},"properties":{"nom":"D","description":"Sommet A de la concession d’Art-sur-Meurthe:"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[888513.03,1115795.21]},"properties":{"nom":"E","description":"Sommet M de la concession d’Art-sur•Meurthe:"}}]},"geojson_origine_geo_systeme_id":"27571","geojson4326_forages":null,"geojson_origine_forages":null,"surface":6.75,"communes":[{"id":"54495","nom":"Saulxures-lès-Nancy"},{"id":"54311","nom":"Lenoncourt"},{"id":"54110","nom":"Cerville"},{"id":"54025","nom":"Art-sur-Meurthe"}],"secteurs_maritimes":[],"sdom_zones":[],"forets":[]}},"etape_statut_id":"fai","is_brouillon":false,"date":"1981-09-13","id":"C6UHWZDSFnLbwuaeksXG1SEj","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-exp01-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"N"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"1981-09-13-dec-8bf8fa4c","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"dec","description":"Décret du 9 septembre 1981 portant extension de superficie de la concession des mines de sels de sodium de Lenoncourt (Meurthe-et-Moselle) et modifiant les conditions auxquelles est soumise ladite concession"}],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"1981-09-09","id":"xHxKuYk5goClAaZr1hxGaCyr","ordre":1,"note":{"valeur":"Décret du 9 septembre 1981 portant extension de superficie de la concession des mines de sels de sodium de Lenoncourt (Meurthe-et-Moselle) et modifiant les conditions auxquelles est soumise ladite concession","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-exp01-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"exp","demarche_statut_id":"acc","demarche_date_debut":null,"demarche_date_fin":null,"ordre":4},{"id":"W9IX7VanFA5iYxYAGulcA0CY","slug":"m-cx-lenoncourt-1968-mut03","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["nacl"],"titulaireIds":["fr-442993283"],"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"2000-10-06","id":"wuYTEAQ5UUAUZxiowQIthgkg","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut03-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000000208330"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"ECOI0000456A"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"2000-09-26","id":"f2iSnn7XPrOXDIrbmYFKUiz1","ordre":1,"note":{"valeur":"Arrêté du 26 septembre 2000 autorisant la mutation de concessions de mines","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut03-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"mut","demarche_statut_id":"acc","demarche_date_debut":null,"demarche_date_fin":null,"ordre":6},{"id":"md9yLbhZSOqdcOANAAyUPTur","slug":"m-cx-lenoncourt-1968-mut04","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["nacl"],"titulaireIds":["fr-642014526"],"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"2003-01-08","id":"yuMPprDNtN6mZzdmlVTDd25I","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut04-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000000228627"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"INDI0200856A"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"2002-12-24","id":"jZRW7aZo5DmTABnQCe35wVrh","ordre":1,"note":{"valeur":"Arrêté du 24 décembre 2002 autorisant la mutation de concessions de mines","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut04-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"mut","demarche_statut_id":"acc","demarche_date_debut":null,"demarche_date_fin":null,"ordre":7},{"id":"3W0rdHS1VqDSIQjZ1mLD8b9L","slug":"m-cx-lenoncourt-1968-mut05","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["nacl"],"titulaireIds":["fr-442993283"],"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"2004-02-28","id":"isgwwZGJwv7UDuJvtxAaj3T4","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut05-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000000434866"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"INDI0402498A"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"2004-02-13","id":"Full4Vnptm6czWaJ4b6kZR6W","ordre":1,"note":{"valeur":"Arrêté du 13 février 2004 autorisant la mutation d’une concession de mines de sels de sodium","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut05-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"mut","demarche_statut_id":"acc","demarche_date_debut":null,"demarche_date_fin":null,"ordre":8},{"id":"fA9NJsMZ78XyG402LUdm2Szi","slug":"m-cx-lenoncourt-1968-pro01","description":"prolongation et extension de périmètre","etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":null,"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"2024-03-01","id":"a0af6a2e56cd046cd72c71cf","ordre":16,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-pro01-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000049219226"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"ECOL2320431D"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":null,"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"2024-02-29","id":"aa23dc021366330e04383eba","ordre":15,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-pro01-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"2024-02-29-dec-12df6369","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"dec","description":""},{"id":"2024-02-29-dec-4bb7fd91","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"dec","description":""}],"avis_documents":[]},{"etape_type_id":"adc","etape_statut_id":"fai","is_brouillon":false,"date":"2021-06-01","id":"ryW6mbg2cC906CimQRgdVhvd","ordre":7,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-pro01-adc01","sections_with_values":[],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"epu","etape_statut_id":"ter","is_brouillon":false,"date":"2021-04-20","id":"d1PRxUd0F9JHQSziUQ3skOem","ordre":6,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-pro01-epu01","sections_with_values":[{"id":"epu","elements":[{"id":"lien","nom":"Lien public externe","description":"","optionnel":true,"type":"url","value":null},{"id":"duree","nom":"Durée en jours de l'enquête publique","description":"","optionnel":false,"type":"number","value":43}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"mcr","etape_statut_id":"fav","is_brouillon":false,"date":"2021-01-27","id":"pHf3m1Hygp8kz8d7G0j2TKgZ","ordre":4,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-pro01-mcr01","sections_with_values":[],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"men","etape_statut_id":"fai","is_brouillon":false,"date":"2020-08-04","id":"mQnOvtSGpc1T83bSvOOorVOa","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-pro01-men01","sections_with_values":[],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"mfr", "demarche_id_en_concurrence": null, "demarches_consentement": [],"fondamentale":{"date_debut":null,"date_fin":null,"duree":300,"substances":["nacl"],"titulaireIds":["fr-442993283"],"amodiataireIds":null,"perimetre":{"geojson4326_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[6.255869021711159,48.675202067410254],[6.263459497281365,48.6611397799328],[6.274477936823362,48.661530617274785],[6.29531036181682,48.66798716858568],[6.3162302722649795,48.67616624512283],[6.31565519531486,48.68038643555574],[6.307660371971501,48.69025022534333],[6.302480013569365,48.68917854238857],[6.2963188041374485,48.68915103738882],[6.290983811108587,48.68777705995633],[6.285642745098623,48.68911271820202],[6.281739260684181,48.68909422269382],[6.275638319504659,48.68547207905551],[6.255869021711159,48.675202067410254]]]]}},"geojson4326_points":{"type":"FeatureCollection","properties":{},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[6.255869021711159,48.675202067410254]},"properties":{"nom":"A","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.275638319504659,48.68547207905551]},"properties":{"nom":"B","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.281739260684181,48.68909422269382]},"properties":{"nom":"C","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.285642745098623,48.68911271820202]},"properties":{"nom":"D","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.290983811108587,48.68777705995633]},"properties":{"nom":"E","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2963188041374485,48.68915103738882]},"properties":{"nom":"F","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.302480013569365,48.68917854238857]},"properties":{"nom":"G","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.307660371971501,48.69025022534333]},"properties":{"nom":"H","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.31565519531486,48.68038643555574]},"properties":{"nom":"I","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3162302722649795,48.67616624512283]},"properties":{"nom":"J","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.29531036181682,48.66798716858568]},"properties":{"nom":"K","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.274477936823362,48.661530617274785]},"properties":{"nom":"L","description":"Nouveau sommet « d’extension » défini par NOVACARB"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.263459497281365,48.6611397799328]},"properties":{"nom":"M","description":"Nouveau sommet « d’extension » défini par NOVACARB"}}]},"geojson_origine_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[939659,6846613],[941066,6847814],[941498,6848235],[941785,6848249],[942184,6848117],[942570,6848286],[943023,6848308],[943399,6848443],[944033,6847372],[944095,6846905],[942594,6845932],[941091,6845151],[940282,6845074],[939659,6846613]]]]}},"geojson_origine_points":{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[939659,6846613]},"properties":{"nom":"A"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[941066,6847814]},"properties":{"nom":"B"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[941498,6848235]},"properties":{"nom":"C"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[941785,6848249]},"properties":{"nom":"D"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[942184,6848117]},"properties":{"nom":"E"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[942570,6848286]},"properties":{"nom":"F"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[943023,6848308]},"properties":{"nom":"G"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[943399,6848443]},"properties":{"nom":"H"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[944033,6847372]},"properties":{"nom":"I"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[944095,6846905]},"properties":{"nom":"J"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[942594,6845932]},"properties":{"nom":"K"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[941091,6845151]},"properties":{"nom":"L","description":"Nouveau sommet « d’extension » défini par NOVACARB"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[940282,6845074]},"properties":{"nom":"M","description":"Nouveau sommet « d’extension » défini par NOVACARB"}}]},"geojson_origine_geo_systeme_id":"2154","geojson4326_forages":null,"geojson_origine_forages":null,"surface":9.05,"communes":[{"id":"54495","nom":"Saulxures-lès-Nancy"},{"id":"54311","nom":"Lenoncourt"},{"id":"54110","nom":"Cerville"},{"id":"54025","nom":"Art-sur-Meurthe"}],"secteurs_maritimes":[],"sdom_zones":[],"forets":[]}},"etape_statut_id":"fai","is_brouillon":false,"date":"2020-07-06","id":"mh70cpBA8jOZWCEDJKupM4Rs","ordre":1,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-pro01-mfr01","sections_with_values":[],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"pro","demarche_statut_id":"acc","demarche_date_debut":"2024-03-01","demarche_date_fin":"2049-03-01","ordre":11},{"id":"b7586ad241a658ae1eb42b08","slug":"m-cx-lenoncourt-1968-exp02","description":"","etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":null,"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"2024-03-01","id":"e48a19b86d090feadc67a893","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-exp02-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000049219226"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"ECOL2320431D"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["nacl"],"titulaireIds":["fr-442993283"],"amodiataireIds":null,"perimetre":{"geojson4326_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[6.2559,48.6752],[6.2756,48.6855],[6.2817,48.6891],[6.2856,48.6891],[6.291,48.6878],[6.2963,48.6892],[6.3025,48.6892],[6.3076,48.689],[6.3157,48.6804],[6.3162,48.6762],[6.2953,48.668],[6.2794,48.6631],[6.2614,48.6649],[6.2559,48.6752]]]]}},"geojson4326_points":{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2559,48.6752]},"properties":{"nom":"E","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2756,48.6855]},"properties":{"nom":"A","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2817,48.6891]},"properties":{"nom":"B1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2856,48.6891]},"properties":{"nom":"C1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.291,48.6878]},"properties":{"nom":"D1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2963,48.6892]},"properties":{"nom":"E1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3025,48.6892]},"properties":{"nom":"F1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3076,48.689]},"properties":{"nom":"G1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3157,48.6804]},"properties":{"nom":"B","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3162,48.6762]},"properties":{"nom":"C","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2953,48.668]},"properties":{"nom":"D","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2794,48.6631]},"properties":{"nom":"Da","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2614,48.6649]},"properties":{"nom":"Db","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2559,48.6752]},"properties":{"nom":"E","description":null}}]},"geojson_origine_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[6.2559,48.6752],[6.2756,48.6855],[6.2817,48.6891],[6.2856,48.6891],[6.291,48.6878],[6.2963,48.6892],[6.3025,48.6892],[6.3076,48.689],[6.3157,48.6804],[6.3162,48.6762],[6.2953,48.668],[6.2794,48.6631],[6.2614,48.6649],[6.2559,48.6752]]]]}},"geojson_origine_points":{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2559,48.6752]},"properties":{"nom":"E","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2756,48.6855]},"properties":{"nom":"A","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2817,48.6891]},"properties":{"nom":"B1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2856,48.6891]},"properties":{"nom":"C1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.291,48.6878]},"properties":{"nom":"D1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2963,48.6892]},"properties":{"nom":"E1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3025,48.6892]},"properties":{"nom":"F1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3076,48.689]},"properties":{"nom":"G1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3157,48.6804]},"properties":{"nom":"B","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3162,48.6762]},"properties":{"nom":"C","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2953,48.668]},"properties":{"nom":"D","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2794,48.6631]},"properties":{"nom":"Da","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2614,48.6649]},"properties":{"nom":"Db","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2559,48.6752]},"properties":{"nom":"E","description":null}}]},"geojson_origine_geo_systeme_id":"4326","geojson4326_forages":null,"geojson_origine_forages":null,"surface":8.65,"communes":[{"id":"54495","nom":"Saulxures-lès-Nancy"},{"id":"54311","nom":"Lenoncourt"},{"id":"54110","nom":"Cerville"},{"id":"54025","nom":"Art-sur-Meurthe"}],"secteurs_maritimes":[],"sdom_zones":[],"forets":[]}},"etape_statut_id":"acc","is_brouillon":false,"date":"2024-02-29","id":"c15f4ceaa62a6298a2f8e117","ordre":1,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-exp02-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"2024-02-29-dec-d9f1e868","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"dec","description":""},{"id":"2024-02-29-dec-32312304","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"dec","description":""}],"avis_documents":[]}],"demarche_type_id":"exp","demarche_statut_id":"acc","demarche_date_debut":null,"demarche_date_fin":null,"ordre":12}],"nb_activites_to_do":null}) + const lenoncourtData = titreGetValidator.parse({"id":"s7RvqvCAgKs4DxkQBYV93cVx","nom":"Lenoncourt","slug":"m-cx-lenoncourt-1968","titre_type_id":"cxm","titre_statut_id":"val","titre_doublon":null,"references":[{"nom":"2013-0275-MI","referenceTypeId":"deb"},{"nom":"54TM0153","referenceTypeId":"rnt"}],"titre_last_modified_date":"2024-03-21","demarches":[{"id":"ozYnUjy40eru81jUnXz5snv2","slug":"m-cx-lenoncourt-1968-oct01","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["nacl"],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"1968-01-24","id":"SG2zAN9QaKBN1hZKqKEgQGpI","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-oct01-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"1968-01-24-dec-89a94bb2","type":"DESCRIPTION_OPTIONNELLE","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"dec","description":"Décret du 13 janvier 1968 instituant la concession de mines de sels de sodium de Lenoncourt (Meurthe-et-Moselle) au profit de la société Les Soudières réunies - La Madeleine-Varangéville"}],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"1968-01-13","id":"LM2Zk3PwAjrduc4EqmucOjeB","ordre":1,"note":{"valeur":"Décret du 13 janvier 1968 instituant la concession de mines de sels de sodium de Lenoncourt (Meurthe-et-Moselle) au profit de la société Les Soudières réunies - La Madeleine-Varangéville","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-oct01-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"oct","demarche_statut_id":"acc","demarche_date_debut":"1968-01-24","demarche_date_fin":"2024-03-01","ordre":1},{"id":"wM0cpipWSef9lDAHDurJxxhk","slug":"m-cx-lenoncourt-1968-mut01","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["selg","selh"],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"1970-11-19","id":"XScxzwDKFxmYtDnkJ7X7qZBi","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut01-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"1970-11-19-dec-8a77b142","type":"DESCRIPTION_OPTIONNELLE","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"dec","description":"Décret du 16 novembre 1970 autorisant la mutation de propriété de cinq concessions de mines de sel gemme et de sources salées au profit de la société Produits chimiques Pechlney-Saint-Gobaln."}],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":["fr-606320471"],"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"1970-11-16","id":"ejAqTpzBj82jgF0ShiwMRQmW","ordre":1,"note":{"valeur":"Décret du 16 novembre 1970 autorisant la mutation de propriété de cinq concessions de mines de sel gemme et de sources salées au profit de la société Produits chimiques Pechlney-Saint-Gobaln.","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut01-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"mut","demarche_statut_id":"acc","demarche_date_debut":null,"demarche_date_fin":null,"ordre":2},{"id":"1UC2b0ORsm2ezCh6whHzbOKR","slug":"m-cx-lenoncourt-1968-mut02","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["selg","selh"],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"1975-11-27","id":"TjimKkEETzF0yGBG2m085on9","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut02-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"1975-11-27-dec-b50a06f5","type":"DESCRIPTION_OPTIONNELLE","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"dec","description":"Décret du 24 novembre 1975 autorisant la mutation de cinq concessions de mines de sel gemme et de sources salées au profit de la Compagnie industrielle et minière"}],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":["fr-712025048"],"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"1975-11-24","id":"aYO0zwBFBOZP7VN11JaJDhzI","ordre":1,"note":{"valeur":"Décret du 24 novembre 1975 autorisant la mutation de cinq concessions de mines de sel gemme et de sources salées au profit de la Compagnie industrielle et minière","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut02-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"mut","demarche_statut_id":"acc","demarche_date_debut":null,"demarche_date_fin":null,"ordre":3},{"id":"H5eANAZPKhY9eFQtCyLYjCvp","slug":"m-cx-lenoncourt-1968-exp01","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["nacl"],"titulaireIds":["fr-712025048"],"amodiataireIds":null,"perimetre":{"geojson4326_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[6.275644095814427,48.6854960696669],[6.255874124806144,48.675237870291575],[6.295319143383101,48.66801114312286],[6.316241924966296,48.676189123934925],[6.315656943097024,48.680413137182065],[6.307671761547864,48.69027442550079],[6.302487495007789,48.68919858322589],[6.296317613859298,48.68917495187758],[6.290997693817669,48.68780534512822],[6.285653764289864,48.68913324659737],[6.281744418990354,48.68911774206666],[6.275644095814427,48.6854960696669]]]]}},"geojson4326_points":{"type":"FeatureCollection","properties":{},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[6.275644095814427,48.6854960696669]},"properties":{"nom":"A","description":"Point situé sur la ligne joignant les clochers de Saulxures-lès-Nancy et de Buissoncourt, à son intersection avec la limite des communes de Saulxures-lès-Nancy et de Lenoncourt, soit à environ 2040 mètres à l'Est-Sud-Est du clocher de Saulxures-lès-Nancy"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.281744418990354,48.68911774206666]},"properties":{"nom":"B1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.285653764289864,48.68913324659737]},"properties":{"nom":"C1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.290997693817669,48.68780534512822]},"properties":{"nom":"D1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.296317613859298,48.68917495187758]},"properties":{"nom":"E1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.302487495007789,48.68919858322589]},"properties":{"nom":"F1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.307671761547864,48.69027442550079]},"properties":{"nom":"G1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.315656943097024,48.680413137182065]},"properties":{"nom":"B","description":"Point situé sur la ligne joignant les clochers de Saulxures-lès-Nancy et de Buissoncourt, à son intersection avec la limite Ouest de la concession de Cercueil-Buissoncourt, soit à environ 2 150 mètres au Nord-Nord-Ouest du clocher de Buissoncourt"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.316241924966296,48.676189123934925]},"properties":{"nom":"C","description":"Borne commune aux concessions d'Art-sur-Meurthe et de Cercueil-Buissoncourt"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.295319143383101,48.66801114312286]},"properties":{"nom":"D","description":"Sommet A de la concession d'Art-sur-Meurthe:"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.255874124806144,48.675237870291575]},"properties":{"nom":"E","description":"Sommet M de la concession d'Art-sur•Meurthe:"}}]},"geojson_origine_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[889907.42,1117010.26],[890334.9,1117435.93],[890622.24,1117452.72],[891022.89,1117325.88],[891406.04,1117498.53],[891859.53,1117525.03],[892234.39,1117664.59],[892879.34,1116600.52],[892947.15,1116133.73],[891456.2,1115144.46],[888513.03,1115795.21],[889907.42,1117010.26]]]]}},"geojson_origine_points":{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[889907.42,1117010.26]},"properties":{"nom":"A","description":"Point situé sur la ligne joignant les clochers de Saulxures-lès-Nancy et de Buissoncourt, à son intersection avec la limite des communes de Saulxures-lès-Nancy et de Lenoncourt, soit à environ 2040 mètres à l’Est-Sud-Est du clocher de Saulxures-lès-Nancy"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[890334.9,1117435.93]},"properties":{"nom":"B1"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[890622.24,1117452.72]},"properties":{"nom":"C1"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[891022.89,1117325.88]},"properties":{"nom":"D1"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[891406.04,1117498.53]},"properties":{"nom":"E1"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[891859.53,1117525.03]},"properties":{"nom":"F1"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[892234.39,1117664.59]},"properties":{"nom":"G1"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[892879.34,1116600.52]},"properties":{"nom":"B","description":"Point situé sur la ligne joignant les clochers de Saulxures-lès-Nancy et de Buissoncourt, à son intersection avec la limite Ouest de la concession de Cercueil-Buissoncourt, soit à environ 2 150 mètres au Nord-Nord-Ouest du clocher de Buissoncourt"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[892947.15,1116133.73]},"properties":{"nom":"C","description":"Borne commune aux concessions d’Art-sur-Meurthe et de Cercueil-Buissoncourt"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[891456.2,1115144.46]},"properties":{"nom":"D","description":"Sommet A de la concession d’Art-sur-Meurthe:"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[888513.03,1115795.21]},"properties":{"nom":"E","description":"Sommet M de la concession d’Art-sur•Meurthe:"}}]},"geojson_origine_geo_systeme_id":"27571","geojson4326_forages":null,"geojson_origine_forages":null,"surface":6.75,"communes":[{"id":"54495","nom":"Saulxures-lès-Nancy"},{"id":"54311","nom":"Lenoncourt"},{"id":"54110","nom":"Cerville"},{"id":"54025","nom":"Art-sur-Meurthe"}],"secteurs_maritimes":[],"sdom_zones":[],"forets":[]}},"etape_statut_id":"fai","is_brouillon":false,"date":"1981-09-13","id":"C6UHWZDSFnLbwuaeksXG1SEj","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-exp01-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"N"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"1981-09-13-dec-8bf8fa4c","type":"DESCRIPTION_OPTIONNELLE","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"dec","description":"Décret du 9 septembre 1981 portant extension de superficie de la concession des mines de sels de sodium de Lenoncourt (Meurthe-et-Moselle) et modifiant les conditions auxquelles est soumise ladite concession"}],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"1981-09-09","id":"xHxKuYk5goClAaZr1hxGaCyr","ordre":1,"note":{"valeur":"Décret du 9 septembre 1981 portant extension de superficie de la concession des mines de sels de sodium de Lenoncourt (Meurthe-et-Moselle) et modifiant les conditions auxquelles est soumise ladite concession","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-exp01-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"exp","demarche_statut_id":"acc","demarche_date_debut":null,"demarche_date_fin":null,"ordre":4},{"id":"W9IX7VanFA5iYxYAGulcA0CY","slug":"m-cx-lenoncourt-1968-mut03","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["nacl"],"titulaireIds":["fr-442993283"],"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"2000-10-06","id":"wuYTEAQ5UUAUZxiowQIthgkg","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut03-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000000208330"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"ECOI0000456A"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"2000-09-26","id":"f2iSnn7XPrOXDIrbmYFKUiz1","ordre":1,"note":{"valeur":"Arrêté du 26 septembre 2000 autorisant la mutation de concessions de mines","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut03-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"mut","demarche_statut_id":"acc","demarche_date_debut":null,"demarche_date_fin":null,"ordre":6},{"id":"md9yLbhZSOqdcOANAAyUPTur","slug":"m-cx-lenoncourt-1968-mut04","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["nacl"],"titulaireIds":["fr-642014526"],"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"2003-01-08","id":"yuMPprDNtN6mZzdmlVTDd25I","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut04-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000000228627"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"INDI0200856A"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"2002-12-24","id":"jZRW7aZo5DmTABnQCe35wVrh","ordre":1,"note":{"valeur":"Arrêté du 24 décembre 2002 autorisant la mutation de concessions de mines","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut04-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"mut","demarche_statut_id":"acc","demarche_date_debut":null,"demarche_date_fin":null,"ordre":7},{"id":"3W0rdHS1VqDSIQjZ1mLD8b9L","slug":"m-cx-lenoncourt-1968-mut05","description":null,"etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["nacl"],"titulaireIds":["fr-442993283"],"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"2004-02-28","id":"isgwwZGJwv7UDuJvtxAaj3T4","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut05-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000000434866"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"INDI0402498A"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":[],"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"2004-02-13","id":"Full4Vnptm6czWaJ4b6kZR6W","ordre":1,"note":{"valeur":"Arrêté du 13 février 2004 autorisant la mutation d’une concession de mines de sels de sodium","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-mut05-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"mut","demarche_statut_id":"acc","demarche_date_debut":null,"demarche_date_fin":null,"ordre":8},{"id":"fA9NJsMZ78XyG402LUdm2Szi","slug":"m-cx-lenoncourt-1968-pro01","description":"prolongation et extension de périmètre","etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":null,"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"2024-03-01","id":"a0af6a2e56cd046cd72c71cf","ordre":16,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-pro01-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000049219226"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"ECOL2320431D"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":null,"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"acc","is_brouillon":false,"date":"2024-02-29","id":"aa23dc021366330e04383eba","ordre":15,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-pro01-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"2024-02-29-dec-12df6369","type":"DESCRIPTION_OPTIONNELLE","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"dec","description":""},{"id":"2024-02-29-dec-4bb7fd91","type":"DESCRIPTION_OPTIONNELLE","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"dec","description":""}],"avis_documents":[]},{"etape_type_id":"adc","etape_statut_id":"fai","is_brouillon":false,"date":"2021-06-01","id":"ryW6mbg2cC906CimQRgdVhvd","ordre":7,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-pro01-adc01","sections_with_values":[],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"epu","etape_statut_id":"ter","is_brouillon":false,"date":"2021-04-20","id":"d1PRxUd0F9JHQSziUQ3skOem","ordre":6,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-pro01-epu01","sections_with_values":[{"id":"epu","elements":[{"id":"lien","nom":"Lien public externe","description":"","optionnel":true,"type":"url","value":null},{"id":"duree","nom":"Durée en jours de l'enquête publique","description":"","optionnel":false,"type":"number","value":43}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"mcr","etape_statut_id":"fav","is_brouillon":false,"date":"2021-01-27","id":"pHf3m1Hygp8kz8d7G0j2TKgZ","ordre":4,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-pro01-mcr01","sections_with_values":[],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"men","etape_statut_id":"fai","is_brouillon":false,"date":"2020-08-04","id":"mQnOvtSGpc1T83bSvOOorVOa","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-pro01-men01","sections_with_values":[],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"mfr", "demarche_id_en_concurrence": null, "demarches_consentement": [],"fondamentale":{"date_debut":null,"date_fin":null,"duree":300,"substances":["nacl"],"titulaireIds":["fr-442993283"],"amodiataireIds":null,"perimetre":{"geojson4326_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[6.255869021711159,48.675202067410254],[6.263459497281365,48.6611397799328],[6.274477936823362,48.661530617274785],[6.29531036181682,48.66798716858568],[6.3162302722649795,48.67616624512283],[6.31565519531486,48.68038643555574],[6.307660371971501,48.69025022534333],[6.302480013569365,48.68917854238857],[6.2963188041374485,48.68915103738882],[6.290983811108587,48.68777705995633],[6.285642745098623,48.68911271820202],[6.281739260684181,48.68909422269382],[6.275638319504659,48.68547207905551],[6.255869021711159,48.675202067410254]]]]}},"geojson4326_points":{"type":"FeatureCollection","properties":{},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[6.255869021711159,48.675202067410254]},"properties":{"nom":"A","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.275638319504659,48.68547207905551]},"properties":{"nom":"B","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.281739260684181,48.68909422269382]},"properties":{"nom":"C","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.285642745098623,48.68911271820202]},"properties":{"nom":"D","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.290983811108587,48.68777705995633]},"properties":{"nom":"E","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2963188041374485,48.68915103738882]},"properties":{"nom":"F","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.302480013569365,48.68917854238857]},"properties":{"nom":"G","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.307660371971501,48.69025022534333]},"properties":{"nom":"H","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.31565519531486,48.68038643555574]},"properties":{"nom":"I","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3162302722649795,48.67616624512283]},"properties":{"nom":"J","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.29531036181682,48.66798716858568]},"properties":{"nom":"K","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.274477936823362,48.661530617274785]},"properties":{"nom":"L","description":"Nouveau sommet « d’extension » défini par NOVACARB"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.263459497281365,48.6611397799328]},"properties":{"nom":"M","description":"Nouveau sommet « d’extension » défini par NOVACARB"}}]},"geojson_origine_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[939659,6846613],[941066,6847814],[941498,6848235],[941785,6848249],[942184,6848117],[942570,6848286],[943023,6848308],[943399,6848443],[944033,6847372],[944095,6846905],[942594,6845932],[941091,6845151],[940282,6845074],[939659,6846613]]]]}},"geojson_origine_points":{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[939659,6846613]},"properties":{"nom":"A"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[941066,6847814]},"properties":{"nom":"B"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[941498,6848235]},"properties":{"nom":"C"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[941785,6848249]},"properties":{"nom":"D"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[942184,6848117]},"properties":{"nom":"E"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[942570,6848286]},"properties":{"nom":"F"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[943023,6848308]},"properties":{"nom":"G"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[943399,6848443]},"properties":{"nom":"H"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[944033,6847372]},"properties":{"nom":"I"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[944095,6846905]},"properties":{"nom":"J"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[942594,6845932]},"properties":{"nom":"K"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[941091,6845151]},"properties":{"nom":"L","description":"Nouveau sommet « d’extension » défini par NOVACARB"}},{"type":"Feature","geometry":{"type":"Point","coordinates":[940282,6845074]},"properties":{"nom":"M","description":"Nouveau sommet « d’extension » défini par NOVACARB"}}]},"geojson_origine_geo_systeme_id":"2154","geojson4326_forages":null,"geojson_origine_forages":null,"surface":9.05,"communes":[{"id":"54495","nom":"Saulxures-lès-Nancy"},{"id":"54311","nom":"Lenoncourt"},{"id":"54110","nom":"Cerville"},{"id":"54025","nom":"Art-sur-Meurthe"}],"secteurs_maritimes":[],"sdom_zones":[],"forets":[]}},"etape_statut_id":"fai","is_brouillon":false,"date":"2020-07-06","id":"mh70cpBA8jOZWCEDJKupM4Rs","ordre":1,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-pro01-mfr01","sections_with_values":[],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]}],"demarche_type_id":"pro","demarche_statut_id":"acc","demarche_date_debut":"2024-03-01","demarche_date_fin":"2049-03-01","ordre":11},{"id":"b7586ad241a658ae1eb42b08","slug":"m-cx-lenoncourt-1968-exp02","description":"","etapes":[{"etape_type_id":"dpu","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":null,"titulaireIds":null,"amodiataireIds":null,"perimetre":null},"etape_statut_id":"fai","is_brouillon":false,"date":"2024-03-01","id":"e48a19b86d090feadc67a893","ordre":2,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-exp02-dpu01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":false,"type":"text","value":"JORFTEXT000049219226"},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":"ECOL2320431D"}]}],"entreprises_documents":[],"etape_documents":[],"avis_documents":[]},{"etape_type_id":"dex","fondamentale":{"date_debut":null,"date_fin":null,"duree":null,"substances":["nacl"],"titulaireIds":["fr-442993283"],"amodiataireIds":null,"perimetre":{"geojson4326_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[6.2559,48.6752],[6.2756,48.6855],[6.2817,48.6891],[6.2856,48.6891],[6.291,48.6878],[6.2963,48.6892],[6.3025,48.6892],[6.3076,48.689],[6.3157,48.6804],[6.3162,48.6762],[6.2953,48.668],[6.2794,48.6631],[6.2614,48.6649],[6.2559,48.6752]]]]}},"geojson4326_points":{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2559,48.6752]},"properties":{"nom":"E","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2756,48.6855]},"properties":{"nom":"A","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2817,48.6891]},"properties":{"nom":"B1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2856,48.6891]},"properties":{"nom":"C1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.291,48.6878]},"properties":{"nom":"D1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2963,48.6892]},"properties":{"nom":"E1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3025,48.6892]},"properties":{"nom":"F1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3076,48.689]},"properties":{"nom":"G1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3157,48.6804]},"properties":{"nom":"B","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3162,48.6762]},"properties":{"nom":"C","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2953,48.668]},"properties":{"nom":"D","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2794,48.6631]},"properties":{"nom":"Da","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2614,48.6649]},"properties":{"nom":"Db","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2559,48.6752]},"properties":{"nom":"E","description":null}}]},"geojson_origine_perimetre":{"type":"Feature","properties":{},"geometry":{"type":"MultiPolygon","coordinates":[[[[6.2559,48.6752],[6.2756,48.6855],[6.2817,48.6891],[6.2856,48.6891],[6.291,48.6878],[6.2963,48.6892],[6.3025,48.6892],[6.3076,48.689],[6.3157,48.6804],[6.3162,48.6762],[6.2953,48.668],[6.2794,48.6631],[6.2614,48.6649],[6.2559,48.6752]]]]}},"geojson_origine_points":{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2559,48.6752]},"properties":{"nom":"E","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2756,48.6855]},"properties":{"nom":"A","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2817,48.6891]},"properties":{"nom":"B1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2856,48.6891]},"properties":{"nom":"C1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.291,48.6878]},"properties":{"nom":"D1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2963,48.6892]},"properties":{"nom":"E1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3025,48.6892]},"properties":{"nom":"F1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3076,48.689]},"properties":{"nom":"G1","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3157,48.6804]},"properties":{"nom":"B","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.3162,48.6762]},"properties":{"nom":"C","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2953,48.668]},"properties":{"nom":"D","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2794,48.6631]},"properties":{"nom":"Da","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2614,48.6649]},"properties":{"nom":"Db","description":null}},{"type":"Feature","geometry":{"type":"Point","coordinates":[6.2559,48.6752]},"properties":{"nom":"E","description":null}}]},"geojson_origine_geo_systeme_id":"4326","geojson4326_forages":null,"geojson_origine_forages":null,"surface":8.65,"communes":[{"id":"54495","nom":"Saulxures-lès-Nancy"},{"id":"54311","nom":"Lenoncourt"},{"id":"54110","nom":"Cerville"},{"id":"54025","nom":"Art-sur-Meurthe"}],"secteurs_maritimes":[],"sdom_zones":[],"forets":[]}},"etape_statut_id":"acc","is_brouillon":false,"date":"2024-02-29","id":"c15f4ceaa62a6298a2f8e117","ordre":1,"note":{"valeur":"","is_avertissement":false},"slug":"m-cx-lenoncourt-1968-exp02-dex01","sections_with_values":[{"id":"publication","nom":"Références Légifrance","elements":[{"id":"jorf","nom":"Numéro JORF","description":"","optionnel":true,"type":"text","value":null},{"id":"nor","nom":"Numéro NOR","description":"","optionnel":true,"type":"text","value":null}]}],"entreprises_documents":[],"etape_documents":[{"id":"2024-02-29-dec-d9f1e868","type":"DESCRIPTION_OPTIONNELLE","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"dec","description":""},{"id":"2024-02-29-dec-32312304","type":"DESCRIPTION_OPTIONNELLE","public_lecture":true,"entreprises_lecture":true,"etape_document_type_id":"dec","description":""}],"avis_documents":[]}],"demarche_type_id":"exp","demarche_statut_id":"acc","demarche_date_debut":null,"demarche_date_fin":null,"ordre":12}],"nb_activites_to_do":null}) return Promise.resolve(lenoncourtData) },