diff --git a/src/backend/InvenTree/stock/api.py b/src/backend/InvenTree/stock/api.py index 2b7e8049ab..d711cd9db9 100644 --- a/src/backend/InvenTree/stock/api.py +++ b/src/backend/InvenTree/stock/api.py @@ -1059,6 +1059,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 5087743b96..6718aa512f 100644 --- a/src/frontend/src/pages/stock/StockDetail.tsx +++ b/src/frontend/src/pages/stock/StockDetail.tsx @@ -561,12 +561,24 @@ export default function StockDetail() { const duplicateStockItemFields = useStockFields({ create: true }); + 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`, fields: duplicateStockItemFields, initialData: { - ...stockitem + ...duplicateStockData }, follow: true, modelType: ModelType.stockitem