fix(front) : RIB neuf vide soumis (422 inline) quand c'est le seul RIB restant
Onglet Comptabilite : on ne saute une amorce RIB neuve vide QUE s'il reste un autre RIB soumettable (garde hasSubmittableRib, miroir de l'onglet Contacts). Sinon — ex. unique RIB existant supprime puis remplace par un bloc vide en LCR — le bloc vide est soumis et le back renvoie une 422 NotBlank mappee en rouge sous label/bic/iban, au lieu de laisser le DELETE echouer en « dernier RIB d'une LCR » (message plat sans propertyPath). L'ancien RIB est preserve (arret avant le DELETE). Applique creation + edition, fournisseur + client.
This commit is contained in:
@@ -841,7 +841,11 @@ async function submitAccounting(): Promise<void> {
|
||||
accountingErrors.clearErrors()
|
||||
try {
|
||||
// 1) POST/PATCH des RIB d'abord (erreurs inline par ligne, tous les blocs
|
||||
// tentes). Seuls les blocs RIB TOTALEMENT vides (amorce neuve) sont ignores.
|
||||
// tentes). On ne saute une amorce neuve vide QUE s'il reste un autre RIB
|
||||
// soumettable : sinon (ex. l'unique RIB existant supprime, remplace par un
|
||||
// bloc vide), on la soumet pour declencher la 422 NotBlank inline plutot que
|
||||
// de laisser le DELETE echouer en « dernier RIB d'une LCR » (message plat).
|
||||
const hasSubmittableRib = ribs.value.some(r => r.id !== null || !isRibBlank(r))
|
||||
const ribHasError = await submitRows(
|
||||
ribs.value,
|
||||
ribErrors,
|
||||
@@ -862,7 +866,7 @@ async function submitAccounting(): Promise<void> {
|
||||
}
|
||||
},
|
||||
error => showError(error),
|
||||
rib => rib.id === null && isRibBlank(rib),
|
||||
rib => hasSubmittableRib && rib.id === null && isRibBlank(rib),
|
||||
)
|
||||
if (ribHasError) return
|
||||
|
||||
|
||||
@@ -782,8 +782,10 @@ async function submitAccounting(): Promise<void> {
|
||||
tabSubmitting.value = true
|
||||
accountingErrors.clearErrors()
|
||||
try {
|
||||
// 1) POST/PATCH des RIB d'abord (erreurs inline par ligne). Seuls les blocs
|
||||
// RIB TOTALEMENT vides (amorce neuve) sont ignores.
|
||||
// 1) POST/PATCH des RIB d'abord (erreurs inline par ligne). On ne saute une
|
||||
// amorce neuve vide QUE s'il reste un autre RIB soumettable : sinon (LCR sans
|
||||
// aucun RIB rempli) on la soumet pour declencher la 422 NotBlank inline.
|
||||
const hasSubmittableRib = ribs.value.some(r => r.id !== null || !isRibBlank(r))
|
||||
const ribHasError = await submitRows(
|
||||
ribs.value,
|
||||
ribErrors,
|
||||
@@ -802,7 +804,7 @@ async function submitAccounting(): Promise<void> {
|
||||
}
|
||||
},
|
||||
error => toast.error({ title: t('commercial.suppliers.toast.error'), message: apiErrorMessage(error) }),
|
||||
rib => rib.id === null && isRibBlank(rib),
|
||||
rib => hasSubmittableRib && rib.id === null && isRibBlank(rib),
|
||||
)
|
||||
if (ribHasError) return
|
||||
|
||||
|
||||
Reference in New Issue
Block a user