fix(transport) : intégration QUALIMAT — copie locale seulement après PATCH réussi (évite un état non persisté) (ERP-166)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 3m4s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m43s

This commit is contained in:
2026-06-17 16:01:45 +02:00
parent 40fdded7e2
commit c6259a96cd
2 changed files with 37 additions and 19 deletions
@@ -260,10 +260,27 @@ export function useCarrierForm() {
* § 2.5) : copie le nom, force la certification à « QUALIMAT » (lecture seule),
* pose la FK `qualimatCarrier` (IRI) et copie l'adresse (pour l'onglet Adresses).
* Si le transporteur existe déjà (post-POST, cas nominal de l'onglet), persiste
* la copie via un PATCH partiel `carrier:write:main`. La copie locale a lieu
* dans tous les cas. Retourne true si l'intégration a abouti.
* d'abord la copie via un PATCH partiel `carrier:write:main` : la copie locale
* (nom, certification figée « QUALIMAT », FK, adresse) n'est appliquée qu'en cas
* de succès, pour ne pas laisser l'UI dans un état QUALIMAT non sauvegardé si le
* PATCH échoue. Retourne true si l'intégration a abouti.
*/
async function applyQualimatSelection(row: QualimatCarrierRow): Promise<boolean> {
// Transporteur déjà créé : on persiste avant de refléter localement.
if (carrierId.value !== null) {
try {
await patchCarrier({
qualimatCarrier: row['@id'],
name: row.name,
certificationType: 'QUALIMAT',
})
}
catch (error) {
mainErrors.handleApiError(error, { fallbackMessage: t('transport.carriers.toast.error') })
return false
}
}
main.name = row.name ?? ''
main.certificationType = 'QUALIMAT'
main.qualimatCarrierIri = row['@id']
@@ -273,23 +290,7 @@ export function useCarrierForm() {
city: row.city ?? '',
street: row.address ?? '',
}
if (carrierId.value === null) {
return true
}
try {
await patchCarrier({
qualimatCarrier: row['@id'],
name: row.name,
certificationType: 'QUALIMAT',
})
return true
}
catch (error) {
mainErrors.handleApiError(error, { fallbackMessage: t('transport.carriers.toast.error') })
return false
}
return true
}
/**