From 45cb5c834cf3493dca78704eefa15debaec561f9 Mon Sep 17 00:00:00 2001 From: tristan Date: Mon, 15 Jun 2026 15:08:48 +0000 Subject: [PATCH] fix(front) : suppression des sous-ressources (contacts / adresses / RIB) en modification (ERP-172) (#109) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Contexte (ERP-172) Sur les ecrans de **modification**, supprimer un bloc Contact / Adresse / RIB ne supprimait pas la sous-ressource cote serveur : - **M1 / M2** : DELETE differe au clic « Enregistrer » de l'onglet -> ne partait jamais si l'utilisateur ne re-validait pas. - **M3** : aucun DELETE (`splice` local uniquement). ## Correctifs ### 1. DELETE immediat des sous-ressources - Nouveau helper partage `frontend/shared/utils/collectionRow.ts` (`removeCollectionRow`) + tests Vitest. - A la confirmation de la modale : bloc existant (`id` en base) -> `DELETE` immediat ; bloc jamais persiste -> retrait local ; echec serveur (ex. 409 dernier RIB d'une LCR) -> bloc conserve + message back. - Branche sur M1 / M2 / M3 (contacts / adresses / RIB). Suppression du mecanisme differe (`removed*Ids` + boucles dans `submit*`) devenu mort. ### 2. Affichage de la poubelle unifie (`isRowRemovable`) Regle identique sur les 3 modules : poubelle visible sur un bloc **seulement s'il reste un autre bloc deja enregistre** (`id` en base). - Tant que rien n'est enregistre -> aucune poubelle (plus de suppression d'un simple brouillon non valide). - On peut jeter un brouillon non enregistre s'il reste un bloc enregistre. - On ne peut jamais supprimer son dernier bloc enregistre. - Applique aux ecrans **new + edit** des 3 modules (contacts / adresses / RIB). ## Tests - Helper couvert par Vitest (`removeCollectionRow` + `isRowRemovable`). - `make nuxt-test` : 480 tests OK. `make nuxt-lint` : OK. ## A verifier (golden path) Sur les 3 modules : supprimer un bloc existant -> `DELETE` part immediatement -> reload -> le bloc a disparu ; la poubelle n'apparait qu'avec un 2e bloc deja enregistre. Reviewed-on: https://gitea.malio.fr/MALIO-DEV/Starseed/pulls/109 Co-authored-by: tristan Co-committed-by: tristan --- .../commercial/pages/clients/[id]/edit.vue | 109 ++++++++-------- .../modules/commercial/pages/clients/new.vue | 11 +- .../commercial/pages/suppliers/[id]/edit.vue | 104 +++++++-------- .../commercial/pages/suppliers/new.vue | 11 +- .../technique/composables/useProviderForm.ts | 61 +++++++-- .../technique/pages/providers/[id]/edit.vue | 11 +- .../modules/technique/pages/providers/new.vue | 11 +- .../utils/__tests__/collectionRow.test.ts | 121 ++++++++++++++++++ frontend/shared/utils/collectionRow.ts | 79 ++++++++++++ 9 files changed, 377 insertions(+), 141 deletions(-) create mode 100644 frontend/shared/utils/__tests__/collectionRow.test.ts create mode 100644 frontend/shared/utils/collectionRow.ts diff --git a/frontend/modules/commercial/pages/clients/[id]/edit.vue b/frontend/modules/commercial/pages/clients/[id]/edit.vue index 75c477a..9604965 100644 --- a/frontend/modules/commercial/pages/clients/[id]/edit.vue +++ b/frontend/modules/commercial/pages/clients/[id]/edit.vue @@ -157,12 +157,16 @@