diff --git a/attached_assets/Pasted-ions-1-N-2501-Blanc-2-N-2502-Moins-de-1-2-3-4-5-3-N-1757358681155_1757358681156.txt b/attached_assets/Pasted-ions-1-N-2501-Blanc-2-N-2502-Moins-de-1-2-3-4-5-3-N-1757358681155_1757358681156.txt new file mode 100644 index 0000000..bded03b --- /dev/null +++ b/attached_assets/Pasted-ions-1-N-2501-Blanc-2-N-2502-Moins-de-1-2-3-4-5-3-N-1757358681155_1757358681156.txt @@ -0,0 +1,205 @@ +ions + + + + + '1. N°2501 - Blanc', + + '2. N°2502 - Moins de 1€ 2€ 3€ 4€ 5€', + + '3. N°2503 - Imbattables' + +] + +GET /api/user 304 in 64ms + +📋 PUBLICITIES RETURNED: { count: 29 } + +GET /api/publicities 304 in 164ms + +📢 [SERVER] User found: { username: 'admin', role: 'admin' } + +🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table + +🔍 [PRODUCTION] Raw messages from DB: 2 items: [ + + { + + id: 16, + + title: 'Mise à jour Prix', + + content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', + + type: 'success', + + storeId: null, + + createdBy: 'admin', + + createdAt: 2025-08-18T10:45:08.585Z + + }, + + { + + id: 8, + + title: 'Bon de Livraison', + + content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', + + type: 'info', + + storeId: null, + + createdBy: 'admin_local', + + createdAt: 2025-08-07T11:04:38.123Z + + } + +] + +🔍 [PRODUCTION] Looking for user with username: admin + +🔍 [PRODUCTION] Looking for user with username: admin_local + +🔍 [PRODUCTION] User search result: Found + +🔍 [PRODUCTION] User search result: Not found + +❌ [PRODUCTION] User not found with username: admin_local + +🎯 [PRODUCTION] Found announcements: 2 + +GET /api/announcements 304 in 67ms + +GET /api/user 304 in 4ms + +Orders API called with: { + + startDate: undefined, + + endDate: undefined, + + storeId: '1', + + userRole: 'admin' + +} + +🔍 Admin orders filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } + +Fetching all orders + +📢 [SERVER] Fetching announcements for user: admin_local environment: production + +Deliveries API called with: { + + startDate: undefined, + + endDate: undefined, + + storeId: '1', + + withBL: undefined, + + userRole: 'admin' + +} + +🔍 Admin deliveries filtering by store: { storeId: '1', groupIds: [ 1 ], role: 'admin' } + +Fetching all deliveries + +Customer Orders API called with: { groupIds: [ 1 ], userRole: 'admin' } + +📢 [SERVER] User found: { username: 'admin', role: 'admin' } + +🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table + +Customer Orders returned: 11 items + +GET /api/customer-orders 304 in 93ms + +🔍 [PRODUCTION] Raw messages from DB: 2 items: [ + + { + + id: 16, + + title: 'Mise à jour Prix', + + content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.', + + type: 'success', + + storeId: null, + + createdBy: 'admin', + + createdAt: 2025-08-18T10:45:08.585Z + + }, + + { + + id: 8, + + title: 'Bon de Livraison', + + content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.', + + type: 'info', + + storeId: null, + + createdBy: 'admin_local', + + createdAt: 2025-08-07T11:04:38.123Z + + } + +] + +🔍 [PRODUCTION] Looking for user with username: admin + +🔍 [PRODUCTION] Looking for user with username: admin_local + +🔗 PRODUCTION: getDeliveries() récupéré 82 livraisons avec relations + +Deliveries returned: 82 items + +GET /api/deliveries 304 in 156ms + +🔗 PRODUCTION: getOrders() récupéré 64 commandes avec relations + +Orders returned: 64 items + +🔍 [PRODUCTION] User search result: Found + +🔍 [PRODUCTION] User search result: Not found + +🎯 [PRODUCTION] Found announcements: 2 + +❌ [PRODUCTION] User not found with username: admin_local + +GET /api/orders 304 in 194ms + +GET /api/announcements 304 in 192ms + +GET /api/groups 304 in 92ms + +GET /api/user 304 in 4ms + +GET /api/suppliers 304 in 7ms + +🔍 Avoirs API called with: { groupIds: [ 1 ], userRole: 'admin' } + +📋 Avoirs returned: 1 items + +GET /api/avoirs 304 in 11ms + +HEAD /api/health 200 in 1ms + diff --git a/attached_assets/image_1757358672982.png b/attached_assets/image_1757358672982.png new file mode 100644 index 0000000..92acbba Binary files /dev/null and b/attached_assets/image_1757358672982.png differ diff --git a/client/src/pages/Avoirs.tsx b/client/src/pages/Avoirs.tsx index 2ce59b9..7eeb460 100644 --- a/client/src/pages/Avoirs.tsx +++ b/client/src/pages/Avoirs.tsx @@ -323,29 +323,33 @@ export default function Avoirs() { // Handle edit action const handleEdit = (avoir: Avoir) => { + if (!avoir || !avoir.id) return; + setSelectedAvoir(avoir); editForm.reset({ - supplierId: avoir.supplierId, - groupId: avoir.groupId, + supplierId: avoir.supplierId || 0, + groupId: avoir.groupId || 0, invoiceReference: avoir.invoiceReference || "", amount: avoir.amount, comment: avoir.comment || "", - commercialProcessed: avoir.commercialProcessed, - status: avoir.status as "En attente de demande" | "Demandé" | "Reçu", + commercialProcessed: avoir.commercialProcessed || false, + status: avoir.status || "En attente de demande", }); setIsEditDialogOpen(true); }; // Handle delete action const handleDelete = (avoir: Avoir) => { + if (!avoir || !avoir.id) return; + setSelectedAvoir(avoir); setIsDeleteDialogOpen(true); }; // Handle status change const handleStatusChange = (avoirId: number, newStatus: string) => { - const avoir = avoirs.find(a => a.id === avoirId); - if (avoir) { + const avoir = avoirs?.find(a => a?.id === avoirId); + if (avoir && avoir.supplierId && avoir.groupId) { editAvoirMutation.mutate({ id: avoirId, data: { @@ -1096,7 +1100,7 @@ export default function Avoirs() {