mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Add multiple triggered events for the "order" app
This commit is contained in:
parent
5acd880f39
commit
2370e41961
@ -11,6 +11,8 @@ from decimal import Decimal
|
|||||||
from django.db import models, transaction
|
from django.db import models, transaction
|
||||||
from django.db.models import Q, F, Sum
|
from django.db.models import Q, F, Sum
|
||||||
from django.db.models.functions import Coalesce
|
from django.db.models.functions import Coalesce
|
||||||
|
from django.db.models.signals import post_save
|
||||||
|
from django.dispatch.dispatcher import receiver
|
||||||
from django.core.validators import MinValueValidator
|
from django.core.validators import MinValueValidator
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
@ -24,6 +26,7 @@ from users import models as UserModels
|
|||||||
from part import models as PartModels
|
from part import models as PartModels
|
||||||
from stock import models as stock_models
|
from stock import models as stock_models
|
||||||
from company.models import Company, SupplierPart
|
from company.models import Company, SupplierPart
|
||||||
|
from plugin.events import trigger_event
|
||||||
|
|
||||||
from InvenTree.fields import InvenTreeModelMoneyField, RoundingDecimalField
|
from InvenTree.fields import InvenTreeModelMoneyField, RoundingDecimalField
|
||||||
from InvenTree.helpers import decimal2string, increment, getSetting
|
from InvenTree.helpers import decimal2string, increment, getSetting
|
||||||
@ -317,6 +320,8 @@ class PurchaseOrder(Order):
|
|||||||
self.issue_date = datetime.now().date()
|
self.issue_date = datetime.now().date()
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
|
trigger_event('purchaseorder.placed', order_id=self.pk)
|
||||||
|
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
def complete_order(self):
|
def complete_order(self):
|
||||||
""" Marks the PurchaseOrder as COMPLETE. Order must be currently PLACED. """
|
""" Marks the PurchaseOrder as COMPLETE. Order must be currently PLACED. """
|
||||||
@ -326,6 +331,8 @@ class PurchaseOrder(Order):
|
|||||||
self.complete_date = datetime.now().date()
|
self.complete_date = datetime.now().date()
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
|
trigger_event('purchaseorder.completed', order_id=self.pk)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_overdue(self):
|
def is_overdue(self):
|
||||||
"""
|
"""
|
||||||
@ -356,6 +363,8 @@ class PurchaseOrder(Order):
|
|||||||
self.status = PurchaseOrderStatus.CANCELLED
|
self.status = PurchaseOrderStatus.CANCELLED
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
|
trigger_event('purchaseorder.cancelled', order_id=self.pk)
|
||||||
|
|
||||||
def pending_line_items(self):
|
def pending_line_items(self):
|
||||||
""" Return a list of pending line items for this order.
|
""" Return a list of pending line items for this order.
|
||||||
Any line item where 'received' < 'quantity' will be returned.
|
Any line item where 'received' < 'quantity' will be returned.
|
||||||
@ -461,6 +470,15 @@ class PurchaseOrder(Order):
|
|||||||
self.complete_order() # This will save the model
|
self.complete_order() # This will save the model
|
||||||
|
|
||||||
|
|
||||||
|
@receiver(post_save, sender=PurchaseOrder, dispatch_uid='po_post_save_log')
|
||||||
|
def after_save_build(sender, instance: PurchaseOrder, created: bool, **kwargs):
|
||||||
|
|
||||||
|
if created:
|
||||||
|
trigger_event('purchaseorder.created', order_id=instance.pk)
|
||||||
|
else:
|
||||||
|
trigger_event('purchasesorder.saved', order_id=instance.pk)
|
||||||
|
|
||||||
|
|
||||||
class SalesOrder(Order):
|
class SalesOrder(Order):
|
||||||
"""
|
"""
|
||||||
A SalesOrder represents a list of goods shipped outwards to a customer.
|
A SalesOrder represents a list of goods shipped outwards to a customer.
|
||||||
@ -667,6 +685,8 @@ class SalesOrder(Order):
|
|||||||
|
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
|
trigger_event('salesorder.completed', order_id=self.pk)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def can_cancel(self):
|
def can_cancel(self):
|
||||||
@ -698,6 +718,8 @@ class SalesOrder(Order):
|
|||||||
for allocation in line.allocations.all():
|
for allocation in line.allocations.all():
|
||||||
allocation.delete()
|
allocation.delete()
|
||||||
|
|
||||||
|
trigger_event('salesorder.cancelled', order_id=self.pk)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -750,6 +772,15 @@ class SalesOrder(Order):
|
|||||||
return self.pending_shipments().count()
|
return self.pending_shipments().count()
|
||||||
|
|
||||||
|
|
||||||
|
@receiver(post_save, sender=SalesOrder, dispatch_uid='so_post_save_log')
|
||||||
|
def after_save_build(sender, instance: SalesOrder, created: bool, **kwargs):
|
||||||
|
|
||||||
|
if created:
|
||||||
|
trigger_event('salesorder.created', order_id=instance.pk)
|
||||||
|
else:
|
||||||
|
trigger_event('salesorder.saved', order_id=instance.pk)
|
||||||
|
|
||||||
|
|
||||||
class PurchaseOrderAttachment(InvenTreeAttachment):
|
class PurchaseOrderAttachment(InvenTreeAttachment):
|
||||||
"""
|
"""
|
||||||
Model for storing file attachments against a PurchaseOrder object
|
Model for storing file attachments against a PurchaseOrder object
|
||||||
@ -1104,6 +1135,8 @@ class SalesOrderShipment(models.Model):
|
|||||||
|
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
|
trigger_event('salesordershipment.completed', shipment_id=self.pk)
|
||||||
|
|
||||||
|
|
||||||
class SalesOrderAllocation(models.Model):
|
class SalesOrderAllocation(models.Model):
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user