diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index c30ad9dfaf..e5e59dfaec 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -22,14 +22,15 @@ from django.dispatch.dispatcher import receiver from django.urls import reverse from django.utils.translation import gettext_lazy as _ -from djmoney.contrib.exchange.models import convert_money from djmoney.contrib.exchange.exceptions import MissingRate +from djmoney.contrib.exchange.models import convert_money from djmoney.money import Money from error_report.models import Error from markdownx.models import MarkdownxField from mptt.models import TreeForeignKey import InvenTree.helpers +import InvenTree.ready from common.settings import currency_code_default from company.models import Company, SupplierPart from InvenTree.fields import InvenTreeModelMoneyField, RoundingDecimalField @@ -43,7 +44,6 @@ from plugin.models import MetadataMixin from stock import models as stock_models from users import models as UserModels - logger = logging.getLogger('inventree') @@ -868,9 +868,19 @@ class SalesOrder(Order): @receiver(post_save, sender=SalesOrder, dispatch_uid='build_post_save_log') def after_save_sales_order(sender, instance: SalesOrder, created: bool, **kwargs): + """Callback function to be executed after a SalesOrder instance is saved. + + - If the SALESORDER_DEFAULT_SHIPMENT setting is enabled, create a default shipment + - Ignore if the database is not ready for access + - Ignore if data import is active """ - Callback function to be executed after a SalesOrder instance is saved - """ + + if not InvenTree.ready.canAppAccessDatabase(allow_test=True): + return + + if InvenTree.ready.isImportingData(): + return + if created and getSetting('SALESORDER_DEFAULT_SHIPMENT'): # A new SalesOrder has just been created