diff --git a/src/pages/ProductionOrders.tsx b/src/pages/ProductionOrders.tsx
index 254137d..70e63e2 100644
--- a/src/pages/ProductionOrders.tsx
+++ b/src/pages/ProductionOrders.tsx
@@ -1,4 +1,4 @@
-import { type FormEvent, useCallback, useEffect, useMemo, useState } from 'react';
+import { Fragment, type FormEvent, useCallback, useEffect, useMemo, useState } from 'react';
import { Link, useOutletContext } from 'react-router-dom';
import { ArrowLeft, CheckCircle2, ClipboardList, Clock3, Download, Eye, PackageCheck, PlayCircle, Search, X, XCircle } from 'lucide-react';
import DateRangePicker from '../components/DateRangePicker';
@@ -268,6 +268,48 @@ const ProductionOrders = () => {
exportToCSV(exportData, `ordens_producao_${new Date().toISOString().split('T')[0]}.csv`);
};
+ const renderOrderDetails = (order: ProductionOrderItem) => (
+
+
+
+
Detalhes da OP
+
{order.number || `OP #${order.id}`} · {order.productDescription}
+
+
+
+
+
+
Quantidade
{formatQuantity(order.quantity)} {order.unit}
+
Status
+
Emissão
{formatDate(order.issueDate)}
+
Previsão
{formatDate(order.expectedDate)}
+
+
+
+ Produto e marcadores
+
+
{order.productSku || 'Sem SKU'}
+ {order.markers.length > 0 &&
{order.markers.map(marker => {marker.label})}
}
+
Pedido: {order.orderReference || '-'}Integração: {order.integrationStatus || 'Local'}
+
+
+
+
+ Composição
+ {order.components.length ? | Material | Por unidade | Total |
{order.components.map(component => {component.componentName} {component.componentSku || 'Sem SKU'} | {formatQuantity(component.quantityPerUnit)} {component.unit} | {formatQuantity(component.totalQuantity)} {component.unit} |
)}
: Sem composição sincronizada.
}
+
+
+
+ Baixa de material
+ {order.status === 'in_progress' ? : Altere a OP para Em andamento antes de registrar a baixa de materiais.
}
+
+
+ {(order.steps.length > 0 || order.notes || order.supplier || order.lotCode || order.rollQuantity || order.fabricKg || order.ribKg || order.yieldPiecesPerKg) &&
Informações adicionais
{(order.supplier || order.lotCode || order.rollQuantity || order.fabricKg || order.ribKg || order.yieldPiecesPerKg) &&
{order.supplier && - Fornecedor
- {order.supplier}
}{order.lotCode && - Lote
- {order.lotCode}
}{order.rollQuantity !== null && - Rolos
- {formatQuantity(order.rollQuantity)}
}{order.fabricKg !== null && - Malha
- {formatQuantity(order.fabricKg)} kg
}{order.ribKg !== null && - Ribana
- {formatQuantity(order.ribKg)} kg
}{order.yieldPiecesPerKg !== null && - Rendimento
- {formatQuantity(order.yieldPiecesPerKg)} un./kg
}
}{order.steps.length > 0 &&
Etapas
{order.steps.map(step =>
{step.name}{formatDate(step.startDate)} - {formatDate(step.endDate)}
)}
}{order.notes &&
{order.notes}
}
}
+
+ );
+
return (
@@ -456,7 +498,8 @@ const ProductionOrders = () => {
{paginatedOrders.map((order: ProductionOrderItem) => {
const statusStyle = getStatusStyle(order.status, order.statusLabel);
return (
-
+
+
| {order.number || '-'} |
{order.productDescription}
@@ -485,18 +528,21 @@ const ProductionOrders = () => {
|
+ {selectedOrderId === order.id && | {renderOrderDetails(order)} |
}
+
);
})}
@@ -537,69 +583,6 @@ const ProductionOrders = () => {
)}
- {selectedOrder && (
-
-
- )}
{statusEditorOrder && (