models.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. # coding=utf-8
  2. from django.db import models
  3. from django.conf import settings
  4. from django.utils import timezone
  5. from apps.option.models import Option
  6. from apps.customer.models import NewCustomer
  7. from utils.format import strftime
  8. from apps.agent.models import Store
  9. from utils.exceptions import CustomError
  10. class Order(models.Model):
  11. NORMAL = 1
  12. ABANDONED = 2
  13. WAIT_DISPATCH = 3
  14. STATUS_CHOICES = (
  15. (NORMAL, u'正常'),
  16. (ABANDONED, u'放弃'),
  17. (WAIT_DISPATCH, u'进度待分配'),
  18. )
  19. no = models.CharField(max_length=50, verbose_name='单号', blank=True)
  20. project = models.ManyToManyField(Option, verbose_name=u'项目', related_name='order_category', editable=False)
  21. stage_progress = models.ForeignKey(Option, verbose_name=u'阶段进度', related_name='order_stage_progress',
  22. on_delete=models.PROTECT)
  23. customer = models.ForeignKey(NewCustomer, related_name='order_customer', verbose_name=u"订单客户",
  24. on_delete=models.PROTECT)
  25. service_user = models.ForeignKey(settings.AUTH_USER_MODEL,related_name='order_service_user', verbose_name=u"服务人员",
  26. on_delete=models.PROTECT)
  27. create_time = models.DateTimeField(verbose_name=u'下单时间', auto_now_add=True, editable=False)
  28. status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u"订单状态", default=NORMAL)
  29. notes = models.CharField(max_length=500, verbose_name=u"备注", null=True)
  30. store = models.ForeignKey(Store, verbose_name=u'门店', related_name='order_store',
  31. editable=False, on_delete=models.PROTECT)
  32. class Meta:
  33. db_table = "order"
  34. verbose_name = u"订单管理"
  35. ordering = ('-id',)
  36. default_permissions = ()
  37. permissions = [
  38. ('view_order', u'查看'),
  39. ('update_order_process', u'更新进度'),
  40. ('order_process_dispatch', u'进度分配'),
  41. ]
  42. def get_no(self):
  43. now = timezone.now()
  44. no = '%s%d-%s' % ('DD', self.store.id, now.strftime('%Y%m%d%H%M%S'))
  45. return no
  46. @staticmethod
  47. def get_instance_by_id(id):
  48. try:
  49. id = int(id)
  50. except:
  51. raise CustomError('无效的报修单ID')
  52. instance = Order.objects.filter(pk=id).first()
  53. if not instance:
  54. raise CustomError('未找到对应的报修工单')
  55. return instance
  56. class ProgressDetails(models.Model):
  57. order = models.ForeignKey(Order, verbose_name=u'订单', on_delete=models.PROTECT)
  58. operation = models.CharField(max_length=500, verbose_name='操作')
  59. user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"操作人", on_delete=models.PROTECT,
  60. editable=False)
  61. notes = models.CharField(max_length=500, verbose_name='备注', null=True)
  62. operation_time = models.DateTimeField(verbose_name='操作时间', auto_now_add=True)
  63. class Meta:
  64. db_table = 'progress_details'
  65. verbose_name = '进度明细'
  66. ordering = ('-id', )
  67. default_permissions = ()