import React, { useCallback } from 'react'; import { Box, Typography, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Paper, Checkbox, TextField, TablePagination, FormControl, Select, MenuItem, } from '@mui/material'; import { useTranslation } from 'react-i18next'; import { OUTPUT_DATE_FORMAT } from '@/app/utils/formatUtil'; import dayjs from 'dayjs'; interface CreatedItem { itemId: number; itemName: string; itemCode: string; qty: number; uom: string; uomId: number; uomDesc: string; isSelected: boolean; currentStockBalance?: number; targetDate?: string | null; groupId?: number | null; } interface Group { id: number; name: string; targetDate: string; } interface CreatedItemsTableProps { items: CreatedItem[]; groups: Group[]; onItemSelect: (itemId: number, checked: boolean) => void; onQtyChange: (itemId: number, qty: number) => void; onGroupChange: (itemId: number, groupId: string) => void; pageNum: number; pageSize: number; onPageChange: (event: unknown, newPage: number) => void; onPageSizeChange: (event: React.ChangeEvent) => void; } const CreatedItemsTable: React.FC = ({ items, groups, onItemSelect, onQtyChange, onGroupChange, pageNum, pageSize, onPageChange, onPageSizeChange, }) => { const { t } = useTranslation("pickOrder"); // Calculate pagination const startIndex = (pageNum - 1) * pageSize; const endIndex = startIndex + pageSize; const paginatedItems = items.slice(startIndex, endIndex); const handleQtyChange = useCallback((itemId: number, value: string) => { const numValue = Number(value); if (!isNaN(numValue) && numValue >= 1) { onQtyChange(itemId, numValue); } }, [onQtyChange]); return ( <> {t("Selected")} {t("Item")} {t("Group")} {t("Current Stock")} {t("Stock Unit")} {t("Order Quantity")} {t("Target Date")} {paginatedItems.length === 0 ? ( {t("No created items")} ) : ( paginatedItems.map((item) => ( onItemSelect(item.itemId, e.target.checked)} /> {item.itemName} {item.itemCode} 0 ? "success.main" : "error.main"} > {item.currentStockBalance?.toLocaleString() || 0} {item.uomDesc} handleQtyChange(item.itemId, e.target.value)} inputProps={{ min: 1, step: 1, style: { textAlign: 'center' } }} sx={{ width: '80px', '& .MuiInputBase-input': { textAlign: 'center', cursor: 'text' } }} /> {item.targetDate ? dayjs(item.targetDate).format(OUTPUT_DATE_FORMAT) : "-"} )) )}
`${from}-${to} of ${count !== -1 ? count : `more than ${to}`}` } /> ); }; export default CreatedItemsTable;