diff --git a/client/src/pages/Avoirs.tsx b/client/src/pages/Avoirs.tsx index 6bf4ee4..bf3a3a4 100644 --- a/client/src/pages/Avoirs.tsx +++ b/client/src/pages/Avoirs.tsx @@ -356,12 +356,24 @@ export default function Avoirs() { } }); + // Calculate default group ID based on user role + const getDefaultGroupId = () => { + if ((user as any)?.role === 'admin') { + // Admin : groupe 1 par défaut + return 1; + } else { + // Utilisateurs : leur groupe assigné par défaut + const userGroupIds = (user as any)?.userGroups?.map((ug: any) => ug.groupId) || []; + return userGroupIds.length > 0 ? userGroupIds[0] : 0; + } + }; + // Initialize create form const form = useForm({ resolver: zodResolver(avoirSchema), defaultValues: { supplierId: 0, - groupId: 0, + groupId: getDefaultGroupId(), invoiceReference: "", amount: undefined, comment: "", @@ -446,6 +458,16 @@ export default function Avoirs() { // Handle status change const handleStatusChange = (avoirId: number, newStatus: string) => { + // Empêcher les managers de mettre le statut en "Reçu" + if ((user as any)?.role === 'manager' && newStatus === 'Reçu') { + toast({ + title: "Accès refusé", + description: "Vous n'avez pas les permissions pour marquer un avoir comme reçu", + variant: "destructive", + }); + return; + } + const avoir = avoirs?.find(a => a?.id === avoirId); if (avoir && avoir.supplierId && avoir.groupId) { editAvoirMutation.mutate({ @@ -969,7 +991,9 @@ export default function Avoirs() { En attente de demande Demandé - Reçu + {(user as any)?.role !== 'manager' && ( + Reçu + )} @@ -1024,8 +1048,8 @@ export default function Avoirs() {
- {/* Upload pour avoirs "Reçu" */} - {avoir?.status === 'Reçu' && ( + {/* Upload pour avoirs "Reçu" - interdit aux managers */} + {avoir?.status === 'Reçu' && (user as any)?.role !== 'manager' && (