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

1from django.db.models.signals import post_save 

2from django.dispatch import receiver 

3from .models import Deal 

4 

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