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)
}