Merge pull request #406 from R0m1k3/1.1

1.1
This commit is contained in:
LogiFlow authored and GitHub committed 2025-09-08 22:01:27 +02:00
commit 84e2086324
3 files changed
+22 -6

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

+21 -5
View File
@@ -81,13 +81,12 @@ const avoirSchema = z.object({
z.undefined().transform(() => undefined),
z.literal("").transform(() => undefined),
z.string().transform((val) => {
if (val.trim() === '') return undefined; // Permettre les champs vides
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");
}
// Supprimer la restriction > 0 pour permettre zéro et les montants négatifs (avoirs)
return num;
})
]).optional(),
@@ -454,7 +453,15 @@ export default function Avoirs() {
}
}
// Recharger les avoirs pour voir les changements
// ✅ Mettre à jour l'état local immédiatement pour affichage instantané
setAvoirVerificationResults(prev => ({
...prev,
[avoirId]: { exists: true, fromCache: true, permanent: true, validated: true }
}));
console.log('✅ Avoir validé - État local mis à jour:', avoirId);
// Recharger les avoirs pour voir les changements en base
queryClient.invalidateQueries({ queryKey: ['/api/avoirs'] });
toast({
@@ -477,7 +484,16 @@ export default function Avoirs() {
verified: false
});
// Recharger les avoirs pour voir les changements
// ✅ Retirer de l'état local immédiatement
setAvoirVerificationResults(prev => {
const updated = { ...prev };
delete updated[avoirId]; // Supprimer complètement l'entrée
return updated;
});
console.log('✅ Avoir dévalidé - État local mis à jour:', avoirId);
// Recharger les avoirs pour voir les changements en base
queryClient.invalidateQueries({ queryKey: ['/api/avoirs'] });
toast({
+1 -1
View File
@@ -585,7 +585,7 @@ export const insertAvoirSchema = createInsertSchema(avoirs).omit({
processedAt: true,
}).extend({
status: z.enum(["En attente de demande", "Demandé", "Reçu"]).default("En attente de demande"),
amount: z.coerce.number().refine(val => val !== 0, "Le montant ne peut pas être zéro").optional(), // Montant optionnel, positif ou négatif (mais pas zéro)
amount: z.coerce.number().optional().nullable(), // Montant optionnel, peut être vide, zéro, positif ou négatif
invoiceReference: z.string().optional(), // Référence facture optionnelle
comment: z.string().optional(),
commercialProcessed: z.boolean().default(false),