diff --git a/src/pages/Cutting.tsx b/src/pages/Cutting.tsx index e1af39a..eb804d8 100644 --- a/src/pages/Cutting.tsx +++ b/src/pages/Cutting.tsx @@ -168,6 +168,8 @@ const Cutting = () => { const [previewStep, setPreviewStep] = useState('selection'); const [previewPage, setPreviewPage] = useState(1); const [previewItemsPerPage, setPreviewItemsPerPage] = useState(10); + const [confirmationPage, setConfirmationPage] = useState(1); + const [confirmationItemsPerPage, setConfirmationItemsPerPage] = useState(10); const [previewReviewFilter, setPreviewReviewFilter] = useState('all'); const [selectedPreviewRowIds, setSelectedPreviewRowIds] = useState([]); const [previewQuantityOverrides, setPreviewQuantityOverrides] = useState>({}); @@ -403,6 +405,10 @@ const Cutting = () => { const selectedIds = new Set(selectedPreviewRowIds); return rowsAvailableForOrder.filter(row => selectedIds.has(row.id)); }, [rowsAvailableForOrder, selectedPreviewRowIds]); + const confirmationTotalPages = Math.ceil(selectedPreviewRows.length / confirmationItemsPerPage); + const safeConfirmationPage = Math.min(confirmationPage, confirmationTotalPages || 1); + const confirmationStartIndex = (safeConfirmationPage - 1) * confirmationItemsPerPage; + const paginatedConfirmationRows = selectedPreviewRows.slice(confirmationStartIndex, confirmationStartIndex + confirmationItemsPerPage); const orderPreviewTotalUnits = useMemo(() => ( selectedPreviewRows.reduce((total, row) => total + getPreviewQuantity(row), 0) ), [getPreviewQuantity, selectedPreviewRows]); @@ -686,6 +692,7 @@ const Cutting = () => { setGenerationMessage(''); setPreviewPage(1); + setConfirmationPage(1); setPreviewReviewFilter('all'); setSelectedPreviewRowIds(rowsAvailableForOrder.map(row => row.id)); setPreviewQuantityOverrides({}); @@ -997,7 +1004,7 @@ const Cutting = () => { {previewRowsWithIssues > 0 && {formatNumber(previewRowsWithIssues)} para revisar}
- {selectedPreviewRows.map(row => ( + {paginatedConfirmationRows.map(row => (

{row.name}

@@ -1014,6 +1021,20 @@ const Cutting = () => {
))}
+ { setConfirmationItemsPerPage(pageSize); setConfirmationPage(1); }} + className="mt-3 border-t border-dark-border pt-3" + />

A quantidade sugerida vem da cobertura. Ajustes manuais ficam marcados na OP, e o resultado real é confirmado durante a execução.

} @@ -1079,7 +1100,7 @@ const Cutting = () => { {formatNumber(row.projectedDemand, 1)} un.
{formatNumber(row.availableQuantity)} un.
{row.openProductionQuantity ?
{formatNumber(row.openProductionQuantity)} em OP
: null} -
+
{renderIssueBadge(row)}