from django.db import models from utils.base_model import BaseModel from apps.customer.models import Customer as CustomerModel from apps.shop.models import ProductType as ProductTypeModel from apps.workspace.models import City as CityModel, Workspace as WorkspaceModel from apps.cuser.models import CuserRole as CuserRoleModel # Create your models here. class LeadType(BaseModel): title = models.CharField(max_length=50) sys_ws = models.ForeignKey(WorkspaceModel, on_delete=models.CASCADE, null=False, blank=False) def __str__(self): return self.title class LeadSource(BaseModel): title = models.CharField(max_length=50) sys_ws = models.ForeignKey(WorkspaceModel, on_delete=models.CASCADE, null=False, blank=False) def __str__(self): return self.title class LeadStep(BaseModel): name = models.CharField(max_length=50) sys_ws = models.ForeignKey(WorkspaceModel, on_delete=models.CASCADE, null=False, blank=False) def __str__(self): return self.name class LeadReason(BaseModel): name = models.CharField(max_length=50) success = models.BooleanField(null=True, blank=True) sys_ws = models.ForeignKey(WorkspaceModel, on_delete=models.CASCADE, null=False, blank=False) def __str__(self): return self.name class Lead(BaseModel): STATUS_CHOICES = { ("SU", "OK"), ("FA", "FAIL"), ("UN", "unknown"), } title = models.CharField(max_length=100) desc = models.CharField(max_length=300) customer = models.ForeignKey(CustomerModel, on_delete=models.CASCADE, null=False, blank=False) product_type = models.ForeignKey(ProductTypeModel, on_delete=models.SET_NULL, null=True, blank=True) type = models.ForeignKey(LeadType, on_delete=models.SET_NULL, null=True, blank=True) source = models.ForeignKey(LeadSource, on_delete=models.SET_NULL, null=True, blank=True) step = models.ForeignKey(LeadStep, on_delete=models.SET_NULL, null=True, blank=True) city = models.ForeignKey(CityModel, on_delete=models.SET_NULL, null=True, blank=True) status = models.CharField(max_length=2, choices=STATUS_CHOICES, null=True, blank=True, default='UN') reason = models.ForeignKey(LeadReason, on_delete=models.SET_NULL, null=True, blank=True) cuser_role = models.ForeignKey(CuserRoleModel, on_delete=models.SET_NULL, null=True, blank=True) sys_ws = models.ForeignKey(WorkspaceModel, on_delete=models.CASCADE, null=False, blank=False) def __str__(self): return self.title class LeadComment(BaseModel): lead = models.ForeignKey(Lead, on_delete=models.CASCADE, null=False, blank=False, related_name='lead_comment') desc = models.CharField(max_length=300) cuser_role = models.ForeignKey(CuserRoleModel, on_delete=models.SET_NULL, null=True, blank=True) sys_ws = models.ForeignKey(WorkspaceModel, on_delete=models.CASCADE, null=False, blank=False) class Meta: ordering = ['-created_at'] def __str__(self): return self.lead.title