mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-31 05:05:42 +00:00 
			
		
		
		
	Notify users when a build order is completed (#3255)
This commit is contained in:
		| @@ -32,6 +32,7 @@ import InvenTree.tasks | ||||
|  | ||||
| from plugin.events import trigger_event | ||||
|  | ||||
| import common.notifications | ||||
| from part import models as PartModels | ||||
| from stock import models as StockModels | ||||
| from users import models as UserModels | ||||
| @@ -534,12 +535,51 @@ class Build(MPTTModel, ReferenceIndexingMixin): | ||||
|         self.subtract_allocated_stock(user) | ||||
|  | ||||
|         # Ensure that there are no longer any BuildItem objects | ||||
|         # which point to thisFcan Build Order | ||||
|         # which point to this Build Order | ||||
|         self.allocated_stock.all().delete() | ||||
|  | ||||
|         # Register an event | ||||
|         trigger_event('build.completed', id=self.pk) | ||||
|  | ||||
|         # Notify users that this build has been completed | ||||
|         targets = [ | ||||
|             self.issued_by, | ||||
|             self.responsible, | ||||
|         ] | ||||
|  | ||||
|         # Notify those users interested in the parent build | ||||
|         if self.parent: | ||||
|             targets.append(self.parent.issued_by) | ||||
|             targets.append(self.parent.responsible) | ||||
|  | ||||
|         # Notify users if this build points to a sales order | ||||
|         if self.sales_order: | ||||
|             targets.append(self.sales_order.created_by) | ||||
|             targets.append(self.sales_order.responsible) | ||||
|  | ||||
|         build = self | ||||
|         name = _(f'Build order {build} has been completed') | ||||
|  | ||||
|         context = { | ||||
|             'build': build, | ||||
|             'name': name, | ||||
|             'slug': 'build.completed', | ||||
|             'message': _('A build order has been completed'), | ||||
|             'link': InvenTree.helpers.construct_absolute_url(self.get_absolute_url()), | ||||
|             'template': { | ||||
|                 'html': 'email/build_order_completed.html', | ||||
|                 'subject': name, | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         common.notifications.trigger_notification( | ||||
|             build, | ||||
|             'build.completed', | ||||
|             targets=targets, | ||||
|             context=context, | ||||
|             target_exclude=[user], | ||||
|         ) | ||||
|  | ||||
|     @transaction.atomic | ||||
|     def cancel_build(self, user, **kwargs): | ||||
|         """Mark the Build as CANCELLED. | ||||
|   | ||||
| @@ -291,7 +291,7 @@ class InvenTreeNotificationBodies: | ||||
|     NewOrder = NotificationBody( | ||||
|         name=_("New {verbose_name}"), | ||||
|         slug='{app_label}.new_{model_name}', | ||||
|         message=_("A new {verbose_name} has been created and ,assigned to you"), | ||||
|         message=_("A new order has been created and assigned to you"), | ||||
|         template='email/new_order_assigned.html', | ||||
|     ) | ||||
|     """Send when a new order (build, sale or purchase) was created.""" | ||||
| @@ -344,8 +344,10 @@ def trigger_notification(obj, category=None, obj_ref='pk', **kwargs): | ||||
|  | ||||
|     if targets: | ||||
|         for target in targets: | ||||
|             if target is None: | ||||
|                 continue | ||||
|             # User instance is provided | ||||
|             if isinstance(target, get_user_model()): | ||||
|             elif isinstance(target, get_user_model()): | ||||
|                 if target not in target_exclude: | ||||
|                     target_users.add(target) | ||||
|             # Group instance is provided | ||||
|   | ||||
							
								
								
									
										27
									
								
								InvenTree/templates/email/build_order_completed.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								InvenTree/templates/email/build_order_completed.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| {% extends "email/email.html" %} | ||||
|  | ||||
| {% load i18n %} | ||||
| {% load inventree_extras %} | ||||
|  | ||||
| {% block title %} | ||||
| {{ message }} | ||||
| {% if link %} | ||||
| <p>{% trans "Click on the following link to view this order" %}: <a href="{{ link }}">{{ link }}</a></p> | ||||
| {% endif %} | ||||
| {% endblock title %} | ||||
|  | ||||
| {% block body %} | ||||
|  | ||||
| <tr style="height: 3rem; border-bottom: 1px solid"> | ||||
|     <th>{% trans "Build Order" %}</th> | ||||
|     <th>{% trans "Part" %}</th> | ||||
|     <th>{% trans "Quantity" %}</th> | ||||
| </tr> | ||||
|  | ||||
| <tr style="height: 3rem"> | ||||
|     <td style="text-align: center;">{{ build }}</td> | ||||
|     <td style="text-align: center;">{{ build.part.full_name }}</td> | ||||
|     <td style="text-align: center;">{{ build.quantity }}</td> | ||||
| </tr> | ||||
|  | ||||
| {% endblock body %} | ||||
		Reference in New Issue
	
	Block a user