diff --git a/src/components/orders/OrderDetailPanel.jsx b/src/components/orders/OrderDetailPanel.jsx index ccaac29..020bdfb 100644 --- a/src/components/orders/OrderDetailPanel.jsx +++ b/src/components/orders/OrderDetailPanel.jsx @@ -39,39 +39,41 @@ const renderList = (values) => { const renderValue = (value) => value || "Нет данных"; const parseOrderList = (order) => { - if (!order) return { items: [], debug: "order is null" }; + if (!order) return []; - // Try source_orders first (from 1C exchange data) - if (order.sourceOrders) { - let parsed = order.sourceOrders; - let debugInfo = "sourceOrders exists, type: " + typeof parsed; - // If it's a string, try to parse JSON + // Try orderList first (Supabase JSONB array of positions) + if (order.orderList) { + let parsed = order.orderList; if (typeof parsed === 'string') { - try { - parsed = JSON.parse(parsed); - debugInfo += ", parsed JSON"; - } catch (e) { - debugInfo += ", JSON parse failed: " + e.message; - return { items: [], debug: debugInfo }; - } + try { parsed = JSON.parse(parsed); } catch { /* ignore */ } } - // Now parsed should be an array - if (Array.isArray(parsed) && parsed.length > 0) { - debugInfo += ", is array, length: " + parsed.length; - debugInfo += ", first keys: " + Object.keys(parsed[0]).join(", "); - // If first item has orderList, return it - if (parsed[0].orderList && Array.isArray(parsed[0].orderList)) { - return { items: parsed[0].orderList, debug: debugInfo + ", returning orderList" }; - } - debugInfo += ", no orderList found"; - return { items: parsed, debug: debugInfo }; - } else { - debugInfo += ", not array or empty"; - } - return { items: [], debug: debugInfo }; + if (Array.isArray(parsed)) return parsed; } - return { items: [], debug: "sourceOrders is empty" }; + // Fallback: orderListStructured (JSONB with { orders: [...] }) + if (order.orderListStructured) { + let parsed = order.orderListStructured; + if (typeof parsed === 'string') { + try { parsed = JSON.parse(parsed); } catch { /* ignore */ } + } + if (parsed && Array.isArray(parsed.orders)) return parsed.orders; + } + + // Fallback: sourceOrders (1C exchange data) + if (order.sourceOrders) { + let parsed = order.sourceOrders; + if (typeof parsed === 'string') { + try { parsed = JSON.parse(parsed); } catch { /* ignore */ } + } + if (Array.isArray(parsed) && parsed.length > 0) { + if (parsed[0].orderList && Array.isArray(parsed[0].orderList)) { + return parsed[0].orderList; + } + return parsed; + } + } + + return []; }; const getErrorMessage = (error, fallbackMessage) => { @@ -694,26 +696,20 @@ export const OrderDetailPanel = ({ Состав заказа
Нет данных
-{result.debug}
-Позиции не указаны
; } return orders.map((orderItem, idx) => ({orderItem.nom || `Заказ ${idx + 1}`}
+{orderItem.nom || orderItem.name || `Заказ ${idx + 1}`}
{orderItem.items && orderItem.items.length > 0 ? (