From 5be6bc8940589b5c9ed6d3b2aa77e3f07c8247cc Mon Sep 17 00:00:00 2001 From: Matthias Mair Date: Tue, 14 Nov 2023 23:31:24 +0100 Subject: [PATCH] Added order cancel notifications (#5912) * Squashed commit of the following: commit 5e8ea099068475fd257d8c172348dc6f3edf9bcf Author: Matthias Mair Date: Tue Oct 24 09:22:38 2023 +0200 Update ui_plattform.spec.ts commit 49da3312beff7fd6837ea741e621df221c445d19 Author: Matthias Mair Date: Tue Oct 24 07:56:25 2023 +0200 more logging commit 5337be4c3990051b805a6fce2e79ca4030b4afe5 Author: Matthias Mair Date: Tue Oct 24 07:56:11 2023 +0200 added filter method for undefined settings that overwrite defaults commit 5df8a0b3e77cd5dcf04c39ad7638ac845df75e4c Author: Matthias Mair Date: Tue Oct 24 03:05:06 2023 +0200 you do not need to string a string commit 0650d3b3a0132889c2a76de38db38224e974d205 Author: Matthias Mair Date: Tue Oct 24 03:04:34 2023 +0200 fix things that were borken for no good reason commit a40dbfd1364cf01465037350184f59d2a2a8afab Author: Matthias Mair Date: Tue Oct 24 02:39:34 2023 +0200 reduce unneeded blocking timeouts commit bf9046a5361ae919e70662e717d6156434b6fe43 Author: Matthias Mair Date: Tue Oct 24 02:34:10 2023 +0200 catch server fetching errors commit aa01e67e8c8e789fdf755ac4481e730fe5ea4183 Author: Matthias Mair Date: Tue Oct 24 02:33:29 2023 +0200 move init as things are now plugged together different commit 290c33bd3125d50779497d6fc5981d5813b58f5d Author: Matthias Mair Date: Tue Oct 24 01:49:32 2023 +0200 do not log a failed automatic login try - why would you? * Added notifications for cancled orders * cleanup submodules * added notification to build * move import? --- InvenTree/build/models.py | 10 +++++++- InvenTree/common/notifications.py | 8 +++++++ InvenTree/order/models.py | 24 +++++++++++++++++++ .../email/canceled_order_assigned.html | 11 +++++++++ 4 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 InvenTree/templates/email/canceled_order_assigned.html 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 %}