diff --git a/inventory/models.py b/inventory/models.py
index 2e1fea2a..4ba4b9bd 100644
--- a/inventory/models.py
+++ b/inventory/models.py
@@ -2202,6 +2202,9 @@ class Vendor(models.Model, LocalizedNameMixin):
max_length=255, unique=True, verbose_name=_("Slug"), null=True, blank=True
)
+ def get_absolute_url(self):
+ return reverse("vendor_detail", kwargs={"dealer_slug":self.dealer.slug,"pk": self.pk})
+
def save(self, *args, **kwargs):
if not self.slug:
base_slug = slugify(self.name)
diff --git a/inventory/signals.py b/inventory/signals.py
index bfcca5b0..2692d058 100644
--- a/inventory/signals.py
+++ b/inventory/signals.py
@@ -920,4 +920,64 @@ def car_created_notification(sender, instance, created, **kwargs):
New Car {instance.vin} has been added to dealer {instance.dealer.name}.
View
""",
- )
\ No newline at end of file
+ )
+@receiver(post_save, sender=PurchaseOrderModel)
+def po_fullfilled_notification(sender, instance, created, **kwargs):
+ if instance.is_fulfilled():
+ dealer = models.Dealer.objects.get(entity=instance.entity)
+ recipients = models.CustomGroup.objects.filter(dealer=instance.dealer,name="Accountant").first().group.user_set.all()
+ for recipient in recipients:
+ models.Notification.objects.create(
+ user=recipient,
+ message=f"""
+ New Purchase Order has been added.
+ View
+ """,
+ )
+@receiver(post_save, sender=models.Vendor)
+def vendor_created_notification(sender, instance, created, **kwargs):
+ if created:
+ recipients = models.CustomGroup.objects.filter(dealer=instance.dealer,name="Inventory").first().group.user_set.excludeall()
+
+ for recipient in recipients:
+ models.Notification.objects.create(
+ user=recipient,
+ message=f"""
+ New Vendor {instance.name} has been added to dealer {instance.dealer.name}.
+ View
+ """,
+ )
+
+@receiver(post_save, sender=models.SaleOrder)
+def sale_order_created_notification(sender, instance, created, **kwargs):
+ if created:
+ recipients = models.CustomGroup.objects.filter(dealer=instance.dealer,name="Accountant").first().group.user_set.exclude(email=instance.dealer.user.email)
+
+ for recipient in recipients:
+ models.Notification.objects.create(
+ user=recipient,
+ message=f"""
+ New Sale Order has been added for estimate:{instance.estimate}.
+ View
+ """,
+ )
+@receiver(post_save, sender=models.Lead)
+def lead_created_notification(sender, instance, created, **kwargs):
+ if created:
+ models.Notification.objects.create(
+ user=instance.staff.user,
+ message=f"""
+ New Lead has been added.
+ View
+ """,
+ )
+@receiver(post_save, sender=models.Lead)
+def lead_created_notification(sender, instance, created, **kwargs):
+ if created:
+ models.Notification.objects.create(
+ user=instance.staff.user,
+ message=f"""
+ New Lead has been added.
+ View
+ """,
+ )
diff --git a/inventory/urls.py b/inventory/urls.py
index 2e95003c..b5469311 100644
--- a/inventory/urls.py
+++ b/inventory/urls.py
@@ -208,7 +208,7 @@ urlpatterns = [
path("notifications/fetch/", views.fetch_notifications, name="fetch_notifications"),
path(
- "/notifications/",
+ "notifications/",
views.NotificationListView.as_view(),
name="notifications_history",
),
diff --git a/inventory/views.py b/inventory/views.py
index 40693d5b..b950896b 100644
--- a/inventory/views.py
+++ b/inventory/views.py
@@ -5616,6 +5616,10 @@ def lead_transfer(request,dealer_slug, slug):
if form.is_valid():
lead.staff = form.cleaned_data["transfer_to"]
lead.save()
+ models.Notification.objects.create(
+ user=lead.staff.user,
+ message=f"You have been assigned a new lead: {lead.full_name}.",
+ )
messages.success(request, _("Lead transferred successfully"))
else:
messages.error(request, f"Invalid form data: {str(form.errors)}")