diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index 238583421b..edb2d665a3 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -34,7 +34,7 @@ import InvenTree.ready import InvenTree.tasks import common.models -from common.notifications import trigger_notification +from common.notifications import trigger_notification, InvenTreeNotificationBodies from plugin.events import trigger_event import part.models @@ -605,6 +605,14 @@ class Build(MPTTModel, InvenTree.mixins.DiffMixin, InvenTree.models.InvenTreeBar self.status = BuildStatus.CANCELLED.value self.save() + # Notify users that the order has been canceled + InvenTree.helpers_model.notify_responsible( + self, + Build, + exclude=self.issued_by, + content=InvenTreeNotificationBodies.OrderCanceled + ) + trigger_event('build.cancelled', id=self.pk) @transaction.atomic diff --git a/InvenTree/common/notifications.py b/InvenTree/common/notifications.py index 5c2aa1434a..e52e2d86ff 100644 --- a/InvenTree/common/notifications.py +++ b/InvenTree/common/notifications.py @@ -294,6 +294,14 @@ class InvenTreeNotificationBodies: ) """Send when a new order (build, sale or purchase) was created.""" + OrderCanceled = NotificationBody( + name=_("{verbose_name} canceled"), + slug='{app_label}.canceled_{model_name}', + message=_("A order that is assigned to you was canceled"), + template='email/canceled_order_assigned.html', + ) + """Send when a order (sale, return or purchase) was canceled.""" + ItemsReceived = NotificationBody( name=_("Items Received"), slug='purchase_order.items_received', diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index 75f6aaacb4..bac42c3969 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -549,6 +549,14 @@ class PurchaseOrder(TotalPriceMixin, Order): trigger_event('purchaseorder.cancelled', id=self.pk) + # Notify users that the order has been canceled + notify_responsible( + self, + PurchaseOrder, + exclude=self.created_by, + content=InvenTreeNotificationBodies.OrderCanceled + ) + def pending_line_items(self): """Return a list of pending line items for this order. @@ -935,6 +943,14 @@ class SalesOrder(TotalPriceMixin, Order): trigger_event('salesorder.cancelled', id=self.pk) + # Notify users that the order has been canceled + notify_responsible( + self, + SalesOrder, + exclude=self.created_by, + content=InvenTreeNotificationBodies.OrderCanceled + ) + return True @property @@ -1790,6 +1806,14 @@ class ReturnOrder(TotalPriceMixin, Order): trigger_event('returnorder.cancelled', id=self.pk) + # Notify users that the order has been canceled + notify_responsible( + self, + ReturnOrder, + exclude=self.created_by, + content=InvenTreeNotificationBodies.OrderCanceled + ) + @transaction.atomic def complete_order(self): """Complete this ReturnOrder (if not already completed)""" diff --git a/InvenTree/templates/email/canceled_order_assigned.html b/InvenTree/templates/email/canceled_order_assigned.html new file mode 100644 index 0000000000..9d4161d352 --- /dev/null +++ b/InvenTree/templates/email/canceled_order_assigned.html @@ -0,0 +1,11 @@ +{% extends "email/email.html" %} + +{% load i18n %} +{% load inventree_extras %} + +{% block title %} +{{ message }} +{% if link %} +

{% trans "Click on the following link to view this order" %}: {{ link }}

+{% endif %} +{% endblock title %}