From d563db6e7e12a99052241ea5ce9b696dd56e9e0d Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 23 Jul 2025 22:17:07 +1000 Subject: [PATCH] Custom event when bulk-creating items (#10063) --- src/backend/InvenTree/stock/events.py | 2 ++ src/backend/InvenTree/stock/models.py | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/backend/InvenTree/stock/events.py b/src/backend/InvenTree/stock/events.py index d8d3a8f420..1dd2364d7b 100644 --- a/src/backend/InvenTree/stock/events.py +++ b/src/backend/InvenTree/stock/events.py @@ -14,3 +14,5 @@ class StockEvents(BaseEventEnum): ITEM_COUNTED = 'stockitem.counted' ITEM_QUANTITY_UPDATED = 'stockitem.quantityupdated' ITEM_INSTALLED_INTO_ASSEMBLY = 'stockitem.installed' + + ITEMS_CREATED = 'stockitem.created_items' diff --git a/src/backend/InvenTree/stock/models.py b/src/backend/InvenTree/stock/models.py index 5b40aa0aed..8aed9e39d0 100644 --- a/src/backend/InvenTree/stock/models.py +++ b/src/backend/InvenTree/stock/models.py @@ -650,8 +650,17 @@ class StockItem( ) stock.tasks.rebuild_stock_item_tree(parent.tree_id) + # Fetch the new StockItem objects from the database + items = StockItem.objects.filter(part=part, serial__in=serials) + + # Trigger a 'created' event for the new items + # Note that instead of a single event for each item, + # we trigger a single event for all items created + stock_ids = list(items.values_list('id', flat=True).distinct()) + trigger_event(StockEvents.ITEMS_CREATED, ids=stock_ids) + # Return the newly created StockItem objects - return StockItem.objects.filter(part=part, serial__in=serials) + return items @staticmethod def convert_serial_to_int(serial: str) -> int: