From 07ed57f28389dd11a59f57dc036477cb0b303fc3 Mon Sep 17 00:00:00 2001 From: tristan Date: Wed, 17 Jun 2026 14:34:46 +0200 Subject: [PATCH] =?UTF-8?q?feat(transport)=20:=20contenant=20du=20formulai?= =?UTF-8?q?re=20principal=20en=20radios=20centr=C3=A9s=20(Benne=20par=20d?= =?UTF-8?q?=C3=A9faut)=20(ERP-170)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__tests__/useCarrierForm.test.ts | 6 ++- .../transport/pages/carriers/[id]/edit.vue | 36 +++++++++------ .../modules/transport/pages/carriers/new.vue | 45 ++++++++++--------- .../modules/transport/types/carrierForm.ts | 3 +- 4 files changed, 55 insertions(+), 35 deletions(-) diff --git a/frontend/modules/transport/composables/__tests__/useCarrierForm.test.ts b/frontend/modules/transport/composables/__tests__/useCarrierForm.test.ts index 4050ab4..cfda09e 100644 --- a/frontend/modules/transport/composables/__tests__/useCarrierForm.test.ts +++ b/frontend/modules/transport/composables/__tests__/useCarrierForm.test.ts @@ -111,6 +111,8 @@ describe('useCarrierForm', () => { form.main.name = 'Acme' form.main.certificationType = 'GMP_PLUS' form.main.isChartered = true + // Annule le défaut « BENNE » pour vérifier la garde « contenant obligatoire ». + form.main.containerType = null const created = await form.submitMain() @@ -323,16 +325,18 @@ describe('useCarrierForm — champs conditionnels (ERP-166)', () => { }) }) - it('RG-4.03 affrété mais champs vides : omis du payload (422 NotBlank back)', () => { + it('RG-4.03 affrété, indexation/volume vides : omis du payload (containerType garde son défaut BENNE)', () => { const form = useCarrierForm() form.main.name = 'Acme' form.main.certificationType = 'GMP_PLUS' form.main.isChartered = true + // indexation / volume vides → omis (422 NotBlank back) ; containerType défaut « BENNE » envoyé. expect(form.buildMainPayload()).toEqual({ name: 'Acme', certificationType: 'GMP_PLUS', isChartered: true, + containerType: 'BENNE', }) }) diff --git a/frontend/modules/transport/pages/carriers/[id]/edit.vue b/frontend/modules/transport/pages/carriers/[id]/edit.vue index 8af2b41..d4a6588 100644 --- a/frontend/modules/transport/pages/carriers/[id]/edit.vue +++ b/frontend/modules/transport/pages/carriers/[id]/edit.vue @@ -73,15 +73,29 @@ :error="mainErrors.errors.indexationRate" @update:model-value="onIndexationInput" /> - + +
+
+ + +
+

{{ mainErrors.errors.containerType }}

+
(() => { return codes.map(code => ({ value: code, label: t(`transport.carriers.certification.${code}`) })) }) -const CONTAINER_TYPES = ['BENNE', 'FOND_MOUVANT'] as const -const containerOptions = computed(() => - CONTAINER_TYPES.map(code => ({ value: code, label: t(`transport.carriers.containerType.${code}`) })), -) const TAB_ICONS: Record = { addresses: 'mdi:map-marker-outline', diff --git a/frontend/modules/transport/pages/carriers/new.vue b/frontend/modules/transport/pages/carriers/new.vue index e747ead..4d92fea 100644 --- a/frontend/modules/transport/pages/carriers/new.vue +++ b/frontend/modules/transport/pages/carriers/new.vue @@ -101,17 +101,31 @@ @update:model-value="onIndexationInput" /> - - + +
+
+ + +
+

{{ mainErrors.errors.containerType }}

+
hasQualimatSearch.value ? t('transport.carriers.form.qualimat.empty') : t('transport.carriers.form.qualimat.searchHint')) -// Contenant (RG-4.03) : Benne / Fond mouvant — select simple. -const CONTAINER_TYPES = ['BENNE', 'FOND_MOUVANT'] as const - -const containerOptions = computed(() => - CONTAINER_TYPES.map(code => ({ - value: code, - label: t(`transport.carriers.containerType.${code}`), - })), -) // Icone (Iconify) affichee dans chaque onglet, par cle. const TAB_ICONS: Record = { diff --git a/frontend/modules/transport/types/carrierForm.ts b/frontend/modules/transport/types/carrierForm.ts index b31db2d..d1420d2 100644 --- a/frontend/modules/transport/types/carrierForm.ts +++ b/frontend/modules/transport/types/carrierForm.ts @@ -40,7 +40,8 @@ export function emptyCarrierMain(): CarrierMainDraft { certificationType: null, isChartered: false, indexationRate: '', - containerType: null, + // Défaut métier : Benne pré-sélectionné (radio du formulaire principal). + containerType: 'BENNE', volumeM3: '', liotPlates: '', dischargeDocumentIri: null,