From 735a1b71c5f78c9032fd59b6d6a6da91942b97fb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 25 Jun 2025 07:53:27 +1000 Subject: [PATCH] Fix for stock item duplication bug (#9846) (#9850) * Omit "serial" field * Ignore 'serial' field on item creation (cherry picked from commit 8e8b61033cf4ef2875fe73bf94963dba0c657719) Co-authored-by: Oliver --- src/backend/InvenTree/stock/api.py | 4 ++++ src/frontend/src/pages/stock/StockDetail.tsx | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) 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