From 4a795ccddc2a9555f57147135712db0d6e86843d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 16:15:02 +1000 Subject: [PATCH] Handle missing record in after_delete_supplier_part (#12772) (#12777) (cherry picked from commit 8c1c16e59ac51f72eabcd1147cd65b6f408309c0) Co-authored-by: Oliver --- src/backend/InvenTree/company/models.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/backend/InvenTree/company/models.py b/src/backend/InvenTree/company/models.py index 4adfdf7861..b9e54b7298 100644 --- a/src/backend/InvenTree/company/models.py +++ b/src/backend/InvenTree/company/models.py @@ -1061,12 +1061,21 @@ def after_delete_supplier_part(sender, instance, **kwargs): Triggers a pricing update for the linked Part, so that removal of a supplier part is reflected in Part pricing and BOM cost rollups. """ + from part.models import Part + if ( - InvenTree.ready.canAppAccessDatabase(allow_test=settings.TESTING_PRICING) - and not InvenTree.ready.isImportingData() - and instance.part + not InvenTree.ready.canAppAccessDatabase(allow_test=settings.TESTING_PRICING) + or InvenTree.ready.isImportingData() + or InvenTree.ready.isRunningMigrations() ): - instance.part.schedule_pricing_update(create=False) + return + + try: + if part := instance.part: + part.schedule_pricing_update(create=False) + except (Part.DoesNotExist, SupplierPart.DoesNotExist): + # The underlying SupplierPart instance has been deleted + return @receiver(