models.py 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. # coding=utf-8
  2. from django.db import models
  3. from django.conf import settings
  4. from django.utils import timezone
  5. from utils.exceptions import CustomError
  6. from apps.option.models import Option
  7. from apps.agent.models import Store
  8. class ReportCustomer(models.Model):
  9. NOT_CHECKED = 0
  10. CHECKED = 1
  11. REPEAT_REPORT = 2
  12. STATUS_CHOICES = (
  13. (NOT_CHECKED, '待审核'),
  14. (CHECKED, '已分配'),
  15. (REPEAT_REPORT, '撞单客户')
  16. )
  17. name = models.CharField(max_length=20, verbose_name=u"姓名")
  18. tel = models.CharField(max_length=15, verbose_name=u'电话')
  19. gender = models.PositiveSmallIntegerField(choices=settings.GENDER_CHOICES, verbose_name=u'性别',
  20. default=settings.MALE)
  21. village = models.CharField(max_length=200, verbose_name=u'小区')
  22. address = models.CharField(max_length=200, verbose_name=u'地址')
  23. source = models.ForeignKey(Option, verbose_name=u'来源', related_name='report_customer_source', on_delete=models.PROTECT)
  24. project = models.ManyToManyField(Option, verbose_name=u'项目', related_name='report_customer_category', editable=False,
  25. null=True,blank=True)
  26. notes = models.CharField(max_length=500, verbose_name=u"备注", null=True)
  27. report_status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u'报备状态', default=NOT_CHECKED)
  28. check_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'审核人', related_name='report_customer_check_user',
  29. on_delete=models.PROTECT, null=True)
  30. check_time = models.DateTimeField(verbose_name=u'审核时间', null=True)
  31. create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'添加人', related_name='report_customer_create_user',
  32. editable=False, on_delete=models.PROTECT)
  33. create_time = models.DateTimeField(verbose_name=u'添加时间', auto_now_add=True, editable=False)
  34. store = models.ForeignKey(Store, verbose_name=u'门店', related_name='report_customer_store',
  35. editable=False, on_delete=models.PROTECT)
  36. class Meta:
  37. db_table = 'report_customer'
  38. verbose_name = u'客户报备'
  39. ordering = ['-id']
  40. default_permissions = ()
  41. permissions = [
  42. ('view_report_customer', u'查看'),
  43. ('add_report_customer', u'添加'),
  44. ('delete_report_customer', u'删除'),
  45. ('check_report_customer', u'审核'),
  46. ]
  47. class NewCustomer(models.Model):
  48. NORMAL = 1
  49. ABANDONED = 2
  50. DEAL = 3
  51. STATUS_CHOICES = (
  52. (NORMAL, u'正常'),
  53. (ABANDONED, u'放弃'),
  54. (DEAL, u'成交'),
  55. )
  56. name = models.CharField(max_length=20, verbose_name=u"姓名")
  57. tel = models.CharField(max_length=15, verbose_name=u'电话')
  58. gender = models.PositiveSmallIntegerField(choices=settings.GENDER_CHOICES, verbose_name=u'性别',
  59. default=settings.MALE)
  60. village = models.CharField(max_length=200, verbose_name=u'小区')
  61. address = models.CharField(max_length=200, verbose_name=u'地址')
  62. source = models.ForeignKey(Option, verbose_name=u'来源', related_name='customer_source', on_delete=models.PROTECT)
  63. project = models.ManyToManyField(Option, verbose_name=u'项目', related_name='customer_category', editable=False,)
  64. report_customer = models.ForeignKey(ReportCustomer, verbose_name=u'报备客户信息', related_name='report_customer',
  65. on_delete=models.PROTECT, editable=False,)
  66. stage_progress = models.ForeignKey(Option, verbose_name=u'阶段进度', related_name='stage_progress',
  67. on_delete=models.PROTECT, editable=False,)
  68. track_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'跟踪人', related_name='track_user',
  69. editable=False, on_delete=models.PROTECT)
  70. end_time = models.DateTimeField(verbose_name=u'最后跟踪时间', null=True)
  71. next_time = models.DateField(verbose_name=u'下次跟踪时间', null=True)
  72. create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'建档人', related_name='newcustomer_create_user',
  73. editable=False, on_delete=models.PROTECT)
  74. create_time = models.DateTimeField(verbose_name=u'建档时间', auto_now_add=True, editable=False)
  75. status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u"状态", default=NORMAL)
  76. store = models.ForeignKey(Store, verbose_name=u'门店', related_name='customer_store',
  77. editable=False, on_delete=models.PROTECT)
  78. notes = models.CharField(max_length=500, verbose_name=u"备注", null=True)
  79. class Meta:
  80. db_table = 'new_customer'
  81. verbose_name = u'潜客跟踪'
  82. ordering = ['-id']
  83. default_permissions = ()
  84. permissions = [
  85. ('view_new_customer', u'查看'),
  86. ('add_review', u'跟踪报告'),
  87. ('check_review', u'跟踪审核'),
  88. ('inner_review', u'内部跟踪'),
  89. ('again_dispatch', u'重新分配'),
  90. ]
  91. class NewCustomerRemind(models.Model):
  92. customer = models.ForeignKey(NewCustomer, related_name='remind_customer', verbose_name=u"客户",
  93. on_delete=models.PROTECT)
  94. next_time = models.DateField(verbose_name=u'下次跟踪时间', null=True)
  95. remind_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'提醒人', related_name='remind_user',
  96. editable=False, on_delete=models.PROTECT)
  97. is_employee = models.BooleanField(verbose_name=u'是否业务员', default=True)
  98. store = models.ForeignKey(Store, verbose_name=u'门店', related_name='customer_remind_store',
  99. editable=False, on_delete=models.PROTECT)
  100. class Meta:
  101. db_table = 'new_customer_remind'
  102. verbose_name = u'潜客跟踪提醒'
  103. ordering = ['-id']
  104. default_permissions = ()
  105. class Review(models.Model):
  106. DEFAULT = 0
  107. KEEPUP = 1
  108. ABANDON = 2
  109. CHECK_STATUS_CHOICES = (
  110. (DEFAULT, u'未审核'),
  111. (KEEPUP, u'继续跟踪'),
  112. (ABANDON, u'放弃'),
  113. )
  114. customer = models.ForeignKey(NewCustomer, related_name='review_ref_customer', verbose_name=u"客户",
  115. on_delete=models.PROTECT)
  116. description = models.CharField(max_length=5000, verbose_name=u"回访情况")
  117. instruction = models.CharField(max_length=200, verbose_name=u"申请支援或放弃", blank=True, null=True)
  118. is_giveup = models.BooleanField(verbose_name=u"请求放弃", default=False)
  119. is_entry = models.BooleanField(verbose_name=u"是否进店", default=False)
  120. store = models.ForeignKey(Store, verbose_name=u'门店', on_delete=models.PROTECT)
  121. create_user = models.ForeignKey(settings.AUTH_USER_MODEL,related_name='review_ref_user', verbose_name=u"创建人",
  122. on_delete=models.PROTECT)
  123. create_time = models.DateTimeField(verbose_name=u"添加时间", default=timezone.now, editable=False)
  124. check_status = models.PositiveSmallIntegerField(choices=CHECK_STATUS_CHOICES, verbose_name=u"审核状态", default=DEFAULT)
  125. check_comment = models.CharField(max_length=200, verbose_name=u"审核批示", blank=True, null=True)
  126. check_user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='review_ref_checkuser', verbose_name=u"审核人",
  127. editable=False, blank=True, null=True, on_delete=models.PROTECT)
  128. check_time = models.DateTimeField(verbose_name=u"审核时间", editable=False, blank=True, null=True)
  129. is_copy = models.BooleanField(verbose_name=u"是否抄送", default=True)
  130. class Meta:
  131. db_table = "customer_review"
  132. verbose_name = u"客户跟踪记录"
  133. ordering = ('-id',)
  134. permissions = (
  135. )