Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 1708-feat-instruction-ajoute-la-possibilite-de-voir-les-prochaines-etapes
  • a11y-ci
  • chore-image-snap
  • master
  • notifications
  • preprod
  • prod
  • prs-exploitant
  • sonar
  • try-better-perfs
  • vpn_rie
  • v0.1.0
  • v0.10.0
  • v0.100.0
  • v0.101.0
  • v0.102.0
  • v0.103.0
  • v0.104.0
  • v0.105.0
  • v0.106.0
  • v0.107.0
  • v0.108.0
  • v0.109.0
  • v0.11.0
  • v0.110.0
  • v0.111.0
  • v0.112.0
  • v0.113.0
  • v0.114.0
  • v0.115.0
  • v0.116.0
  • v0.117.0
  • v0.118.0
  • v0.119.0
  • v0.12.0
  • v0.12.1
  • v0.120.0
  • v0.121.0
  • v0.13.0
  • v0.14.0
  • v0.15.0
  • v0.16.0
  • v0.17.0
  • v0.18.0
  • v0.19.0
  • v0.2.0
  • v0.2.1
  • v0.20.0
  • v0.21.0
  • v0.22.0
  • v0.23.0
  • v0.24.0
  • v0.24.1
  • v0.24.10
  • v0.24.11
  • v0.24.12
  • v0.24.13
  • v0.24.14
  • v0.24.15
  • v0.24.16
  • v0.24.17
  • v0.24.18
  • v0.24.19
  • v0.24.2
  • v0.24.20
  • v0.24.21
  • v0.24.22
  • v0.24.23
  • v0.24.24
  • v0.24.25
  • v0.24.26
  • v0.24.27
  • v0.24.28
  • v0.24.29
  • v0.24.3
  • v0.24.30
  • v0.24.31
  • v0.24.32
  • v0.24.33
  • v0.24.34
  • v0.24.35
  • v0.24.36
  • v0.24.37
  • v0.24.38
  • v0.24.39
  • v0.24.4
  • v0.24.40
  • v0.24.41
  • v0.24.42
  • v0.24.43
  • v0.24.44
  • v0.24.45
  • v0.24.46
  • v0.24.47
  • v0.24.48
  • v0.24.49
  • v0.24.5
  • v0.24.50
  • v0.24.51
  • v0.24.52
  • v0.24.53
  • v0.24.54
  • v0.24.55
  • v0.24.56
  • v0.24.57
  • v0.24.58
  • v0.24.59
  • v0.24.6
  • v0.24.60
  • v0.24.61
  • v0.24.62
111 results

Target

Select target project
  • pub/pnm-public/camino
1 result
Select Git revision
  • 1708-feat-instruction-ajoute-la-possibilite-de-voir-les-prochaines-etapes
  • a11y-ci
  • chore-image-snap
  • master
  • notifications
  • preprod
  • prod
  • prs-exploitant
  • sonar
  • try-better-perfs
  • vpn_rie
  • v0.1.0
  • v0.10.0
  • v0.100.0
  • v0.101.0
  • v0.102.0
  • v0.103.0
  • v0.104.0
  • v0.105.0
  • v0.106.0
  • v0.107.0
  • v0.108.0
  • v0.109.0
  • v0.11.0
  • v0.110.0
  • v0.111.0
  • v0.112.0
  • v0.113.0
  • v0.114.0
  • v0.115.0
  • v0.116.0
  • v0.117.0
  • v0.118.0
  • v0.119.0
  • v0.12.0
  • v0.12.1
  • v0.120.0
  • v0.121.0
  • v0.13.0
  • v0.14.0
  • v0.15.0
  • v0.16.0
  • v0.17.0
  • v0.18.0
  • v0.19.0
  • v0.2.0
  • v0.2.1
  • v0.20.0
  • v0.21.0
  • v0.22.0
  • v0.23.0
  • v0.24.0
  • v0.24.1
  • v0.24.10
  • v0.24.11
  • v0.24.12
  • v0.24.13
  • v0.24.14
  • v0.24.15
  • v0.24.16
  • v0.24.17
  • v0.24.18
  • v0.24.19
  • v0.24.2
  • v0.24.20
  • v0.24.21
  • v0.24.22
  • v0.24.23
  • v0.24.24
  • v0.24.25
  • v0.24.26
  • v0.24.27
  • v0.24.28
  • v0.24.29
  • v0.24.3
  • v0.24.30
  • v0.24.31
  • v0.24.32
  • v0.24.33
  • v0.24.34
  • v0.24.35
  • v0.24.36
  • v0.24.37
  • v0.24.38
  • v0.24.39
  • v0.24.4
  • v0.24.40
  • v0.24.41
  • v0.24.42
  • v0.24.43
  • v0.24.44
  • v0.24.45
  • v0.24.46
  • v0.24.47
  • v0.24.48
  • v0.24.49
  • v0.24.5
  • v0.24.50
  • v0.24.51
  • v0.24.52
  • v0.24.53
  • v0.24.54
  • v0.24.55
  • v0.24.56
  • v0.24.57
  • v0.24.58
  • v0.24.59
  • v0.24.6
  • v0.24.60
  • v0.24.61
  • v0.24.62
