fix(commercial) : merge pays embed dans countryOptions (clients) + desc migration (ERP-116)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m4s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m9s

- edit.vue : countryOptions merge la valeur country deja stockee sur chaque
  adresse, comme les autres selects de l'ecran (resilience ERP-102 : le select
  ne se vide plus si /countries echoue ou si un pays est hors referentiel).
- new.vue : France garantie en fallback dans les options si /countries echoue
  (coherent avec la preselection par defaut du draft d'adresse).
- migration : getDescription corrigee (7 pays seedes, Suisse incluse).
This commit is contained in:
Matthieu
2026-06-09 10:52:36 +02:00
parent c874f41ca9
commit 4b4a1f830c
3 changed files with 23 additions and 5 deletions
@@ -556,8 +556,19 @@ const contactOptions = computed<RefOption[]>(() =>
// Pays : referentiel `country` charge via l'API (ERP-116), en remplacement de
// l'ancienne liste codee en dur. Valeur = nom du pays (l'adresse stocke
// `country` en chaine libre, donc value === label).
const countryOptions = computed<RefOption[]>(() => referentials.countries.value)
// `country` en chaine libre, donc value === label). On merge la valeur deja
// stockee sur chaque adresse (embed) — comme les autres selects de cet ecran —
// pour ne pas vider le select si `/countries` echoue (resilience ERP-102) ou si
// un pays historique n'appartient pas au referentiel.
const embedCountryOptions = computed<RefOption[]>(() =>
mergeOptions([], (client.value?.addresses ?? [])
.map(a => a.country)
.filter((c): c is string => !!c)
.map(c => ({ value: c, label: c }))),
)
const countryOptions = computed<RefOption[]>(() =>
mergeOptions(referentials.countries.value, embedCountryOptions.value),
)
const relationOptions = computed<RefOption[]>(() => [
{ value: 'distributeur', label: t('commercial.clients.form.main.relationDistributor') },
@@ -785,8 +785,15 @@ const contactOptions = computed<RefOption[]>(() =>
// Pays disponibles : referentiel `country` charge via l'API (ERP-116), en
// remplacement de l'ancienne liste codee en dur. France reste preselectionnee
// par defaut sur chaque adresse (cf. valeur initiale du draft d'adresse).
const countryOptions = computed<RefOption[]>(() => referentials.countries.value)
// par defaut sur chaque adresse (cf. valeur initiale du draft d'adresse) : on
// garantit donc sa presence en fallback si `/countries` echoue (resilience
// ERP-102), pour ne pas afficher un select vide sur une valeur deja soumise.
const countryOptions = computed<RefOption[]>(() => {
const list = referentials.countries.value
return list.some(c => c.value === 'France')
? list
: [{ value: 'France', label: 'France' }, ...list]
})
// Type d'adresse (Select) obligatoire + RG-1.10 (>= 1 site) + RG-1.11 (email
// facturation si Facturation) sur chaque adresse.