Coverage for modules\crm\signals.py: 45%
11 statements
« prev ^ index » next coverage.py v7.16.0, created at 2026-09-05 09:19 +0800
« prev ^ index » next coverage.py v7.16.0, created at 2026-09-05 09:19 +0800
1from django.db.models.signals import post_save
2from django.dispatch import receiver
3from .models import Deal
5@receiver(post_save, sender=Deal)
6def handle_deal_status_change(sender, instance, created, **kwargs):
7 """
8 Cross-module integration: When a deal is marked WON, trigger draft invoice in ERP.
9 """
10 if not created and instance.status == 'WON':
11 try:
12 from modules.erp.services import ERPService
13 # Automatically draft an invoice for the won deal
14 ERPService.create_invoice_from_deal(instance)
15 except Exception:
16 # Gracefully handle if ERP module is initializing
17 pass