From a63ca93c3cf891bc05dfbb19a0a047bdeae43be1 Mon Sep 17 00:00:00 2001 From: NerosKi <138918774+NerosKi@users.noreply.github.com> Date: Mon, 8 Jun 2026 01:06:24 +0200 Subject: [PATCH] plugin-validation-purchase-orders (#12094) Co-authored-by: Matthias Mair --- src/backend/InvenTree/order/models.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/backend/InvenTree/order/models.py b/src/backend/InvenTree/order/models.py index 1109e65a02..428f9f1d29 100644 --- a/src/backend/InvenTree/order/models.py +++ b/src/backend/InvenTree/order/models.py @@ -1191,6 +1191,10 @@ class PurchaseOrder(TotalPriceMixin, Order): for item in new_items: item.set_status(status, custom_values=custom_stock_status_values) + # run validation for serialized items plugin.validate_batch_code + item.validate_batch_code() + # run validation for serialized items plugin.validate_model_instance + item.run_plugin_validation() stock_items.append(item) else: @@ -1213,6 +1217,13 @@ class PurchaseOrder(TotalPriceMixin, Order): # Bulk create new stock items if len(bulk_create_items) > 0: + # bulk_create() bypasses save()/clean() methods, so manual validation is required for each item + for item in bulk_create_items: + # run validation for items plugin.validate_batch_code + item.validate_batch_code() + # run validation for items plugin.validate_model_instance + item.run_plugin_validation() + stock.models.StockItem.objects.bulk_create( bulk_create_items, batch_size=250 )