No Description

models.py 8.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. # -*- coding: utf-8 -*-
  2. from django.db import models
  3. from django.utils.translation import ugettext_lazy as _
  4. from django_models_ext import BaseModelMixin, upload_file_path, upload_file_url, upload_path
  5. from TimeConvert import TimeConvert as tc
  6. from mch.models import DistributorInfo, ModelInfo
  7. from sales.models import SalesResponsibilityInfo
  8. from utils.qiniucdn import qiniu_file_url
  9. class SaleclerkIntegralIncomeExpensesInfo(BaseModelMixin):
  10. INCOME = 0
  11. EXPENSE = 1
  12. UNFREEZE = 2
  13. TYPE = (
  14. (INCOME, u'收入'),
  15. (EXPENSE, u'支出'),
  16. (UNFREEZE, u'解冻'),
  17. )
  18. clerk_id = models.CharField(_(u'clerk_id'), max_length=32, blank=True, null=True, help_text=u'店员唯一标识', db_index=True)
  19. type = models.IntegerField(_(u'type'), choices=TYPE, default=INCOME, help_text=u'收支类别', db_index=True)
  20. brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True)
  21. brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称')
  22. model_id = models.CharField(_(u'model_id'), max_length=32, blank=True, null=True, help_text=u'型号唯一标识', db_index=True)
  23. model_name = models.CharField(_(u'model_name'), max_length=255, blank=True, null=True, help_text=u'型号名称')
  24. distributor_id = models.CharField(_(u'distributor_id'), max_length=32, blank=True, null=True, help_text=u'经销商唯一标识', db_index=True)
  25. distributor_name = models.CharField(_(u'distributor_name'), max_length=255, blank=True, null=True, help_text=u'经销商名称')
  26. code = models.CharField(_(u'code'), max_length=32, blank=True, null=True, help_text=u'机身码', db_index=True)
  27. consumer_name = models.CharField(_(u'consumer_name'), max_length=32, blank=True, null=True, help_text=u'消费者姓名')
  28. consumer_phone = models.CharField(_(u'consumer_phone'), max_length=32, blank=True, null=True, help_text=u'消费者手机号')
  29. lat = models.FloatField(_(u'lat'), default=1.0, help_text=u'纬度')
  30. lon = models.FloatField(_(u'lon'), default=1.0, help_text=u'经度')
  31. image = models.FileField(_(u'image'), upload_to=upload_path, blank=True, null=True, help_text=u'图片')
  32. integral = models.IntegerField(_(u'integral'), default=0, help_text=u'增减积分')
  33. left_integral = models.IntegerField(_(u'left_integral'), default=0, help_text=u'积分增减后数量(分)')
  34. remark = models.CharField(_(u'remark'), max_length=255, blank=True, null=True, help_text=u'备注')
  35. test_user = models.BooleanField(_(u'test_user'), default=False, help_text=_(u'是否为测试用户'))
  36. class Meta:
  37. verbose_name = _(u'saleclerkintegralincomeexpensesinfo')
  38. verbose_name_plural = _(u'saleclerkintegralincomeexpensesinfo')
  39. def __unicode__(self):
  40. return '%d' % self.pk
  41. @property
  42. def model_info(self):
  43. try:
  44. info = ModelInfo.objects.get(model_id=self.model_id).fulldata
  45. except ModelInfo.DoesNotExist:
  46. info = {}
  47. return info
  48. @property
  49. def data(self):
  50. return {
  51. 'type': self.type,
  52. 'integral': self.integral,
  53. 'model_info': self.model_info,
  54. 'modelName': self.model_name,
  55. 'serialNo': self.code,
  56. 'created_at': self.created_at,
  57. }
  58. class SaleclerkSubmitLogInfo(BaseModelMixin):
  59. brand_pk = models.IntegerField(_(u'brand_pk'), default=0, help_text=u'品牌PK', db_index=True)
  60. brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称')
  61. model_pk = models.IntegerField(_(u'model_pk'), default=0, help_text=u'型号PK', db_index=True)
  62. model_name = models.CharField(_(u'model_name'), max_length=255, blank=True, null=True, help_text=u'型号名称')
  63. model_uni_name = models.CharField(_(u'model_uni_name'), max_length=255, blank=True, null=True, help_text=u'型号统称')
  64. distributor_pk = models.IntegerField(_(u'distributor_pk'), default=0, help_text=u'经销商PK', db_index=True)
  65. distributor_id = models.CharField(_(u'distributor_id'), max_length=32, blank=True, null=True, help_text=u'经销商唯一标识', db_index=True)
  66. distributor_name = models.CharField(_(u'distributor_name'), max_length=32, blank=True, null=True, help_text=u'经销商名称')
  67. clerk_id = models.CharField(_(u'clerk_id'), max_length=32, blank=True, null=True, help_text=u'店员唯一标识', db_index=True)
  68. clerk_name = models.CharField(_(u'clerk_name'), max_length=32, blank=True, null=True, help_text=u'店员名称')
  69. code = models.CharField(_(u'code'), max_length=32, blank=True, null=True, help_text=u'机身码', db_index=True)
  70. consumer_name = models.CharField(_(u'consumer_name'), max_length=32, blank=True, null=True, help_text=u'消费者姓名')
  71. consumer_phone = models.CharField(_(u'consumer_phone'), max_length=32, blank=True, null=True, help_text=u'消费者手机号')
  72. lat = models.FloatField(_(u'lat'), default=1.0, help_text=u'纬度')
  73. lon = models.FloatField(_(u'lon'), default=1.0, help_text=u'经度')
  74. image = models.FileField(_(u'image'), upload_to=upload_path, blank=True, null=True, help_text=u'图片')
  75. code_image = models.FileField(_(u'code_image'), upload_to=upload_path, blank=True, null=True, help_text=u'序列号图片')
  76. has_scan = models.BooleanField(_(u'has_scan'), default=False, help_text=_(u'是否被消费者扫过'))
  77. remark = models.CharField(_(u'remark'), max_length=255, blank=True, null=True, help_text=u'备注')
  78. dupload = models.BooleanField(_(u'dupload'), default=False, help_text=_(u'是否为重复提交'))
  79. test_user = models.BooleanField(_(u'test_user'), default=False, help_text=_(u'是否为测试用户'))
  80. test_sn = models.BooleanField(_(u'test_sn'), default=False, help_text=_(u'是否为测试序列号'))
  81. ym = models.IntegerField(_(u'ym'), default=0, help_text=u'年月', db_index=True) # 例:201712, tc.local_string(format='%Y%m')
  82. ymd = models.IntegerField(_(u'ymd'), default=0, help_text=u'年月日', db_index=True) # 例:20171208, tc.local_string(format='%Y%m%d')
  83. trackingNo = models.CharField(_(u'trackingNo'), max_length=32, blank=True, null=True, help_text=u'快递单号')
  84. is_wxwork = models.BooleanField(_(u'is_wxwork'), default=False, help_text=_(u'是否为企业微信端'))
  85. is_staff_delete = models.BooleanField(_(u'is_staff_delete'), default=False, help_text=_(u'是否管理员删除'))
  86. code_version = models.IntegerField(_(u'code_version'), default=1, help_text=_(u'统览码版本'), db_index=True)
  87. is_upload_qiniu = models.BooleanField(_(u'is_upload_qiniu'), default=False, help_text=_(u'是否已上传七牛'))
  88. class Meta:
  89. verbose_name = _(u'销售员扫码出库记录')
  90. verbose_name_plural = _(u'销售员扫码出库记录')
  91. def __unicode__(self):
  92. return '%d' % self.pk
  93. @property
  94. def image_path(self):
  95. return upload_file_path(self.image)
  96. @property
  97. def image_url(self):
  98. return qiniu_file_url(self.image.name, bucket='tamron') if self.is_upload_qiniu else upload_file_url(self.image)
  99. @property
  100. def code_image_path(self):
  101. return upload_file_path(self.code_image)
  102. @property
  103. def code_image_url(self):
  104. return qiniu_file_url(self.code_image.name, bucket='tamron') if self.is_upload_qiniu else upload_file_url(self.code_image)
  105. @property
  106. def admindata(self):
  107. try:
  108. distributor = DistributorInfo.objects.get(distributor_id=self.distributor_id)
  109. except DistributorInfo.DoesNotExist:
  110. distributor = None
  111. if distributor:
  112. try:
  113. sr = SalesResponsibilityInfo.objects.get(sr_id=distributor.sr_id)
  114. except SalesResponsibilityInfo.DoesNotExist:
  115. sr = None
  116. else:
  117. sr = None
  118. if sr:
  119. office = distributor.office
  120. sr_name = sr.name
  121. else:
  122. office = ''
  123. sr_name = ''
  124. return {
  125. 'pk': self.pk,
  126. 'model_name': self.model_name,
  127. 'model_uni_name': self.model_uni_name,
  128. 'code': self.code,
  129. 'trackingNo': self.trackingNo,
  130. 'is_staff_delete': self.is_staff_delete,
  131. 'code_version': self.code_version,
  132. 'clerk_name': self.clerk_name,
  133. 'distributor_id': self.distributor_id,
  134. 'distributor_name': self.distributor_name,
  135. 'office': office,
  136. 'sr_name': sr_name,
  137. 'remark': self.remark,
  138. 'dupload': self.dupload,
  139. 'has_scan': self.has_scan,
  140. 'image': self.image_url,
  141. 'code_image': self.code_image_url,
  142. 'created_at': tc.local_string(utc_dt=self.created_at, format='%Y-%m-%d %H:%M:%S'),
  143. }