Improve handling of invoice amounts to ensure correct data processing

Refactor the `amount` field validation in `Avoirs.tsx` to use a Zod transform for robust string-to-number conversion and validation, handling empty, null, undefined, NaN, and non-positive values.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 9fcf4b21-eb0c-4e53-a567-e2ce4a6ad869
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/9fcf4b21-eb0c-4e53-a567-e2ce4a6ad869/KZQgDPI
This commit is contained in:
michaelschal committed 2025-09-08 16:25:02 +00:00
1 parent 558e336188
commit 45fed62a7a
2 files changed
+13 -4

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

+13 -4
View File
@@ -71,10 +71,19 @@ const avoirSchema = z.object({
supplierId: z.coerce.number().min(1, "Veuillez sélectionner un fournisseur"),
groupId: z.coerce.number().min(1, "Veuillez sélectionner un magasin"),
invoiceReference: z.string().optional(),
amount: z.union([
z.string().length(0).transform(() => undefined),
z.coerce.number().positive()
]).optional(),
amount: z.string().transform((val) => {
if (val === "" || val === null || val === undefined) {
return undefined;
}
const num = parseFloat(val);
if (isNaN(num)) {
throw new Error("Montant invalide");
}
if (num <= 0) {
throw new Error("Le montant doit être supérieur à 0");
}
return num;
}).optional(),
comment: z.string().optional(),
commercialProcessed: z.boolean().optional(),
status: z.enum(["En attente de demande", "Demandé", "Reçu"]).optional(),