111 results
Show changes
Showing
with 274 additions and 156 deletions
......@@ -18,7 +18,7 @@ type RendreAvisDreal = {
type AXMOctXStateEvent =
| { type: 'FAIRE_DEMANDE' }
| { type: 'DEPOSER_DEMANDE' }
| { type: 'ENREGISTRER_DEMANDE' }
| { type: 'RENDRE_DAE_EXEMPTEE' }
| { type: 'RENDRE_DECISION_DU_PROPRIETAIRE_DU_SOL_FAVORABLE' }
| { type: 'RENDRE_DECISION_DU_PROPRIETAIRE_DU_SOL_FAVORABLE_AVEC_RESERVE' }
......@@ -124,7 +124,7 @@ const trad: { [key in Event]: { db: DBEtat; mainStep: boolean } } = {
mainStep: true,
},
FAIRE_DEMANDE: { db: ETES.demande, mainStep: true },
DEPOSER_DEMANDE: { db: ETES.depotDeLaDemande, mainStep: true },
ENREGISTRER_DEMANDE: { db: ETES.enregistrementDeLaDemande, mainStep: true },
MODIFIER_DEMANDE_APRES_DAE: { db: ETES.modificationDeLaDemande_DecisionDeLaMissionAutoriteEnvironnementale_ExamenAuCasParCasDuProjet_, mainStep: true },
DEMANDER_COMPLEMENTS_POUR_RECEVABILITE: { db: ETES.demandeDeComplements_RecevabiliteDeLaDemande_, mainStep: false },
RECEVOIR_COMPLEMENTS_POUR_RECEVABILITE: { db: ETES.receptionDeComplements_RecevabiliteDeLaDemande_, mainStep: false },
......@@ -141,7 +141,7 @@ const trad: { [key in Event]: { db: DBEtat; mainStep: boolean } } = {
RENDRE_DECISION_ABROGATION: { db: ETES.abrogationDeLaDecision, mainStep: false },
DEMANDER_INFORMATION_POUR_AVIS_DREAL: { db: ETES.demandeDinformations_AvisDuDREALDEALOuDGTM_, mainStep: false },
RECEVOIR_INFORMATION_POUR_AVIS_DREAL: { db: ETES.receptionDinformation_AvisDuDREALDEALOuDGTM_, mainStep: false },
// TODO 2023-04-19 RENDRE_DECISION_IMPLICITE_REJET est une étape principale le jour où on gère le délai entre la mdp et le rejet implicite
// TODO 2023-04-19 RENDRE_DECISION_IMPLICITE_REJET est une étape principale le jour où on gère le délai entre la men et le rejet implicite
RENDRE_DECISION_IMPLICITE_REJET: { db: { REJETE: ETES.decisionImplicite.REJETE }, mainStep: false },
RENDRE_DECISION_ANNULATION_PAR_JUGE_ADMINISTRATIF: { db: ETES.decisionDuJugeAdministratif, mainStep: false },
FAIRE_DESISTEMENT_DEMANDEUR: { db: ETES.desistementDuDemandeur, mainStep: false },
......@@ -267,13 +267,13 @@ const axmOctMachine = createMachine({
},
onDone: {
target: 'depotDeLaDemandeAFaire',
target: 'enregistrementDemandeAFaire',
},
},
depotDeLaDemandeAFaire: {
enregistrementDemandeAFaire: {
tags: [tags.responsable[ADMINISTRATION_IDS['DGTM - GUYANE']]],
on: {
DEPOSER_DEMANDE: {
ENREGISTRER_DEMANDE: {
target: 'recevabiliteDeLaDemandeAFaire',
actions: assign({
demarcheStatut: DemarchesStatutsIds.Depose,
......
......@@ -9,7 +9,7 @@ const etapesProd = require('./2000-01-01-pro.cas.json') // eslint-disable-line
describe('vérifie l’arbre de prolongation d’AXM', () => {
const axmProMachine = new AxmProMachine()
test('après la recevabilité, on peut faire une saisine des services', () => {
const { service, dateFin } = setDateAndOrderAndInterpretMachine(axmProMachine, '2022-04-14', [ETES.demande.FAIT, ETES.depotDeLaDemande.FAIT, ETES.recevabiliteDeLaDemande.FAVORABLE])
const { service, dateFin } = setDateAndOrderAndInterpretMachine(axmProMachine, '2022-04-14', [ETES.demande.FAIT, ETES.enregistrementDeLaDemande.FAIT, ETES.recevabiliteDeLaDemande.FAVORABLE])
expect(service).canOnlyTransitionTo({ machine: axmProMachine, date: dateFin }, [
'DEMANDER_INFORMATION_POUR_AVIS_DREAL',
'FAIRE_CLASSEMENT_SANS_SUITE',
......
......@@ -18,7 +18,7 @@ type RendreAvisDreal = {
type AXMProXStateEvent =
| { type: 'FAIRE_DEMANDE' }
| { type: 'DEPOSER_DEMANDE' }
| { type: 'ENREGISTRER_DEMANDE' }
| { type: 'DEMANDER_COMPLEMENTS_POUR_RECEVABILITE' }
| { type: 'RECEVOIR_COMPLEMENTS_POUR_RECEVABILITE' }
| { type: 'FAIRE_RECEVABILITE_DEMANDE_FAVORABLE' }
......@@ -49,7 +49,7 @@ type Event = AXMProXStateEvent['type']
const trad: { [key in Event]: { db: DBEtat; mainStep: boolean } } = {
FAIRE_DEMANDE: { db: ETES.demande, mainStep: true },
DEPOSER_DEMANDE: { db: ETES.depotDeLaDemande, mainStep: true },
ENREGISTRER_DEMANDE: { db: ETES.enregistrementDeLaDemande, mainStep: true },
DEMANDER_COMPLEMENTS_POUR_RECEVABILITE: { db: ETES.demandeDeComplements_RecevabiliteDeLaDemande_, mainStep: false },
RECEVOIR_COMPLEMENTS_POUR_RECEVABILITE: { db: ETES.receptionDeComplements_RecevabiliteDeLaDemande_, mainStep: false },
MODIFIER_LA_DEMANDE: { db: ETES.modificationDeLaDemande, mainStep: true },
......@@ -99,7 +99,7 @@ const trad: { [key in Event]: { db: DBEtat; mainStep: boolean } } = {
},
mainStep: false,
},
// TODO 2023-04-19 RENDRE_DECISION_IMPLICITE_REJET est une étape principale le jour où on gère le délai entre la mdp et le rejet implicite
// TODO 2023-04-19 RENDRE_DECISION_IMPLICITE_REJET est une étape principale le jour où on gère le délai entre la men et le rejet implicite
RENDRE_DECISION_IMPLICITE_REJET: {
db: {
REJETE: ETES.decisionImplicite.REJETE,
......@@ -189,13 +189,13 @@ const axmProMachine = createMachine({
states: {
demandeAFaire: {
on: {
FAIRE_DEMANDE: 'depotDeLaDemandeAFaire',
FAIRE_DEMANDE: 'enregistrementDeLaDemandeAFaire',
},
},
depotDeLaDemandeAFaire: {
enregistrementDeLaDemandeAFaire: {
tags: [tags.responsable[ADMINISTRATION_IDS['DGTM - GUYANE']]],
on: {
DEPOSER_DEMANDE: {
ENREGISTRER_DEMANDE: {
target: 'recevabiliteDeLaDemandeAFaire',
actions: assign({
demarcheStatut: DemarchesStatutsIds.Depose,
......
[{"id":0,"demarcheStatutId":"acp","demarchePublique":true,"etapes":[{"date":"2019-05-25","etapeTypeId":"mfr","etapeStatutId":"fai"},{"date":"2019-06-13","etapeTypeId":"mdp","etapeStatutId":"fai"},{"date":"2020-11-19","etapeTypeId":"dex","etapeStatutId":"acc","paysId":"FR","surface":0},{"date":"2020-11-19","etapeTypeId":"dpu","etapeStatutId":"fai","paysId":"FR","surface":743.67}]},{"id":1,"demarcheStatutId":"acp","demarchePublique":true,"etapes":[{"date":"2019-02-19","etapeTypeId":"mfr","etapeStatutId":"fai"},{"date":"2019-02-28","etapeTypeId":"mdp","etapeStatutId":"fai"},{"date":"2020-11-11","etapeTypeId":"dex","etapeStatutId":"acc"},{"date":"2020-11-15","etapeTypeId":"dpu","etapeStatutId":"fai"}]},{"id":2,"demarcheStatutId":"acp","demarchePublique":true,"etapes":[{"date":"2018-01-05","etapeTypeId":"dex","etapeStatutId":"acc"},{"date":"2018-01-11","etapeTypeId":"dpu","etapeStatutId":"fai"}]},{"id":3,"demarcheStatutId":"acp","demarchePublique":true,"etapes":[{"date":"2017-11-18","etapeTypeId":"mfr","etapeStatutId":"fai"},{"date":"2017-11-23","etapeTypeId":"mdp","etapeStatutId":"fai"},{"date":"2019-06-28","etapeTypeId":"dex","etapeStatutId":"acc"},{"date":"2019-07-18","etapeTypeId":"dpu","etapeStatutId":"fai"}]}]
\ No newline at end of file
[{"id":0,"demarcheStatutId":"acp","demarchePublique":true,"etapes":[{"date":"2019-05-25","etapeTypeId":"mfr","etapeStatutId":"fai"},{"date":"2019-06-13","etapeTypeId":"men","etapeStatutId":"fai"},{"date":"2020-11-19","etapeTypeId":"dex","etapeStatutId":"acc","paysId":"FR","surface":0},{"date":"2020-11-19","etapeTypeId":"dpu","etapeStatutId":"fai","paysId":"FR","surface":743.67}]},{"id":1,"demarcheStatutId":"acp","demarchePublique":true,"etapes":[{"date":"2019-02-19","etapeTypeId":"mfr","etapeStatutId":"fai"},{"date":"2019-02-28","etapeTypeId":"men","etapeStatutId":"fai"},{"date":"2020-11-11","etapeTypeId":"dex","etapeStatutId":"acc"},{"date":"2020-11-15","etapeTypeId":"dpu","etapeStatutId":"fai"}]},{"id":2,"demarcheStatutId":"acp","demarchePublique":true,"etapes":[{"date":"2018-01-05","etapeTypeId":"dex","etapeStatutId":"acc"},{"date":"2018-01-11","etapeTypeId":"dpu","etapeStatutId":"fai"}]},{"id":3,"demarcheStatutId":"acp","demarchePublique":true,"etapes":[{"date":"2017-11-18","etapeTypeId":"mfr","etapeStatutId":"fai"},{"date":"2017-11-23","etapeTypeId":"men","etapeStatutId":"fai"},{"date":"2019-06-28","etapeTypeId":"dex","etapeStatutId":"acc"},{"date":"2019-07-18","etapeTypeId":"dpu","etapeStatutId":"fai"}]}]
\ No newline at end of file
......@@ -14,7 +14,7 @@ describe('isEtapesOk', () => {
date: toCaminoDate('2021-02-26'),
},
{
etapeTypeId: 'mdp',
etapeTypeId: 'men',
etapeStatutId: 'fai',
date: toCaminoDate('2021-02-10'),
},
......@@ -33,7 +33,7 @@ describe('orderMachine', () => {
contenu: { arm: { mecanise: true } },
},
{
etapeTypeId: 'mdp',
etapeTypeId: 'men',
etapeStatutId: 'fai',
date: toCaminoDate('2020-01-02'),
},
......@@ -113,7 +113,7 @@ describe('orderMachine', () => {
{
"date": "2020-01-02",
"etapeStatutId": "fai",
"etapeTypeId": "mdp",
"etapeTypeId": "men",
},
{
"date": "2020-01-03",
......@@ -192,7 +192,7 @@ describe('demarcheStatut', () => {
},
{
date: toCaminoDate('2021-07-27'),
etapeTypeId: 'mdp',
etapeTypeId: 'men',
etapeStatutId: 'fai',
},
{
......@@ -291,7 +291,7 @@ describe('whoIsBlocking', () => {
date: toCaminoDate('2021-02-01'),
},
{
etapeTypeId: 'mdp',
etapeTypeId: 'men',
etapeStatutId: 'fai',
date: toCaminoDate('2021-02-02'),
},
......@@ -313,7 +313,7 @@ describe('whoIsBlocking', () => {
date: toCaminoDate('2021-02-01'),
},
{
etapeTypeId: 'mdp',
etapeTypeId: 'men',
etapeStatutId: 'fai',
date: toCaminoDate('2021-02-02'),
},
......@@ -340,7 +340,7 @@ describe('whoIsBlocking', () => {
date: toCaminoDate('2021-02-01'),
},
{
etapeTypeId: 'mdp',
etapeTypeId: 'men',
etapeStatutId: 'fai',
date: toCaminoDate('2021-02-02'),
},
......@@ -380,7 +380,7 @@ describe('mainStep', () => {
date: toCaminoDate('2021-02-01'),
},
{
etapeTypeId: 'mdp',
etapeTypeId: 'men',
etapeStatutId: 'fai',
date: toCaminoDate('2021-02-02'),
},
......@@ -421,7 +421,7 @@ describe('mainStep', () => {
armOctMachine.possibleNextEtapes(
[
{ etapeTypeId: 'mfr', etapeStatutId: 'fai', date: toCaminoDate('2021-02-01') },
{ etapeTypeId: 'mdp', etapeStatutId: 'fai', date: toCaminoDate('2021-02-02') },
{ etapeTypeId: 'men', etapeStatutId: 'fai', date: toCaminoDate('2021-02-02') },
{ etapeTypeId: 'pfd', etapeStatutId: 'fai', date: toCaminoDate('2021-02-02') },
{ etapeTypeId: 'mcp', etapeStatutId: 'com', date: toCaminoDate('2021-02-02') },
{ etapeTypeId: 'vfd', etapeStatutId: 'fai', date: toCaminoDate('2021-02-02') },
......@@ -487,7 +487,7 @@ describe('mainStep', () => {
armOctMachine.possibleNextEtapes(
[
{ etapeTypeId: 'mfr', etapeStatutId: 'fai', date: toCaminoDate('2021-02-01') },
{ etapeTypeId: 'mdp', etapeStatutId: 'fai', date: toCaminoDate('2021-02-02') },
{ etapeTypeId: 'men', etapeStatutId: 'fai', date: toCaminoDate('2021-02-02') },
{ etapeTypeId: 'pfd', etapeStatutId: 'fai', date: toCaminoDate('2021-02-02') },
{ etapeTypeId: 'mcp', etapeStatutId: 'com', date: toCaminoDate('2021-02-02') },
{ etapeTypeId: 'vfd', etapeStatutId: 'fai', date: toCaminoDate('2021-02-02') },
......@@ -554,7 +554,7 @@ describe('mainStep', () => {
armOctMachine.possibleNextEtapes(
[
{ etapeTypeId: 'mfr', etapeStatutId: 'fai', date: toCaminoDate('2021-02-01') },
{ etapeTypeId: 'mdp', etapeStatutId: 'fai', date: toCaminoDate('2021-02-02') },
{ etapeTypeId: 'men', etapeStatutId: 'fai', date: toCaminoDate('2021-02-02') },
{ etapeTypeId: 'pfd', etapeStatutId: 'fai', date: toCaminoDate('2021-02-02') },
{ etapeTypeId: 'mcp', etapeStatutId: 'com', date: toCaminoDate('2021-02-02') },
{ etapeTypeId: 'vfd', etapeStatutId: 'fai', date: toCaminoDate('2021-02-02') },
......@@ -613,7 +613,7 @@ describe('mainStep', () => {
armOctMachine.possibleNextEtapes(
[
{ etapeTypeId: 'mfr', etapeStatutId: 'fai', date: toCaminoDate('2021-02-01') },
{ etapeTypeId: 'mdp', etapeStatutId: 'fai', date: toCaminoDate('2021-02-02') },
{ etapeTypeId: 'men', etapeStatutId: 'fai', date: toCaminoDate('2021-02-02') },
{ etapeTypeId: 'pfd', etapeStatutId: 'fai', date: toCaminoDate('2021-02-02') },
{ etapeTypeId: 'mcp', etapeStatutId: 'com', date: toCaminoDate('2021-02-02') },
{ etapeTypeId: 'vfd', etapeStatutId: 'fai', date: toCaminoDate('2021-02-02') },
......
......@@ -10,7 +10,7 @@ describe('vérifie l’arbre d’octroi de PRM', () => {
test('peut créer une demande d’octroi de PRM complète en Métropole', () => {
const { service, etapes, dateFin } = setDateAndOrderAndInterpretMachine(prmOctMachine, '2022-07-01', [
ETES.demande.FAIT,
ETES.depotDeLaDemande.FAIT,
ETES.enregistrementDeLaDemande.FAIT,
ETES.saisineDuPrefet.FAIT,
ETES.recevabiliteDeLaDemande.FAVORABLE,
ETES.avisDeMiseEnConcurrenceAuJORF.TERMINE,
......@@ -42,7 +42,7 @@ describe('vérifie l’arbre d’octroi de PRM', () => {
test('peut classer sans suite une demande déposée, qui reste confidentielle', () => {
const { service, etapes, dateFin } = setDateAndOrderAndInterpretMachine(prmOctMachine, '2022-07-01', [
ETES.demande.FAIT,
ETES.depotDeLaDemande.FAIT,
ETES.enregistrementDeLaDemande.FAIT,
ETES.saisineDuPrefet.FAIT,
ETES.classementSansSuite.FAIT,
])
......@@ -58,7 +58,7 @@ describe('vérifie l’arbre d’octroi de PRM', () => {
test('peut créer une demande d’octroi de PRM en Guyane', () => {
const etapes = [
{ ...ETES.demande.FAIT, paysId: PAYS_IDS['Département de la Guyane'], surface: 200 },
ETES.depotDeLaDemande.FAIT,
ETES.enregistrementDeLaDemande.FAIT,
ETES.saisineDuPrefet.FAIT,
ETES.recevabiliteDeLaDemande.FAVORABLE,
ETES.avisDeMiseEnConcurrenceAuJORF.TERMINE,
......@@ -75,7 +75,7 @@ describe('vérifie l’arbre d’octroi de PRM', () => {
test('peut créer une demande d’octroi de PRM en Guyane sans avis du maire', () => {
const etapes = [
{ ...ETES.demande.FAIT, paysId: PAYS_IDS['Département de la Guyane'], surface: 14 },
ETES.depotDeLaDemande.FAIT,
ETES.enregistrementDeLaDemande.FAIT,
ETES.saisineDuPrefet.FAIT,
ETES.demandeDeComplements_RecevabiliteDeLaDemande_.FAIT,
ETES.receptionDeComplements_RecevabiliteDeLaDemande_.FAIT,
......@@ -91,7 +91,7 @@ describe('vérifie l’arbre d’octroi de PRM', () => {
test('peut créer une demande d’octroi de PRM en Outre mer (hors Guyane)', () => {
const etapes = [
{ ...ETES.demande.FAIT, paysId: PAYS_IDS['Wallis-et-Futuna'] },
ETES.depotDeLaDemande.FAIT,
ETES.enregistrementDeLaDemande.FAIT,
ETES.saisineDuPrefet.FAIT,
ETES.recevabiliteDeLaDemande.FAVORABLE,
ETES.avisDeMiseEnConcurrenceAuJORF.TERMINE,
......@@ -107,7 +107,7 @@ describe('vérifie l’arbre d’octroi de PRM', () => {
test('ne peut pas faire l’avis de la DREAL si la saisine des services a été faite dans les 30 jours', () => {
const etapes = [
{ ...ETES.demande.FAIT, paysId: PAYS_IDS['République Française'] },
ETES.depotDeLaDemande.FAIT,
ETES.enregistrementDeLaDemande.FAIT,
ETES.saisineDuPrefet.FAIT,
ETES.recevabiliteDeLaDemande.FAVORABLE,
ETES.avisDeMiseEnConcurrenceAuJORF.TERMINE,
......@@ -115,14 +115,14 @@ describe('vérifie l’arbre d’octroi de PRM', () => {
ETES.rapportEtAvisDeLaDREAL.FAVORABLE,
]
expect(() => setDateAndOrderAndInterpretMachine(prmOctMachine, '2022-04-13', etapes)).toThrowErrorMatchingInlineSnapshot(
`[Error: Error: cannot execute step: '{"etapeTypeId":"apd","etapeStatutId":"fav","date":"2022-04-20"}' after '["mfr_fai","mdp_fai","spp_fai","mcr_fav","anf_ter","asc_fai"]'. The event {"type":"RENDRE_RAPPORT_DREAL","date":"2022-04-20","status":"fav"} should be one of 'CLASSER_SANS_SUITE,DEMANDER_INFORMATIONS,DEPOSER_DEMANDE_CONCURRENTE,DESISTER_PAR_LE_DEMANDEUR,MODIFIER_DEMANDE,RECEVOIR_INFORMATIONS']`
`[Error: Error: cannot execute step: '{"etapeTypeId":"apd","etapeStatutId":"fav","date":"2022-04-20"}' after '["mfr_fai","men_fai","spp_fai","mcr_fav","anf_ter","asc_fai"]'. The event {"type":"RENDRE_RAPPORT_DREAL","date":"2022-04-20","status":"fav"} should be one of 'CLASSER_SANS_SUITE,DEMANDER_INFORMATIONS,DEPOSER_DEMANDE_CONCURRENTE,DESISTER_PAR_LE_DEMANDEUR,MODIFIER_DEMANDE,RECEVOIR_INFORMATIONS']`
)
})
test('ne peut pas faire 2 avis des services et commissions consultatives', () => {
const etapes = [
{ ...ETES.demande.FAIT, paysId: PAYS_IDS['République Française'] },
ETES.depotDeLaDemande.FAIT,
ETES.enregistrementDeLaDemande.FAIT,
ETES.saisineDuPrefet.FAIT,
ETES.recevabiliteDeLaDemande.FAVORABLE,
ETES.avisDeMiseEnConcurrenceAuJORF.TERMINE,
......@@ -130,28 +130,28 @@ describe('vérifie l’arbre d’octroi de PRM', () => {
ETES.avisDesServicesEtCommissionsConsultatives.FAIT,
]
expect(() => setDateAndOrderAndInterpretMachine(prmOctMachine, '2022-04-12', etapes)).toThrowErrorMatchingInlineSnapshot(
`[Error: Error: cannot execute step: '{"etapeTypeId":"asc","etapeStatutId":"fai","date":"2022-04-19"}' after '["mfr_fai","mdp_fai","spp_fai","mcr_fav","anf_ter","asc_fai"]'. The event {"type":"RENDRE_AVIS_SERVICES_ET_COMMISSIONS_CONSULTATIVES","date":"2022-04-19","status":"fai"} should be one of 'CLASSER_SANS_SUITE,DEMANDER_INFORMATIONS,DEPOSER_DEMANDE_CONCURRENTE,DESISTER_PAR_LE_DEMANDEUR,MODIFIER_DEMANDE,RECEVOIR_INFORMATIONS']`
`[Error: Error: cannot execute step: '{"etapeTypeId":"asc","etapeStatutId":"fai","date":"2022-04-19"}' after '["mfr_fai","men_fai","spp_fai","mcr_fav","anf_ter","asc_fai"]'. The event {"type":"RENDRE_AVIS_SERVICES_ET_COMMISSIONS_CONSULTATIVES","date":"2022-04-19","status":"fai"} should be one of 'CLASSER_SANS_SUITE,DEMANDER_INFORMATIONS,DEPOSER_DEMANDE_CONCURRENTE,DESISTER_PAR_LE_DEMANDEUR,MODIFIER_DEMANDE,RECEVOIR_INFORMATIONS']`
)
})
test('ne peut pas ouvrir la participation du public si la mise en concurrence n’est pas terminée', () => {
const etapes = [
{ ...ETES.demande.FAIT, paysId: PAYS_IDS['République Française'] },
ETES.depotDeLaDemande.FAIT,
ETES.enregistrementDeLaDemande.FAIT,
ETES.saisineDuPrefet.FAIT,
ETES.recevabiliteDeLaDemande.FAVORABLE,
ETES.avisDeMiseEnConcurrenceAuJORF.TERMINE,
ETES.participationDuPublic.PROGRAMME,
]
expect(() => setDateAndOrderAndInterpretMachine(prmOctMachine, '2022-04-13', etapes)).toThrowErrorMatchingInlineSnapshot(
`[Error: Error: cannot execute step: '{"etapeTypeId":"ppu","etapeStatutId":"pro","date":"2022-04-19"}' after '["mfr_fai","mdp_fai","spp_fai","mcr_fav","anf_ter"]'. The event {"type":"OUVRIR_PARTICIPATION_DU_PUBLIC","date":"2022-04-19","status":"pro"} should be one of 'CLASSER_SANS_SUITE,DEMANDER_INFORMATIONS,DEPOSER_DEMANDE_CONCURRENTE,DESISTER_PAR_LE_DEMANDEUR,MODIFIER_DEMANDE,RECEVOIR_INFORMATIONS,RENDRE_AVIS_SERVICES_ET_COMMISSIONS_CONSULTATIVES']`
`[Error: Error: cannot execute step: '{"etapeTypeId":"ppu","etapeStatutId":"pro","date":"2022-04-19"}' after '["mfr_fai","men_fai","spp_fai","mcr_fav","anf_ter"]'. The event {"type":"OUVRIR_PARTICIPATION_DU_PUBLIC","date":"2022-04-19","status":"pro"} should be one of 'CLASSER_SANS_SUITE,DEMANDER_INFORMATIONS,DEPOSER_DEMANDE_CONCURRENTE,DESISTER_PAR_LE_DEMANDEUR,MODIFIER_DEMANDE,RECEVOIR_INFORMATIONS,RENDRE_AVIS_SERVICES_ET_COMMISSIONS_CONSULTATIVES']`
)
})
test('ne peut pas créer une "rpu" après une "dex" rejetée', () => {
const etapes = [
{ ...ETES.demande.FAIT, paysId: PAYS_IDS['République Française'] },
ETES.depotDeLaDemande.FAIT,
ETES.enregistrementDeLaDemande.FAIT,
ETES.saisineDuPrefet.FAIT,
ETES.recevabiliteDeLaDemande.FAVORABLE,
ETES.avisDeMiseEnConcurrenceAuJORF.TERMINE,
......@@ -170,7 +170,7 @@ describe('vérifie l’arbre d’octroi de PRM', () => {
]
expect(() => setDateAndOrderAndInterpretMachine(prmOctMachine, '2022-04-13', etapes)).toThrowErrorMatchingInlineSnapshot(
`[Error: Error: cannot execute step: '{"etapeTypeId":"rpu","etapeStatutId":"fai","date":"2022-05-30"}' after '["mfr_fai","mdp_fai","spp_fai","mcr_fav","anf_ter","asc_fai","ppu_ter","apd_fav","app_fav","scg_fai","rcg_fav","acg_fav","sas_fai","dex_rej","npp_fai","mno_fai"]'. The event {"type":"PUBLIER_DECISIONS_RECUEIL_ACTES_ADMINISTRATIFS","date":"2022-05-30","status":"fai"} should be one of 'RENDRE_DECISION_ABROGATION,RENDRE_DECISION_ANNULATION_PAR_JUGE_ADMINISTRATIF']`
`[Error: Error: cannot execute step: '{"etapeTypeId":"rpu","etapeStatutId":"fai","date":"2022-05-30"}' after '["mfr_fai","men_fai","spp_fai","mcr_fav","anf_ter","asc_fai","ppu_ter","apd_fav","app_fav","scg_fai","rcg_fav","acg_fav","sas_fai","dex_rej","npp_fai","mno_fai"]'. The event {"type":"PUBLIER_DECISIONS_RECUEIL_ACTES_ADMINISTRATIFS","date":"2022-05-30","status":"fai"} should be one of 'RENDRE_DECISION_ABROGATION,RENDRE_DECISION_ANNULATION_PAR_JUGE_ADMINISTRATIF']`
)
})
......
......@@ -42,7 +42,7 @@ type FaireDemande = {
type XStateEvent =
| FaireDemande
| { type: 'DEPOSER_DEMANDE' }
| { type: 'ENREGISTRER_DEMANDE' }
| { type: 'FAIRE_SAISINE_PREFET' }
| { type: 'DEMANDER_COMPLEMENTS_POUR_RECEVABILITE' }
| { type: 'RECEVOIR_COMPLEMENTS_POUR_RECEVABILITE' }
......@@ -81,7 +81,7 @@ type Event = XStateEvent['type']
const trad: { [key in Event]: { db: DBEtat; mainStep: boolean } } = {
FAIRE_DEMANDE: { db: EtapesTypesEtapesStatuts.demande, mainStep: true },
DEPOSER_DEMANDE: { db: EtapesTypesEtapesStatuts.depotDeLaDemande, mainStep: true },
ENREGISTRER_DEMANDE: { db: EtapesTypesEtapesStatuts.enregistrementDeLaDemande, mainStep: true },
FAIRE_SAISINE_PREFET: { db: EtapesTypesEtapesStatuts.saisineDuPrefet, mainStep: true },
DEMANDER_COMPLEMENTS_POUR_RECEVABILITE: { db: EtapesTypesEtapesStatuts.demandeDeComplements_RecevabiliteDeLaDemande_, mainStep: false },
RECEVOIR_COMPLEMENTS_POUR_RECEVABILITE: { db: EtapesTypesEtapesStatuts.receptionDeComplements_RecevabiliteDeLaDemande_, mainStep: false },
......@@ -262,7 +262,7 @@ const prmOctMachine = createMachine({
demandeAFaire: {
on: {
FAIRE_DEMANDE: {
target: 'depotDeLaDemandeAFaire',
target: 'enregistrementDeLaDemandeAFaire',
actions: assign({
paysId: ({ event }) => {
return event.paysId
......@@ -274,9 +274,9 @@ const prmOctMachine = createMachine({
},
},
},
depotDeLaDemandeAFaire: {
enregistrementDeLaDemandeAFaire: {
on: {
DEPOSER_DEMANDE: {
ENREGISTRER_DEMANDE: {
target: 'saisineDuPrefetAFaire',
actions: assign({
demarcheStatut: DemarchesStatutsIds.Depose,
......
......@@ -59,7 +59,7 @@ describe('vérifie l’arbre des procédures historiques et simplifiées', () =>
'CLASSER_SANS_SUITE',
'DEMANDER_INFORMATION',
'RECEVOIR_INFORMATION',
'DEPOSER_DEMANDE',
'ENREGISTRER_DEMANDE',
'DESISTER_PAR_LE_DEMANDEUR',
'OUVRIR_PARTICIPATION_DU_PUBLIC',
'RENDRE_DECISION_ADMINISTRATION_ACCEPTEE',
......@@ -70,7 +70,7 @@ describe('vérifie l’arbre des procédures historiques et simplifiées', () =>
})
test('peut déposer une demande', () => {
const { service, dateFin } = setDateAndOrderAndInterpretMachine(psMachine, '2022-04-14', [ETES.demande.FAIT, ETES.depotDeLaDemande.FAIT])
const { service, dateFin } = setDateAndOrderAndInterpretMachine(psMachine, '2022-04-14', [ETES.demande.FAIT, ETES.enregistrementDeLaDemande.FAIT])
expect(service).canOnlyTransitionTo({ machine: psMachine, date: dateFin }, [
'CLASSER_SANS_SUITE',
'DEMANDER_INFORMATION',
......@@ -85,14 +85,14 @@ describe('vérifie l’arbre des procédures historiques et simplifiées', () =>
})
test('ne peut pas faire deux dépôts de la demande', () => {
const etapes = [ETES.demande.FAIT, ETES.depotDeLaDemande.FAIT, ETES.depotDeLaDemande.FAIT]
const etapes = [ETES.demande.FAIT, ETES.enregistrementDeLaDemande.FAIT, ETES.enregistrementDeLaDemande.FAIT]
expect(() => setDateAndOrderAndInterpretMachine(psMachine, '2022-04-12', etapes)).toThrowErrorMatchingInlineSnapshot(
`[Error: Error: cannot execute step: '{"etapeTypeId":"mdp","etapeStatutId":"fai","date":"2022-04-15"}' after '["mfr_fai","mdp_fai"]'. The event {"type":"DEPOSER_DEMANDE","date":"2022-04-15","status":"fai"} should be one of 'CLASSER_SANS_SUITE,DEMANDER_INFORMATION,DESISTER_PAR_LE_DEMANDEUR,OUVRIR_PARTICIPATION_DU_PUBLIC,RECEVOIR_INFORMATION,RENDRE_DECISION_ADMINISTRATION_ACCEPTEE,RENDRE_DECISION_ADMINISTRATION_REJETEE,RENDRE_DECISION_ADMINISTRATION_REJETEE_DECISION_IMPLICITE']`
`[Error: Error: cannot execute step: '{"etapeTypeId":"men","etapeStatutId":"fai","date":"2022-04-15"}' after '["mfr_fai","men_fai"]'. The event {"type":"ENREGISTRER_DEMANDE","date":"2022-04-15","status":"fai"} should be one of 'CLASSER_SANS_SUITE,DEMANDER_INFORMATION,DESISTER_PAR_LE_DEMANDEUR,OUVRIR_PARTICIPATION_DU_PUBLIC,RECEVOIR_INFORMATION,RENDRE_DECISION_ADMINISTRATION_ACCEPTEE,RENDRE_DECISION_ADMINISTRATION_REJETEE,RENDRE_DECISION_ADMINISTRATION_REJETEE_DECISION_IMPLICITE']`
)
})
test('peut faire une ouverture de la participation du public', () => {
const etapes = [ETES.demande.FAIT, ETES.depotDeLaDemande.FAIT, ETES.participationDuPublic.EN_COURS]
const etapes = [ETES.demande.FAIT, ETES.enregistrementDeLaDemande.FAIT, ETES.participationDuPublic.EN_COURS]
const { service, dateFin } = setDateAndOrderAndInterpretMachine(psMachine, '2022-04-16', etapes)
expect(service).canOnlyTransitionTo({ machine: psMachine, date: dateFin }, ['CLASSER_SANS_SUITE', 'DESISTER_PAR_LE_DEMANDEUR', 'DEMANDER_INFORMATION', 'RECEVOIR_INFORMATION'])
expect(service.getSnapshot().context.demarcheStatut).toBe(DemarchesStatutsIds.EnInstruction)
......@@ -100,7 +100,7 @@ describe('vérifie l’arbre des procédures historiques et simplifiées', () =>
})
test("tant que l'ouverture du public n'est pas en cours, la demarche est confidentielle", () => {
const etapes = [ETES.demande.FAIT, ETES.depotDeLaDemande.FAIT, ETES.participationDuPublic.PROGRAMME]
const etapes = [ETES.demande.FAIT, ETES.enregistrementDeLaDemande.FAIT, ETES.participationDuPublic.PROGRAMME]
const { service, dateFin } = setDateAndOrderAndInterpretMachine(psMachine, '2022-04-16', etapes)
expect(service).canOnlyTransitionTo({ machine: psMachine, date: dateFin }, ['CLASSER_SANS_SUITE', 'DESISTER_PAR_LE_DEMANDEUR', 'DEMANDER_INFORMATION', 'RECEVOIR_INFORMATION'])
expect(service.getSnapshot().context.demarcheStatut).toBe(DemarchesStatutsIds.EnInstruction)
......@@ -166,7 +166,7 @@ describe('vérifie l’arbre des procédures historiques et simplifiées', () =>
const { service, dateFin } = setDateAndOrderAndInterpretMachine(psMachine, '2022-04-16', [ETES.demande.FAIT, ETES.demandeDinformations.FAIT])
expect(service).canOnlyTransitionTo({ machine: psMachine, date: dateFin }, [
'CLASSER_SANS_SUITE',
'DEPOSER_DEMANDE',
'ENREGISTRER_DEMANDE',
'DESISTER_PAR_LE_DEMANDEUR',
'OUVRIR_PARTICIPATION_DU_PUBLIC',
'DEMANDER_INFORMATION',
......@@ -200,7 +200,7 @@ describe('vérifie l’arbre des procédures historiques et simplifiées', () =>
test('peut faire la démarche la plus complète possible', () => {
const { service, dateFin } = setDateAndOrderAndInterpretMachine(psMachine, '2022-04-14', [
ETES.demande.FAIT,
ETES.depotDeLaDemande.FAIT,
ETES.enregistrementDeLaDemande.FAIT,
ETES.participationDuPublic.TERMINE,
ETES.decisionDeLAutoriteAdministrative.ACCEPTE,
ETES.publicationDeDecisionAuJORF.FAIT,
......@@ -221,7 +221,7 @@ describe('vérifie l’arbre des procédures historiques et simplifiées', () =>
})
test("peut rejeter un décision de l'administration", () => {
const etapes = [ETES.demande.FAIT, ETES.depotDeLaDemande.FAIT, ETES.participationDuPublic.TERMINE, ETES.decisionDeLAutoriteAdministrative.REJETE]
const etapes = [ETES.demande.FAIT, ETES.enregistrementDeLaDemande.FAIT, ETES.participationDuPublic.TERMINE, ETES.decisionDeLAutoriteAdministrative.REJETE]
const { service, dateFin } = setDateAndOrderAndInterpretMachine(psMachine, '2022-04-14', etapes)
expect(service).canOnlyTransitionTo({ machine: psMachine, date: dateFin }, [])
expect(service.getSnapshot().context.demarcheStatut).toBe(DemarchesStatutsIds.Rejete)
......
......@@ -38,7 +38,7 @@ type ParticipationDuPublic = {
type ProcedureSimplifieeXStateEvent =
| { type: 'FAIRE_DEMANDE' }
| { type: 'DEPOSER_DEMANDE' }
| { type: 'ENREGISTRER_DEMANDE' }
| ParticipationDuPublic
| RendreDecisionAdministrationAcceptee
| RendreDecisionAdministrationRejetee
......@@ -56,7 +56,7 @@ type Event = ProcedureSimplifieeXStateEvent['type']
const trad: { [key in Event]: { db: DBEtat; mainStep: boolean } } = {
FAIRE_DEMANDE: { db: ETES.demande, mainStep: true },
DEPOSER_DEMANDE: { db: ETES.depotDeLaDemande, mainStep: true },
ENREGISTRER_DEMANDE: { db: ETES.enregistrementDeLaDemande, mainStep: true },
OUVRIR_PARTICIPATION_DU_PUBLIC: { db: ETES.participationDuPublic, mainStep: true },
RENDRE_DECISION_ADMINISTRATION_ACCEPTEE: { db: { ACCEPTE: ETES.decisionDeLAutoriteAdministrative.ACCEPTE }, mainStep: true },
RENDRE_DECISION_ADMINISTRATION_REJETEE: { db: { REJETE: ETES.decisionDeLAutoriteAdministrative.REJETE }, mainStep: true },
......@@ -99,7 +99,7 @@ export class ProcedureSimplifieeMachine extends CaminoMachine<ProcedureSimplifie
}
interface ProcedureSimplifieeContext extends CaminoCommonContext {
depotDeLaDemandeFaite: boolean
enregistrementDeLaDemandeFaite: boolean
ouverturePublicStatut: EtapeStatutId | null
}
const defaultDemarcheStatut = DemarchesStatutsIds.EnConstruction
......@@ -118,7 +118,7 @@ const procedureSimplifieeMachine = setup({
context: {
demarcheStatut: defaultDemarcheStatut,
visibilite: 'confidentielle',
depotDeLaDemandeFaite: false,
enregistrementDeLaDemandeFaite: false,
ouverturePublicStatut: null,
asyncTasks: new Set(),
},
......@@ -207,11 +207,11 @@ const procedureSimplifieeMachine = setup({
},
receptionDeLaDemandeOuOuverturePublicOuDecisionAdministrationAFaire: {
on: {
DEPOSER_DEMANDE: {
guard: ({ context }) => !context.depotDeLaDemandeFaite && isNullOrUndefined(context.ouverturePublicStatut),
ENREGISTRER_DEMANDE: {
guard: ({ context }) => !context.enregistrementDeLaDemandeFaite && isNullOrUndefined(context.ouverturePublicStatut),
target: 'receptionDeLaDemandeOuOuverturePublicOuDecisionAdministrationAFaire',
actions: assign({
depotDeLaDemandeFaite: true,
enregistrementDeLaDemandeFaite: true,
}),
},
OUVRIR_PARTICIPATION_DU_PUBLIC: {
......
......@@ -37,7 +37,7 @@ type FaireDemande = {
}
type ProcedureSpecifiqueXStateEvent =
| FaireDemande
| { type: 'DEPOSER_DEMANDE' }
| { type: 'ENREGISTRER_DEMANDE' }
| { type: 'FAIRE_RECEVABILITE_FAVORABLE' }
| { type: 'FAIRE_RECEVABILITE_DEFAVORABLE' }
| { type: 'FAIRE_DEMANDE_DE_COMPLEMENTS' }
......@@ -61,12 +61,16 @@ type ProcedureSpecifiqueXStateEvent =
| { type: 'PUBLIER_DECISION_AU_RECUEIL_DES_ACTES_ADMINISTRATIFS' }
| { type: 'FAIRE_ABROGATION' }
| { type: 'FAIRE_ATTESTATION_DE_CONSTITUTION_DE_GARANTIES_FINANCIERES' }
| { type: 'CLASSER_SANS_SUITE' }
| { type: 'DESISTER_PAR_LE_DEMANDEUR' }
| { type: 'DEMANDER_INFORMATION' }
| { type: 'RECEVOIR_INFORMATION' }
type Event = ProcedureSpecifiqueXStateEvent['type']
const trad: { [key in Event]: { db: DBEtat; mainStep: boolean } } = {
FAIRE_DEMANDE: { db: ETES.demande, mainStep: true },
DEPOSER_DEMANDE: { db: ETES.depotDeLaDemande, mainStep: true },
ENREGISTRER_DEMANDE: { db: ETES.enregistrementDeLaDemande, mainStep: true },
FAIRE_RECEVABILITE_FAVORABLE: { db: { FAVORABLE: ETES.recevabiliteDeLaDemande.FAVORABLE }, mainStep: true },
FAIRE_RECEVABILITE_DEFAVORABLE: { db: { DEFAVORABLE: ETES.recevabiliteDeLaDemande.DEFAVORABLE }, mainStep: false },
FAIRE_DEMANDE_DE_COMPLEMENTS: { db: ETES.demandeDeComplements, mainStep: false },
......@@ -90,6 +94,10 @@ const trad: { [key in Event]: { db: DBEtat; mainStep: boolean } } = {
PUBLIER_DECISION_AU_RECUEIL_DES_ACTES_ADMINISTRATIFS: { db: ETES.publicationDeDecisionAuRecueilDesActesAdministratifs, mainStep: true },
FAIRE_ABROGATION: { db: ETES.abrogationDeLaDecision, mainStep: true },
FAIRE_ATTESTATION_DE_CONSTITUTION_DE_GARANTIES_FINANCIERES: { db: ETES.attestationDeConstitutionDeGarantiesFinancieres, mainStep: true },
CLASSER_SANS_SUITE: { db: ETES.classementSansSuite, mainStep: false },
DESISTER_PAR_LE_DEMANDEUR: { db: ETES.desistementDuDemandeur, mainStep: false },
DEMANDER_INFORMATION: { db: ETES.demandeDinformations, mainStep: false },
RECEVOIR_INFORMATION: { db: ETES.receptionDinformation, mainStep: false },
}
// basé sur https://drive.google.com/drive/u/1/folders/1U_in35zSb837xCp_fp31I0vOmb36QguL
......@@ -143,6 +151,7 @@ export class ProcedureSpecifiqueMachine extends CaminoMachine<ProcedureSpecifiqu
interface ProcedureSpecifiqueContext extends CaminoCommonContext {
concurrence: 'inconnu' | { amIFirst: true } | { amIFirst: false; demarcheConcurrenteVisibilite: DemarcheVisibilite }
hasTitreFrom: 'inconnu' | boolean
demandeInformationEnCours: boolean
}
const defaultDemarcheStatut = DemarchesStatutsIds.EnConstruction
const procedureSpecifiqueMachine = (titreTypeId: TitreTypeId, demarcheTypeId: DemarcheTypeId) =>
......@@ -157,6 +166,8 @@ const procedureSpecifiqueMachine = (titreTypeId: TitreTypeId, demarcheTypeId: De
}
return canHaveMiseEnConcurrence(demarcheTypeId, context.hasTitreFrom)
},
isDemarcheEnInstruction: ({ context }) => context.demarcheStatut === DemarchesStatutsIds.EnInstruction,
isDemandeInformationEnCours: ({ context }) => context.demandeInformationEnCours,
isPremiereDemandePourMiseEnConcurrence: ({ context }) => {
if (context.concurrence === 'inconnu') {
throw new Error("concurrence n'est pas initialisé")
......@@ -188,12 +199,37 @@ const procedureSpecifiqueMachine = (titreTypeId: TitreTypeId, demarcheTypeId: De
visibilite: 'confidentielle',
concurrence: 'inconnu',
hasTitreFrom: 'inconnu',
demandeInformationEnCours: false,
},
on: {
CLASSER_SANS_SUITE: {
guard: 'isDemarcheEnInstruction',
target: '.finDeMachine',
actions: assign({
demarcheStatut: DemarchesStatutsIds.ClasseSansSuite,
}),
},
DESISTER_PAR_LE_DEMANDEUR: {
guard: 'isDemarcheEnInstruction',
target: '.finDeMachine',
actions: assign({
demarcheStatut: DemarchesStatutsIds.Desiste,
}),
},
DEMANDER_INFORMATION: {
guard: and(['isDemarcheEnInstruction', not('isDemandeInformationEnCours')]),
actions: assign({ demandeInformationEnCours: true }),
},
RECEVOIR_INFORMATION: {
guard: and(['isDemarcheEnInstruction', 'isDemandeInformationEnCours']),
actions: assign({ demandeInformationEnCours: false }),
},
},
states: {
demandeAFaire: {
on: {
FAIRE_DEMANDE: {
target: 'depotDeLaDemandeAFaire',
target: 'enregistrementDeLaDemandeAFaire',
actions: assign({
demarcheStatut: DemarchesStatutsIds.EnInstruction,
concurrence: ({ event }) => event.concurrence,
......@@ -202,9 +238,9 @@ const procedureSpecifiqueMachine = (titreTypeId: TitreTypeId, demarcheTypeId: De
},
},
},
depotDeLaDemandeAFaire: {
enregistrementDeLaDemandeAFaire: {
on: {
DEPOSER_DEMANDE: 'recevabiliteOuInformationDuPrefetEtCollectivitesAFaire',
ENREGISTRER_DEMANDE: 'recevabiliteOuInformationDuPrefetEtCollectivitesAFaire',
},
},
......
......@@ -4,8 +4,10 @@ import { ITitreDemarche } from '../../types'
import { titreDemarcheSortAsc } from '../utils/titre-elements-sort-asc'
import { titreEtapesSortAscByOrdre } from '../utils/titre-etapes-sort'
import { isDemarcheTypeOctroi } from 'camino-common/src/static/demarchesTypes'
import { ETAPES_TYPES } from 'camino-common/src/static/etapesTypes'
import { CaminoDate } from 'camino-common/src/date'
export const titreDateDemandeFind = (titreDemarches: ITitreDemarche[]) => {
export const titreDateDemandeFind = (titreDemarches: ITitreDemarche[]): CaminoDate | null => {
// trouve la démarche génératrice du titre
// - première démarche d'octroi ou mutation partielle
const titreDemarchesSorted = titreDemarcheSortAsc(titreDemarches)
......@@ -17,11 +19,9 @@ export const titreDateDemandeFind = (titreDemarches: ITitreDemarche[]) => {
// alors retourne null
if (!titreDemarche || !titreDemarche.etapes!.length) return null
// dans la démarche génératrice, trouve
// - la demande déposée
// - ou l'enregistrement de la demande (pour les anciennes ARM)
// dans la démarche génératrice, trouve l'enregistrement de la demande
const titreEtapesSorted = titreEtapesSortAscByOrdre(titreDemarche.etapes!)
const titreEtape = titreEtapesSorted.find(te => te.typeId === 'mdp' || te.typeId === 'men')
const titreEtape = titreEtapesSorted.find(te => te.typeId === ETAPES_TYPES.enregistrementDeLaDemande)
// si
// - il n'y a pas d'étape de dépôt ou d'enregistrement de la demande
......
......@@ -577,7 +577,7 @@ describe("publicité d'une démarche", () => {
demarcheDateDebut: toCaminoDate('2020-01-01'),
demarcheDateFin: toCaminoDate('2021-01-01'),
id: newDemarcheId(),
etapes: etapesBuild([{ typeId: 'mdp', statutId: 'fai', date: toCaminoDate('2017-01-01'), isBrouillon: ETAPE_IS_NOT_BROUILLON }]),
etapes: etapesBuild([{ typeId: 'men', statutId: 'fai', date: toCaminoDate('2017-01-01'), isBrouillon: ETAPE_IS_NOT_BROUILLON }]),
titreId: newTitreId('titreId'),
},
'arm'
......@@ -592,7 +592,7 @@ describe("publicité d'une démarche", () => {
id: newDemarcheId(),
etapes: etapesBuild([
{ typeId: 'mfr', statutId: 'fai', date: toCaminoDate('2020-01-01'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'mdp', statutId: 'fai', date: toCaminoDate('2020-01-02'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'men', statutId: 'fai', date: toCaminoDate('2020-01-02'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
]),
titreId: newTitreId('titreId'),
},
......@@ -625,7 +625,7 @@ describe("publicité d'une démarche", () => {
id: newDemarcheId(),
etapes: etapesBuild([
{ typeId: 'mfr', statutId: 'fai', date: toCaminoDate('2020-01-01'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'mdp', statutId: 'fai', date: toCaminoDate('2020-01-02'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'men', statutId: 'fai', date: toCaminoDate('2020-01-02'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'mcr', statutId: 'fav', date: toCaminoDate('2020-01-03'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
]),
titreId: newTitreId('titreId'),
......@@ -661,7 +661,7 @@ describe("publicité d'une démarche", () => {
id: newDemarcheId(),
etapes: etapesBuild([
{ typeId: 'mfr', statutId: 'fai', date: toCaminoDate('2020-01-01'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'mdp', statutId: 'fai', date: toCaminoDate('2020-01-02'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'men', statutId: 'fai', date: toCaminoDate('2020-01-02'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'mcr', statutId: 'fav', date: toCaminoDate('2020-01-03'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'asc', statutId: 'fai', date: toCaminoDate('2020-01-05'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
]),
......@@ -695,7 +695,7 @@ describe("publicité d'une démarche", () => {
id: newDemarcheId(),
etapes: etapesBuild([
{ typeId: 'mfr', statutId: 'fai', date: toCaminoDate('2020-01-01'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'mdp', statutId: 'fai', date: toCaminoDate('2020-01-02'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'men', statutId: 'fai', date: toCaminoDate('2020-01-02'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'mcr', statutId: 'fav', date: toCaminoDate('2020-01-03'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'css', statutId: 'fai', date: toCaminoDate('2020-01-05'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
]),
......@@ -731,7 +731,7 @@ describe("publicité d'une démarche", () => {
id: newDemarcheId(),
etapes: etapesBuild([
{ typeId: 'mfr', statutId: 'fai', date: toCaminoDate('2020-01-01'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'mdp', statutId: 'fai', date: toCaminoDate('2020-01-02'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'men', statutId: 'fai', date: toCaminoDate('2020-01-02'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'des', statutId: 'fai', date: toCaminoDate('2020-01-05'), isBrouillon: ETAPE_IS_NOT_BROUILLON },
]),
titreId: newTitreId('titreId'),
......@@ -767,7 +767,7 @@ describe("publicité d'une démarche", () => {
demarcheDateFin: null,
etapes: etapesBuild([
{ typeId: 'mfr', isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'mdp', isBrouillon: ETAPE_IS_NOT_BROUILLON },
{ typeId: 'men', isBrouillon: ETAPE_IS_NOT_BROUILLON },
]),
titreId: newTitreId('titreId'),
},
......
......@@ -176,7 +176,7 @@ const titreDemarchePublicLectureFind = (
// Pour les PRM d’un titre en survie provisoire, les demandes de prolongations sont public
if (
titreTypeId === TITRES_TYPES_IDS.PERMIS_EXCLUSIF_DE_RECHERCHES_METAUX &&
titreEtape.typeId === ETAPES_TYPES.depotDeLaDemande &&
titreEtape.typeId === ETAPES_TYPES.enregistrementDeLaDemande &&
[DEMARCHES_TYPES_IDS.Prolongation1, DEMARCHES_TYPES_IDS.Prolongation2].includes(demarcheTypeId) &&
titreInModificationEnInstance([demarche])
) {
......
import { ITitreEtape, TitreEtapesTravauxTypes as Travaux } from '../../types'
import { titreDemarcheStatutIdFind } from './titre-demarche-statut-id-find'
import { DemarchesStatutsIds as Demarches, DemarcheStatutId } from 'camino-common/src/static/demarchesStatuts'
import { DemarchesStatutsIds as Demarches, DemarchesStatutsIds, DemarcheStatutId } from 'camino-common/src/static/demarchesStatuts'
import { newDemarcheId } from '../../database/models/_format/id-create'
import { toCaminoDate } from 'camino-common/src/date'
import { describe, expect, test } from 'vitest'
......@@ -101,7 +101,7 @@ describe("statut d'une démarche", () => {
date: toCaminoDate('2019-12-10'),
contenu: { arm: { mecanise: true, franchissements: 3 } },
},
{ typeId: 'mdp', statutId: 'fai', date: toCaminoDate('2019-12-11') },
{ typeId: 'men', statutId: 'fai', date: toCaminoDate('2019-12-11') },
{ typeId: 'pfd', statutId: 'fai', date: toCaminoDate('2019-12-13') },
{ typeId: 'dae', statutId: 'exe', date: toCaminoDate('2020-01-14') },
{ typeId: 'mcp', statutId: 'com', date: toCaminoDate('2020-01-23') },
......@@ -167,18 +167,18 @@ describe("statut d'une démarche", () => {
expect(titreDemarcheStatutIdFind('oct', etapesBuild([{ typeId: 'dex', statutId: 'rej' }]), 'pxm', newDemarcheId())).toEqual('rej')
})
test("une démarche d'octroi dont l'étape est men a le statut “en instruction", () => {
expect(titreDemarcheStatutIdFind('oct', etapesBuild([{ typeId: 'men' }]), 'pxm', newDemarcheId())).toEqual('ind')
test("une démarche d'octroi dont l'étape est men a le statut “déposé", () => {
expect(titreDemarcheStatutIdFind('oct', etapesBuild([{ typeId: 'men' }]), 'pxm', newDemarcheId())).toEqual(DemarchesStatutsIds.Depose)
})
test("une démarche d'octroi d'un titre ARM dont l'étape de mdp (statut fai) a le statut “en instruction”", () => {
test("une démarche d'octroi d'un titre ARM dont l'étape de men (statut fai) a le statut “en instruction”", () => {
expect(
titreDemarcheStatutIdFind(
'oct',
etapesBuild(
[
{ typeId: 'mfr', statutId: 'fai' },
{ typeId: 'mdp', statutId: 'fai' },
{ typeId: 'men', statutId: 'fai' },
],
'oct',
'arm'
......@@ -195,7 +195,7 @@ describe("statut d'une démarche", () => {
'oct',
etapesBuild([
{ typeId: 'mfr', statutId: 'fai' },
{ typeId: 'mdp', statutId: 'fai' },
{ typeId: 'men', statutId: 'fai' },
{ typeId: 'pfd', statutId: 'fai' },
{ typeId: 'mcp', statutId: 'com' },
]),
......@@ -247,10 +247,6 @@ describe("statut d'une démarche", () => {
expect(titreDemarcheStatutIdFind('oct', etapesBuild([{ typeId: 'des' }]), 'pxm', newDemarcheId())).toEqual('des')
})
test("une démarche d'octroi dont l'étape la plus récente est mdp (statut fai) a le statut “déposé”", () => {
expect(titreDemarcheStatutIdFind('oct', etapesBuild([{ typeId: 'mdp', statutId: 'fai' }]), 'pxm', newDemarcheId())).toEqual('dep')
})
test("une démarche d'octroi dont l'étape la plus récente est mfr a le statut “en construction”", () => {
expect(titreDemarcheStatutIdFind('oct', etapesBuild([{ typeId: 'mfr', statutId: 'fai', isBrouillon: ETAPE_IS_BROUILLON }]), 'pxm', newDemarcheId())).toEqual('eco')
})
......@@ -269,7 +265,7 @@ describe("statut d'une démarche", () => {
'oct',
etapesBuild([
{ typeId: 'mfr', statutId: 'fai', date: toCaminoDate('2021-02-25') },
{ typeId: 'mdp', statutId: 'fai', date: toCaminoDate('2021-02-26') },
{ typeId: 'men', statutId: 'fai', date: toCaminoDate('2021-02-26') },
{ typeId: 'pfd', statutId: 'fai', date: toCaminoDate('2020-09-03') },
{ typeId: 'mcp', statutId: 'com', date: toCaminoDate('2021-02-27') },
{ typeId: 'vfd', statutId: 'fai', date: toCaminoDate('2021-03-10') },
......@@ -290,7 +286,7 @@ describe("statut d'une démarche", () => {
'oct',
etapesBuild([
{ typeId: 'mfr', statutId: 'fai', date: toCaminoDate('2021-02-25') },
{ typeId: 'mdp', statutId: 'fai', date: toCaminoDate('2021-02-26') },
{ typeId: 'men', statutId: 'fai', date: toCaminoDate('2021-02-26') },
{ typeId: 'pfd', statutId: 'fai', date: toCaminoDate('2020-09-03') },
{ typeId: 'mcp', statutId: 'com', date: toCaminoDate('2021-02-27') },
{ typeId: 'vfd', statutId: 'fai', date: toCaminoDate('2021-03-10') },
......
......@@ -16,7 +16,6 @@ const titreEtapesDecisivesCommunesTypes: EtapeTypeId[] = ['css', 'abd', 'and']
const titreEtapesDecisivesDemandesTypes: EtapeTypeId[] = [
'mfr',
'mdp',
'men',
'meo',
'des',
......@@ -196,7 +195,6 @@ const titreDemarcheDemandeStatutIdFind = (titreDemarcheEtapes: Pick<ITitreEtape,
[ETAPES_TYPES.recevabiliteDeLaDemande, ETAPES_TYPES.decisionDeLAutoriteAdministrative].includes(titreEtapeRecent.typeId) ||
(titreTypeId === TITRES_TYPES_IDS.AUTORISATION_DE_RECHERCHE_METAUX &&
[
ETAPES_TYPES.depotDeLaDemande,
ETAPES_TYPES.enregistrementDeLaDemande,
ETAPES_TYPES.priseEnChargeParLOfficeNationalDesForets,
ETAPES_TYPES.completudeDeLaDemande,
......@@ -208,9 +206,9 @@ const titreDemarcheDemandeStatutIdFind = (titreDemarcheEtapes: Pick<ITitreEtape,
return DemarchesStatutsIds.EnInstruction
}
// - le type de l’étape est dépôt de la demande (mdp)
// - le type de l’étape est enregistrement de la demande (men)
// - il n’y a pas d’étape après
if (titreEtapeRecent.typeId === 'mdp') {
if (titreEtapeRecent.typeId === ETAPES_TYPES.enregistrementDeLaDemande) {
// - le statut de la démarche est “déposé”
return DemarchesStatutsIds.Depose
}
......