diff --git a/client/src/pages/CustomerOrders.tsx b/client/src/pages/CustomerOrders.tsx index 3f9ac91..7bffa21 100644 --- a/client/src/pages/CustomerOrders.tsx +++ b/client/src/pages/CustomerOrders.tsx @@ -40,10 +40,12 @@ import { CustomerOrderForm } from "@/components/CustomerOrderForm"; import { CustomerOrderDetails } from "@/components/CustomerOrderDetails"; import { ConfirmationModal } from "@/components/ConfirmationModal"; import { useStore } from "@/components/Layout"; +import { usePermissions } from "@shared/permissions"; export default function CustomerOrders() { const { user } = useAuthUnified(); const { selectedStoreId } = useStore(); + const permissions = usePermissions(user?.role); const queryClient = useQueryClient(); const [showCreateModal, setShowCreateModal] = useState(false); const [showEditModal, setShowEditModal] = useState(false); @@ -63,7 +65,7 @@ export default function CustomerOrders() { }); // Fetch suppliers for filter - const { data: suppliers = [] } = useQuery({ + const { data: suppliers = [] } = useQuery({ queryKey: ['/api/suppliers'], }); @@ -78,8 +80,8 @@ export default function CustomerOrders() { mutationFn: (data: any) => apiRequest('/api/customer-orders', 'POST', data), onSuccess: () => { // Force refresh of the query with store context - queryClient.invalidateQueries({ predicate: (query) => query.queryKey[0]?.toString().includes('/api/customer-orders') }); - queryClient.refetchQueries({ predicate: (query) => query.queryKey[0]?.toString().includes('/api/customer-orders') }); + queryClient.invalidateQueries({ predicate: (query) => query.queryKey[0]?.toString()?.includes('/api/customer-orders') ?? false }); + queryClient.refetchQueries({ predicate: (query) => query.queryKey[0]?.toString()?.includes('/api/customer-orders') ?? false }); setShowCreateModal(false); toast({ title: "Succès", @@ -100,7 +102,7 @@ export default function CustomerOrders() { mutationFn: ({ id, data }: { id: number; data: any }) => apiRequest(`/api/customer-orders/${id}`, 'PUT', data), onSuccess: () => { - queryClient.invalidateQueries({ predicate: (query) => query.queryKey[0]?.toString().includes('/api/customer-orders') }); + queryClient.invalidateQueries({ predicate: (query) => query.queryKey[0]?.toString()?.includes('/api/customer-orders') ?? false }); setShowEditModal(false); setSelectedOrder(null); toast({ @@ -121,7 +123,7 @@ export default function CustomerOrders() { const deleteMutation = useMutation({ mutationFn: (id: number) => apiRequest(`/api/customer-orders/${id}`, 'DELETE'), onSuccess: () => { - queryClient.invalidateQueries({ predicate: (query) => query.queryKey[0]?.toString().includes('/api/customer-orders') }); + queryClient.invalidateQueries({ predicate: (query) => query.queryKey[0]?.toString()?.includes('/api/customer-orders') ?? false }); setShowDeleteModal(false); setSelectedOrder(null); toast({ @@ -143,7 +145,7 @@ export default function CustomerOrders() { mutationFn: ({ id, status }: { id: number; status: string }) => apiRequest(`/api/customer-orders/${id}`, 'PUT', { status }), onSuccess: () => { - queryClient.invalidateQueries({ predicate: (query) => query.queryKey[0]?.toString().includes('/api/customer-orders') }); + queryClient.invalidateQueries({ predicate: (query) => query.queryKey[0]?.toString()?.includes('/api/customer-orders') ?? false }); toast({ title: "Succès", description: "Statut de la commande mis à jour", @@ -156,7 +158,7 @@ export default function CustomerOrders() { mutationFn: ({ id, customerNotified }: { id: number; customerNotified: boolean }) => apiRequest(`/api/customer-orders/${id}`, 'PUT', { customerNotified }), onSuccess: () => { - queryClient.invalidateQueries({ predicate: (query) => query.queryKey[0]?.toString().includes('/api/customer-orders') }); + queryClient.invalidateQueries({ predicate: (query) => query.queryKey[0]?.toString()?.includes('/api/customer-orders') ?? false }); toast({ title: "Succès", description: "Statut de notification mis à jour", @@ -685,10 +687,12 @@ export default function CustomerOrders() { Gestion des commandes clients et étiquettes

- + {permissions.canCreate('customer-orders') && ( + + )} @@ -847,7 +851,7 @@ export default function CustomerOrders() { )} - {user?.role === 'admin' && ( + {permissions.canDelete('customer-orders') && (