refactor(transport) : supprime les reliquats multi-adresses — colonne position, dead code front, docblocks 1:n (ERP-172)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 3m20s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m39s

This commit is contained in:
2026-06-18 10:38:25 +02:00
parent 80b3741f64
commit d304b74289
8 changed files with 52 additions and 51 deletions
-2
View File
@@ -631,8 +631,6 @@
"street": "Adresse",
"streetComplement": "Adresse complémentaire",
"streetNotFound": "Adresse introuvable ? Saisissez-la directement.",
"add": "Nouvelle adresse",
"remove": "Supprimer l'adresse",
"degraded": "Service d'adresse indisponible : saisie de la ville et de l'adresse en mode libre."
},
"contact": {
@@ -1,15 +1,6 @@
<template>
<!-- Adresse UNIQUE par transporteur (ERP-172) : un seul bloc, jamais supprimable. -->
<div class="relative grid grid-cols-4 gap-x-[44px] gap-y-4 bg-white py-4 pl-[28px] pr-[60px] shadow-[0_4px_4px_0_rgba(0,0,0,0.25)]">
<!-- Suppression : modal de confirmation cote parent. -->
<MalioButtonIcon
v-if="removable && !readonly"
icon="mdi:delete-outline"
variant="ghost"
button-class="absolute top-3 right-3"
v-bind="{ ariaLabel: t('transport.carriers.form.address.remove') }"
@click="$emit('remove')"
/>
<!-- Pays : prerempli « France » (RG-4.05). -->
<MalioSelect
:model-value="model.country"
@@ -114,7 +105,6 @@ const props = defineProps<{
modelValue: CarrierAddressFormDraft
/** Pays disponibles (France par defaut). */
countryOptions: RefOption[]
removable?: boolean
readonly?: boolean
/** Erreurs serveur 422 de cette ligne, indexees par champ (ERP-101). */
errors?: Record<string, string>
@@ -122,7 +112,6 @@ const props = defineProps<{
const emit = defineEmits<{
'update:modelValue': [value: CarrierAddressFormDraft]
'remove': []
/** Emis une fois quand le service d'autocompletion bascule en indisponible. */
'degraded': []
}>()
@@ -137,7 +137,6 @@
<CarrierAddressBlock
:model-value="address"
:country-options="countryOptions"
:removable="false"
:errors="addressErrors"
@update:model-value="(v) => address = v"
@degraded="onAddressDegraded"
@@ -174,7 +174,6 @@
<CarrierAddressBlock
:model-value="address"
:country-options="countryOptions"
:removable="false"
:readonly="isQualimat || isValidated('addresses')"
:errors="addressErrors"
@update:model-value="(v) => address = v"
@@ -8,18 +8,7 @@
import type { CarrierAddressFormDraft } from '~/modules/transport/types/carrierForm'
/**
* RG-4.05 : gate du bouton « + Nouvelle adresse ». Une adresse est « complète »
* (donc on autorise l'ajout d'un nouveau bloc) dès qu'elle porte un code postal,
* une ville ET une rue. Les RG conditionnelles (obligatoire si affrété) restent
* validées par le back (422 inline) — ce gate empêche seulement d'empiler des
* blocs vides.
*/
export function isCarrierAddressValid(address: CarrierAddressFormDraft): boolean {
return Boolean(address.postalCode?.trim() && address.city?.trim() && address.street?.trim())
}
/**
* Payload de la sous-ressource addresses (groupe `carrier:write:addresses`). Les
* Payload de la sous-ressource address (groupe `carrier:write:addresses`). Les
* scalaires sont nullable côté entité : on envoie `null` quand le champ est vide
* (le `CarrierAddressProcessor` re-valide la présence si affrété — RG-4.05 — et
* renvoie une 422 par champ).