diff --git a/src/frontend/src/components/render/Part.tsx b/src/frontend/src/components/render/Part.tsx
index 869ad2b911..f2b57863ef 100644
--- a/src/frontend/src/components/render/Part.tsx
+++ b/src/frontend/src/components/render/Part.tsx
@@ -18,24 +18,24 @@ export function RenderPart(
let badgeText = '';
let badgeColor = '';
- const stock = instance.total_in_stock;
+ const stock: number | null = instance.total_in_stock ?? null;
if (instance.active == false) {
badgeColor = 'red';
badgeText = t`Inactive`;
- } else if (stock <= 0) {
+ } else if (stock != null && stock <= 0) {
badgeColor = 'orange';
badgeText = t`No stock`;
- } else {
+ } else if (stock != null) {
badgeText = `${t`Stock`}: ${stock}`;
badgeColor = instance.minimum_stock > stock ? 'yellow' : 'green';
}
- const badge = (
+ const badge = !!badgeText ? (
{badgeText}
- );
+ ) : null;
return (
(0);
+ const [selectedLineId, setSelectedLineId] = useState(0);
+
+ const [selectedSupplierPart, setSelectedSupplierPart] = useState(null);
const [initialData, setInitialData] = useState({});
@@ -236,7 +239,7 @@ export default function SalesOrderLineItemTable({
const editLine = useEditApiFormModal({
url: ApiEndpoints.sales_order_line_list,
- pk: selectedLine,
+ pk: selectedLineId,
title: t`Edit Line Item`,
fields: editLineFields,
table: table
@@ -244,13 +247,13 @@ export default function SalesOrderLineItemTable({
const deleteLine = useDeleteApiFormModal({
url: ApiEndpoints.sales_order_line_list,
- pk: selectedLine,
+ pk: selectedLineId,
title: t`Delete Line Item`,
table: table
});
const allocateSerialFields = useSalesOrderAllocateSerialsFields({
- itemId: selectedLine,
+ itemId: selectedLineId,
orderId: orderId
});
@@ -258,6 +261,11 @@ export default function SalesOrderLineItemTable({
url: ApiEndpoints.sales_order_allocate_serials,
pk: orderId,
title: t`Allocate Serial Numbers`,
+ preFormContent: selectedSupplierPart ? (
+
+
+
+ ) : undefined,
initialData: initialData,
fields: allocateSerialFields,
table: table
@@ -382,7 +390,8 @@ export default function SalesOrderLineItemTable({
icon: ,
color: 'green',
onClick: () => {
- setSelectedLine(record.pk);
+ setSelectedLineId(record.pk);
+ setSelectedSupplierPart(record?.part_detail ?? null);
setInitialData({
quantity: record.quantity - record.allocated
});
@@ -422,7 +431,7 @@ export default function SalesOrderLineItemTable({
RowEditAction({
hidden: !editable || !user.hasChangeRole(UserRoles.sales_order),
onClick: () => {
- setSelectedLine(record.pk);
+ setSelectedLineId(record.pk);
editLine.open();
}
}),
@@ -436,7 +445,7 @@ export default function SalesOrderLineItemTable({
RowDeleteAction({
hidden: !editable || !user.hasDeleteRole(UserRoles.sales_order),
onClick: () => {
- setSelectedLine(record.pk);
+ setSelectedLineId(record.pk);
deleteLine.open();
}
})