diff --git a/src/frontend/src/forms/PurchaseOrderForms.tsx b/src/frontend/src/forms/PurchaseOrderForms.tsx index 52183924f3..cb22aa5c86 100644 --- a/src/frontend/src/forms/PurchaseOrderForms.tsx +++ b/src/frontend/src/forms/PurchaseOrderForms.tsx @@ -361,7 +361,7 @@ function LineItemFormRow({ // Serial number generator const serialNumberGenerator = useSerialNumberGenerator({ - isEnabled: () => batchOpen && trackable + isEnabled: () => trackable }); const [packagingOpen, packagingHandlers] = useDisclosure(false, { @@ -379,7 +379,6 @@ function LineItemFormRow({ const [batchOpen, batchHandlers] = useDisclosure(false, { onClose: () => { props.changeFn(props.idx, 'batch_code', undefined); - props.changeFn(props.idx, 'serial_numbers', undefined); }, onOpen: () => { // Generate a new batch code @@ -387,6 +386,14 @@ function LineItemFormRow({ part: record?.supplier_part_detail?.part, order: record?.order }); + } + }); + + const [serialOpen, serialHandlers] = useDisclosure(false, { + onClose: () => { + props.changeFn(props.idx, 'serial_numbers', undefined); + }, + onOpen: () => { // Generate new serial numbers if (trackable) { serialNumberGenerator.update({ @@ -430,14 +437,6 @@ function LineItemFormRow({ props.changeFn(props.idx, 'barcode', barcode); }, [barcode]); - const batchToolTip: string = useMemo(() => { - if (trackable) { - return t`Assign Batch Code and Serial Numbers`; - } else { - return t`Assign Batch Code`; - } - }, [trackable]); - // Update location field description on state change useEffect(() => { if (!opened) { @@ -559,10 +558,21 @@ function LineItemFormRow({ size='sm' onClick={() => batchHandlers.toggle()} icon={} - tooltip={batchToolTip} + tooltip={t`Assign Batch Code`} tooltipAlignment='top' variant={batchOpen ? 'outline' : 'transparent'} /> + {trackable && ( + serialHandlers.toggle()} + icon={} + tooltip={t`Assign Serial Numbers`} + tooltipAlignment='top' + variant={serialOpen ? 'outline' : 'transparent'} + /> + )} + {settings.isSet('STOCK_ENABLE_EXPIRY') && ( props.changeFn(props.idx, 'serial_numbers', value) }