diff --git a/src/backend/InvenTree/stock/api.py b/src/backend/InvenTree/stock/api.py index 81c9bea06d..74d0b75f39 100644 --- a/src/backend/InvenTree/stock/api.py +++ b/src/backend/InvenTree/stock/api.py @@ -1097,6 +1097,10 @@ class StockList(DataExportViewMixin, StockApiMixin, ListCreateDestroyAPIView): serializer = self.get_serializer(data=data) serializer.is_valid(raise_exception=True) + # Exclude 'serial' from submitted data + # We use 'serial_numbers' for item creation + serializer.validated_data.pop('serial', None) + # Extract location information location = serializer.validated_data.get('location', None) diff --git a/src/frontend/src/pages/stock/StockDetail.tsx b/src/frontend/src/pages/stock/StockDetail.tsx index 173512b098..140a644b60 100644 --- a/src/frontend/src/pages/stock/StockDetail.tsx +++ b/src/frontend/src/pages/stock/StockDetail.tsx @@ -661,13 +661,25 @@ export default function StockDetail() { modalId: 'duplicate-stock-item' }); + const duplicateStockData = useMemo(() => { + const duplicate = { + ...stockitem, + serial_numbers: stockitem.serial + }; + + // Omit the "serial" field for item creation + delete duplicate.serial; + + return duplicate; + }, [stockitem]); + const duplicateStockItem = useCreateApiFormModal({ url: ApiEndpoints.stock_item_list, title: t`Add Stock Item`, modalId: 'duplicate-stock-item', fields: duplicateStockItemFields, initialData: { - ...stockitem + ...duplicateStockData }, follow: true, modelType: ModelType.stockitem