#39;)
@@ -292,7 +296,7 @@ def statistic_model(request):
administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
except AdministratorInfo.DoesNotExist:
return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
-
+
logs = ConsumeModelSaleStatisticInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time).values_list('model_name').annotate(Sum('num'))
logs = [{'model_name': log[0], 'num': log[1]} for log in logs]
@@ -300,6 +304,7 @@ def statistic_model(request):
'logs': logs
})
+
def statistic_distributor(request):
brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
admin_id = request.POST.get('admin_id', '')
@@ -320,7 +325,7 @@ def statistic_distributor(request):
if model_name:
logs = logs.filter(model_name=model_name)
-
+
distributor_logs = []
distributor_names = []
@@ -337,17 +342,17 @@ def statistic_distributor(request):
else:
i = distributor_names.index(saleclerk_info.distributor_name)
distributor_logs[i]['num'] += 1
-
+
daily_logs = []
- for k, v in groupby(logs, lambda log:log['ymd']):
+ for k, v in groupby(logs, lambda log: log['ymd']):
daily_logs.append(reduce(lambda dict1, dict2: {'ymd': k, 'num': dict1['num'] + dict2['num']}, v))
-
+
model_logs = []
- for k, v in groupby(sorted(logs, key=lambda log:log['model_name']), lambda log:log['model_name']):
+ for k, v in groupby(sorted(logs, key=lambda log: log['model_name']), lambda log: log['model_name']):
model_logs.append(reduce(lambda dict1, dict2: {'model_name': k, 'num': dict1['num'] + dict2['num']}, v))
return response(200, 'Get Distributor Statistic Success', u'获取经销商统计成功', data={
'daily_logs': daily_logs,
'model_logs': model_logs,
'distributor_logs': distributor_logs
- })
+ })
@@ -204,7 +204,6 @@ def decrypt2(request): |
||
| 204 | 204 |
mieli = MchInfoEncryptLogInfo.objects.get(code_url=code) |
| 205 | 205 |
except MchInfoEncryptLogInfo.DoesNotExist: |
| 206 | 206 |
return response() |
| 207 |
- |
|
| 208 | 207 |
|
| 209 | 208 |
plaintext = mieli.plaintext |
| 210 | 209 |
|
@@ -229,7 +229,7 @@ def good_exchange(request): |
||
| 229 | 229 |
}) |
| 230 | 230 |
else: |
| 231 | 231 |
pass |
| 232 |
- |
|
| 232 |
+ |
|
| 233 | 233 |
goods.append(good.data(user_id)) |
| 234 | 234 |
|
| 235 | 235 |
return response(200, data={
|
@@ -0,0 +1,205 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 3 |
+from django.conf import settings |
|
| 4 |
+from django.contrib.admin.views.decorators import staff_member_required |
|
| 5 |
+from django.db import transaction |
|
| 6 |
+from django_logit import logit |
|
| 7 |
+from django_response import response |
|
| 8 |
+from TimeConvert import TimeConvert as tc |
|
| 9 |
+ |
|
| 10 |
+from integral.models import SaleclerkIntegralIncomeExpensesInfo, SaleclerkSubmitLogInfo |
|
| 11 |
+from mch.models import BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, ModelInfo, SaleclerkInfo |
|
| 12 |
+from statistic.models import (DistributorSaleStatisticInfo, ModelSaleStatisticInfo, ProvinceSaleStatisticInfo, |
|
| 13 |
+ SaleclerkSaleStatisticInfo, SaleStatisticInfo) |
|
| 14 |
+ |
|
| 15 |
+ |
|
| 16 |
+@logit |
|
| 17 |
+@staff_member_required |
|
| 18 |
+@transaction.atomic |
|
| 19 |
+def del_clerk_sale_submit_api(request): |
|
| 20 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
|
|
| 21 |
+ |
|
| 22 |
+ sn = request.POST.get('sn', '')
|
|
| 23 |
+ |
|
| 24 |
+ try: |
|
| 25 |
+ ssli = SaleclerkSubmitLogInfo.objects.get(code=sn) |
|
| 26 |
+ except SaleclerkSubmitLogInfo.DoesNotExist: |
|
| 27 |
+ return response() |
|
| 28 |
+ |
|
| 29 |
+ if not ssli.status: |
|
| 30 |
+ return response() |
|
| 31 |
+ |
|
| 32 |
+ if ssli.is_staff_delete: |
|
| 33 |
+ return response() |
|
| 34 |
+ |
|
| 35 |
+ ssli.status = False |
|
| 36 |
+ ssli.is_staff_delete = True |
|
| 37 |
+ ssli.save() |
|
| 38 |
+ |
|
| 39 |
+ SaleclerkIntegralIncomeExpensesInfo.objects.filter(code=sn).update(status=False) |
|
| 40 |
+ |
|
| 41 |
+ try: |
|
| 42 |
+ brand = BrandInfo.objects.get(brand_id=ssli.brand_pk) |
|
| 43 |
+ except BrandInfo.DoesNotExist: |
|
| 44 |
+ return response() |
|
| 45 |
+ |
|
| 46 |
+ try: |
|
| 47 |
+ model = ModelInfo.objects.get(pk=ssli.model_pk) |
|
| 48 |
+ except SaleclerkInfo.DoesNotExist: |
|
| 49 |
+ return response() |
|
| 50 |
+ |
|
| 51 |
+ try: |
|
| 52 |
+ clerk = SaleclerkInfo.objects.select_for_update().get(clerk_id=ssli.clerk_id, status=True) |
|
| 53 |
+ except SaleclerkInfo.DoesNotExist: |
|
| 54 |
+ return response() |
|
| 55 |
+ |
|
| 56 |
+ try: |
|
| 57 |
+ distributor = DistributorInfo.objects.get(distributor_id=clerk.distributor_id) |
|
| 58 |
+ except DistributorInfo.DoesNotExist: |
|
| 59 |
+ return response() |
|
| 60 |
+ |
|
| 61 |
+ integral = model.integral |
|
| 62 |
+ |
|
| 63 |
+ clerk.num -= 1 |
|
| 64 |
+ clerk.integral -= integral |
|
| 65 |
+ clerk.total_integral -= integral |
|
| 66 |
+ clerk.save() |
|
| 67 |
+ |
|
| 68 |
+ ymd = tc.local_string(format='%Y%m%d') |
|
| 69 |
+ |
|
| 70 |
+ if not clerk.test_user and not ssli.dupload: |
|
| 71 |
+ # 日销量统计 |
|
| 72 |
+ ssi, _ = SaleStatisticInfo.objects.select_for_update().get_or_create( |
|
| 73 |
+ brand_id=brand.brand_id, |
|
| 74 |
+ ymd=ymd, |
|
| 75 |
+ ) |
|
| 76 |
+ ssi.num -= 1 |
|
| 77 |
+ ssi.save() |
|
| 78 |
+ # 月销量统计 |
|
| 79 |
+ ssi, _ = SaleStatisticInfo.objects.select_for_update().get_or_create( |
|
| 80 |
+ brand_id=brand.brand_id, |
|
| 81 |
+ ymd=ymd[:6], |
|
| 82 |
+ ) |
|
| 83 |
+ ssi.num -= 1 |
|
| 84 |
+ ssi.save() |
|
| 85 |
+ # 年销量统计 |
|
| 86 |
+ ssi, _ = SaleStatisticInfo.objects.select_for_update().get_or_create( |
|
| 87 |
+ brand_id=brand.brand_id, |
|
| 88 |
+ ymd=ymd[:4], |
|
| 89 |
+ ) |
|
| 90 |
+ ssi.num -= 1 |
|
| 91 |
+ ssi.save() |
|
| 92 |
+ |
|
| 93 |
+ # 型号销量统计 |
|
| 94 |
+ mssi, _ = ModelSaleStatisticInfo.objects.select_for_update().get_or_create( |
|
| 95 |
+ brand_id=brand.brand_id, |
|
| 96 |
+ model_name=model.model_uni_name, |
|
| 97 |
+ ymd=ymd, |
|
| 98 |
+ ) |
|
| 99 |
+ mssi.saleclerks.remove(clerk.clerk_id) |
|
| 100 |
+ mssi.num = len(mssi.saleclerks) |
|
| 101 |
+ mssi.save() |
|
| 102 |
+ |
|
| 103 |
+ mssi, _ = ModelSaleStatisticInfo.objects.select_for_update().get_or_create( |
|
| 104 |
+ brand_id=brand.brand_id, |
|
| 105 |
+ model_name=model.model_uni_name, |
|
| 106 |
+ ymd=ymd[:6], |
|
| 107 |
+ ) |
|
| 108 |
+ mssi.saleclerks.remove(clerk.clerk_id) |
|
| 109 |
+ mssi.num = len(mssi.saleclerks) |
|
| 110 |
+ mssi.save() |
|
| 111 |
+ |
|
| 112 |
+ mssi, _ = ModelSaleStatisticInfo.objects.select_for_update().get_or_create( |
|
| 113 |
+ brand_id=brand.brand_id, |
|
| 114 |
+ model_name=model.model_uni_name, |
|
| 115 |
+ ymd=ymd[:4], |
|
| 116 |
+ ) |
|
| 117 |
+ mssi.saleclerks.remove(clerk.clerk_id) |
|
| 118 |
+ mssi.num = len(mssi.saleclerks) |
|
| 119 |
+ mssi.save() |
|
| 120 |
+ |
|
| 121 |
+ # 经销商销量统计 |
|
| 122 |
+ dssi, _ = DistributorSaleStatisticInfo.objects.select_for_update().get_or_create( |
|
| 123 |
+ brand_id=brand.brand_id, |
|
| 124 |
+ distributor_id=distributor.distributor_id, |
|
| 125 |
+ ymd=ymd, |
|
| 126 |
+ ) |
|
| 127 |
+ dssi.distributor_name = distributor.distributor_name |
|
| 128 |
+ dssi.num -= 1 |
|
| 129 |
+ dssi.save() |
|
| 130 |
+ |
|
| 131 |
+ dssi2, _ = DistributorSaleStatisticInfo.objects.select_for_update().get_or_create( |
|
| 132 |
+ brand_id=brand.brand_id, |
|
| 133 |
+ distributor_id=distributor.distributor_id, |
|
| 134 |
+ ymd=0, |
|
| 135 |
+ ) |
|
| 136 |
+ dssi2.distributor_name = distributor.distributor_name |
|
| 137 |
+ dssi2.num -= 1 |
|
| 138 |
+ dssi2.save() |
|
| 139 |
+ |
|
| 140 |
+ # 日省份销量统计 |
|
| 141 |
+ pssi, _ = ProvinceSaleStatisticInfo.objects.select_for_update().get_or_create( |
|
| 142 |
+ brand_id=brand.brand_id, |
|
| 143 |
+ province_code=distributor.distributor_province_code, |
|
| 144 |
+ ymd=ymd, |
|
| 145 |
+ ) |
|
| 146 |
+ pssi.province_name = distributor.distributor_province_name |
|
| 147 |
+ pssi.num -= 1 |
|
| 148 |
+ pssi.save() |
|
| 149 |
+ # 月省份销量统计 |
|
| 150 |
+ pssi, _ = ProvinceSaleStatisticInfo.objects.select_for_update().get_or_create( |
|
| 151 |
+ brand_id=brand.brand_id, |
|
| 152 |
+ province_code=distributor.distributor_province_code, |
|
| 153 |
+ ymd=ymd[:6], |
|
| 154 |
+ ) |
|
| 155 |
+ pssi.province_name = distributor.distributor_province_name |
|
| 156 |
+ pssi.num -= 1 |
|
| 157 |
+ pssi.save() |
|
| 158 |
+ # 年省份销量统计 |
|
| 159 |
+ pssi, _ = ProvinceSaleStatisticInfo.objects.select_for_update().get_or_create( |
|
| 160 |
+ brand_id=brand.brand_id, |
|
| 161 |
+ province_code=distributor.distributor_province_code, |
|
| 162 |
+ ymd=ymd[:4], |
|
| 163 |
+ ) |
|
| 164 |
+ pssi.province_name = distributor.distributor_province_name |
|
| 165 |
+ pssi.num -= 1 |
|
| 166 |
+ pssi.save() |
|
| 167 |
+ |
|
| 168 |
+ # 日销售员销量统计 |
|
| 169 |
+ sssi, _ = SaleclerkSaleStatisticInfo.objects.select_for_update().get_or_create( |
|
| 170 |
+ brand_id=brand.brand_id, |
|
| 171 |
+ clerk_id=clerk.clerk_id, |
|
| 172 |
+ ymd=ymd, |
|
| 173 |
+ ) |
|
| 174 |
+ sssi.distributor_id = distributor.distributor_id |
|
| 175 |
+ sssi.distributor_name = distributor.distributor_name |
|
| 176 |
+ sssi.distributor_short_name = distributor.distributor_short_name |
|
| 177 |
+ sssi.clerk_name = clerk.clerk_name |
|
| 178 |
+ sssi.num -= 1 |
|
| 179 |
+ sssi.save() |
|
| 180 |
+ # 月销售员销量统计 |
|
| 181 |
+ sssi, _ = SaleclerkSaleStatisticInfo.objects.select_for_update().get_or_create( |
|
| 182 |
+ brand_id=brand.brand_id, |
|
| 183 |
+ clerk_id=clerk.clerk_id, |
|
| 184 |
+ ymd=ymd[:6], |
|
| 185 |
+ ) |
|
| 186 |
+ sssi.distributor_id = distributor.distributor_id |
|
| 187 |
+ sssi.distributor_name = distributor.distributor_name |
|
| 188 |
+ sssi.distributor_short_name = distributor.distributor_short_name |
|
| 189 |
+ sssi.clerk_name = clerk.clerk_name |
|
| 190 |
+ sssi.num -= 1 |
|
| 191 |
+ sssi.save() |
|
| 192 |
+ # 年销售员销量统计 |
|
| 193 |
+ sssi, _ = SaleclerkSaleStatisticInfo.objects.select_for_update().get_or_create( |
|
| 194 |
+ brand_id=brand.brand_id, |
|
| 195 |
+ clerk_id=clerk.clerk_id, |
|
| 196 |
+ ymd=ymd[:4], |
|
| 197 |
+ ) |
|
| 198 |
+ sssi.distributor_id = distributor.distributor_id |
|
| 199 |
+ sssi.distributor_name = distributor.distributor_name |
|
| 200 |
+ sssi.distributor_short_name = distributor.distributor_short_name |
|
| 201 |
+ sssi.clerk_name = clerk.clerk_name |
|
| 202 |
+ sssi.num -= 1 |
|
| 203 |
+ sssi.save() |
|
| 204 |
+ |
|
| 205 |
+ return response(200, 'Del Success', u'删除成功') |
@@ -6,7 +6,7 @@ from django_file_upload import views as file_views |
||
| 6 | 6 |
from account import tourguide_views |
| 7 | 7 |
from account import views as account_views |
| 8 | 8 |
from api import (admin_views, clerk_views, distributor_views, encrypt_views, mch_views, member_views, model_views, |
| 9 |
- operator_views, sr_views, log_views) |
|
| 9 |
+ operator_views, sr_views, staff_views, log_views) |
|
| 10 | 10 |
from box import views as box_views |
| 11 | 11 |
from geo import views as geo_views |
| 12 | 12 |
from group import (groupuser_views, lensman_views, tourguidegroup_views, tourguidegroupadmin_views, |
@@ -295,7 +295,7 @@ urlpatterns += [ |
||
| 295 | 295 |
url(r'^admin/query_userinfo$', admin_views.query_userinfo, name='query_userinfo'), |
| 296 | 296 |
url(r'^admin/userinfo_update$', admin_views.userinfo_update, name='userinfo_update'), |
| 297 | 297 |
|
| 298 |
- #statistic |
|
| 298 |
+ # statistic |
|
| 299 | 299 |
url(r'^admin/statistic/user_profile$', admin_views.statistic_userprofile, name='statistic_userprofile'), |
| 300 | 300 |
url(r'^admin/statistic/consumer/daily$', admin_views.statistic_daily, name='statistic_daily'), |
| 301 | 301 |
url(r'^admin/statistic/consumer/model$', admin_views.statistic_model, name='statistic_model'), |
@@ -343,4 +343,8 @@ urlpatterns += [ |
||
| 343 | 343 |
|
| 344 | 344 |
urlpatterns += [ |
| 345 | 345 |
url(r'^log/camera/adaptive$', log_views.collect_camera_adaptive_log, name='log_camera_adaptive'), |
| 346 |
-] |
|
| 346 |
+] |
|
| 347 |
+ |
|
| 348 |
+urlpatterns += [ |
|
| 349 |
+ url(r'^del/clerk/sale/submit$', staff_views.del_clerk_sale_submit_api, name='del_clerk_sale_submit_api'), |
|
| 350 |
+] |
@@ -69,12 +69,11 @@ class Command(CompatibilityBaseCommand): |
||
| 69 | 69 |
user_id = v.get('user_id', '')
|
| 70 | 70 |
ymd = v.get('ymd', '')
|
| 71 | 71 |
|
| 72 |
- #更新用户表 |
|
| 72 |
+ # 更新用户表 |
|
| 73 | 73 |
user = UserInfo.objects.get(user_id=user_id, status=True) |
| 74 | 74 |
user.province_name = ProvinceShortModelMixin.PROVINCE_CODE_NAME_DICT.get(province_code) |
| 75 | 75 |
user.save() |
| 76 | 76 |
|
| 77 |
- |
|
| 78 | 77 |
# [消费者维度]省份销量统计 |
| 79 | 78 |
# 日 |
| 80 | 79 |
cpssi, _ = ConsumeProvinceSaleStatisticInfo.objects.select_for_update().get_or_create( |
@@ -3,4 +3,5 @@ from __future__ import unicode_literals |
||
| 3 | 3 |
|
| 4 | 4 |
from django.test import TestCase |
| 5 | 5 |
|
| 6 |
+ |
|
| 6 | 7 |
# Create your tests here. |
@@ -3,4 +3,5 @@ from __future__ import unicode_literals |
||
| 3 | 3 |
|
| 4 | 4 |
from django.shortcuts import render |
| 5 | 5 |
|
| 6 |
+ |
|
| 6 | 7 |
# Create your views here. |
@@ -0,0 +1,20 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+# Generated by Django 1.11.28 on 2020-03-01 12:52 |
|
| 3 |
+from __future__ import unicode_literals |
|
| 4 |
+ |
|
| 5 |
+from django.db import migrations, models |
|
| 6 |
+ |
|
| 7 |
+ |
|
| 8 |
+class Migration(migrations.Migration): |
|
| 9 |
+ |
|
| 10 |
+ dependencies = [ |
|
| 11 |
+ ('integral', '0012_saleclerksubmitloginfo_is_wxwork'),
|
|
| 12 |
+ ] |
|
| 13 |
+ |
|
| 14 |
+ operations = [ |
|
| 15 |
+ migrations.AddField( |
|
| 16 |
+ model_name='saleclerksubmitloginfo', |
|
| 17 |
+ name='is_staff_delete', |
|
| 18 |
+ field=models.BooleanField(db_index=True, default=False, help_text='\u662f\u5426\u7ba1\u7406\u5458\u5220\u9664', verbose_name='is_staff_delete'), |
|
| 19 |
+ ), |
|
| 20 |
+ ] |
@@ -114,6 +114,8 @@ class SaleclerkSubmitLogInfo(BaseModelMixin): |
||
| 114 | 114 |
|
| 115 | 115 |
is_wxwork = models.BooleanField(_(u'is_wxwork'), default=False, help_text=_(u'是否为企业微信端'), db_index=True) |
| 116 | 116 |
|
| 117 |
+ is_staff_delete = models.BooleanField(_(u'is_staff_delete'), default=False, help_text=_(u'是否管理员删除'), db_index=True) |
|
| 118 |
+ |
|
| 117 | 119 |
class Meta: |
| 118 | 120 |
verbose_name = _(u'saleclerksubmitloginfo') |
| 119 | 121 |
verbose_name_plural = _(u'saleclerksubmitloginfo') |
@@ -21,15 +21,18 @@ class MchLogInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin): |
||
| 21 | 21 |
list_filter = ('operator_id', 'app_version', 'status')
|
| 22 | 22 |
search_fields = ('operator_id', 'app_version')
|
| 23 | 23 |
|
| 24 |
+ |
|
| 24 | 25 |
class MchLogInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin): |
| 25 | 26 |
list_display = ('log_id', 'log_file', 'operator_id', 'app_version', 'status', 'created_at', 'updated_at')
|
| 26 | 27 |
list_filter = ('operator_id', 'app_version', 'status')
|
| 27 | 28 |
search_fields = ('operator_id', 'app_version')
|
| 28 | 29 |
|
| 30 |
+ |
|
| 29 | 31 |
class MchSearchModelAndCameraLogInfoAdmin(admin.ModelAdmin): |
| 30 | 32 |
list_display = ('user_id', 'is_search_model', 'is_selected_model', 'is_search_camera', 'is_search_model_camera', 'is_search_camera_after_model', 'created_at')
|
| 31 | 33 |
list_filter = ('is_search_model', 'is_selected_model', 'is_search_camera', 'is_search_model_camera', 'is_search_camera_after_model')
|
| 32 | 34 |
|
| 35 |
+ |
|
| 33 | 36 |
admin.site.register(MchInfoDecryptLogInfo, MchInfoDecryptLogInfoAdmin) |
| 34 | 37 |
admin.site.register(MchInfoEncryptLogInfo, MchInfoEncryptLogInfoAdmin) |
| 35 | 38 |
admin.site.register(MchSearchModelAndCameraLogInfo, MchSearchModelAndCameraLogInfoAdmin) |
@@ -72,6 +72,7 @@ class MchLogInfo(BaseModelMixin): |
||
| 72 | 72 |
def __unicode__(self): |
| 73 | 73 |
return unicode(self.pk) |
| 74 | 74 |
|
| 75 |
+ |
|
| 75 | 76 |
class MchSearchModelAndCameraLogInfo(BaseModelMixin): |
| 76 | 77 |
user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True) |
| 77 | 78 |
|
@@ -88,4 +89,4 @@ class MchSearchModelAndCameraLogInfo(BaseModelMixin): |
||
| 88 | 89 |
verbose_name_plural = _(u'mchsearchmodelandcameraloginfo') |
| 89 | 90 |
|
| 90 | 91 |
def __unicode__(self): |
| 91 |
- return unicode(self.pk) |
|
| 92 |
+ return unicode(self.pk) |
@@ -635,7 +635,7 @@ class ConsumeInfoSubmitLogInfo(BaseModelMixin): |
||
| 635 | 635 |
model_info = ModelInfo.objects.get(model_id=self.model_id) |
| 636 | 636 |
except ModelInfo.DoesNotExist: |
| 637 | 637 |
model_info = {}
|
| 638 |
- |
|
| 638 |
+ |
|
| 639 | 639 |
return {
|
| 640 | 640 |
'model_name': self.model_name, |
| 641 | 641 |
'serialNo': self.serialNo, |
@@ -644,6 +644,7 @@ class ConsumeInfoSubmitLogInfo(BaseModelMixin): |
||
| 644 | 644 |
'created_at': tc.local_string(self.created_at, format='%Y-%m-%d'), |
| 645 | 645 |
} |
| 646 | 646 |
|
| 647 |
+ |
|
| 647 | 648 |
class ActivityInfo(BaseModelMixin): |
| 648 | 649 |
FIXED_EXPIRED_TIME = 0 |
| 649 | 650 |
CHANGED_EXPIRED_TIME = 1 |
@@ -91,7 +91,7 @@ class GoodsInfo(BaseModelMixin): |
||
| 91 | 91 |
'able': True, |
| 92 | 92 |
'value': self.value, |
| 93 | 93 |
} |
| 94 |
- |
|
| 94 |
+ |
|
| 95 | 95 |
def details(self, user_id): |
| 96 | 96 |
detail = self.data(user_id) |
| 97 | 97 |
detail['desc'] = self.desc |
@@ -97,9 +97,7 @@ def clerk_sale_submit_api(request): |
||
| 97 | 97 |
ymd = tc.local_string(format='%Y%m%d') |
| 98 | 98 |
|
| 99 | 99 |
# 是否被消费者扫过 |
| 100 |
- has_scan = ConsumeInfoSubmitLogInfo.objects.filter( |
|
| 101 |
- model_id=model.model_id, |
|
| 102 |
- serialNo=serialNo).exists() |
|
| 100 |
+ has_scan = ConsumeInfoSubmitLogInfo.objects.filter(model_id=model.model_id, serialNo=serialNo).exists() |
|
| 103 | 101 |
|
| 104 | 102 |
# 店员提交记录 |
| 105 | 103 |
ssli = SaleclerkSubmitLogInfo.objects.create( |
@@ -239,7 +237,6 @@ def clerk_sale_submit_api(request): |
||
| 239 | 237 |
mssi.num = len(mssi.saleclerks) |
| 240 | 238 |
mssi.save() |
| 241 | 239 |
|
| 242 |
- |
|
| 243 | 240 |
# 经销商销量统计 |
| 244 | 241 |
dssi, _ = DistributorSaleStatisticInfo.objects.select_for_update().get_or_create( |
| 245 | 242 |
brand_id=brand.brand_id, |
@@ -287,15 +284,6 @@ def clerk_sale_submit_api(request): |
||
| 287 | 284 |
pssi.num += 1 |
| 288 | 285 |
pssi.save() |
| 289 | 286 |
|
| 290 |
- # pssi2, _ = ProvinceSaleStatisticInfo.objects.select_for_update().get_or_create( |
|
| 291 |
- # brand_id=brand.brand_id, |
|
| 292 |
- # province_code=distributor.distributor_province_code, |
|
| 293 |
- # ymd=0, |
|
| 294 |
- # ) |
|
| 295 |
- # pssi2.province_name = distributor.distributor_province_name |
|
| 296 |
- # pssi2.num += 1 |
|
| 297 |
- # pssi2.save() |
|
| 298 |
- |
|
| 299 | 287 |
# 日销售员销量统计 |
| 300 | 288 |
sssi, _ = SaleclerkSaleStatisticInfo.objects.select_for_update().get_or_create( |
| 301 | 289 |
brand_id=brand.brand_id, |
@@ -451,9 +439,8 @@ def clerk_checkout_serialNo_api(request): |
||
| 451 | 439 |
except SaleclerkInfo.DoesNotExist: |
| 452 | 440 |
return response(SaleclerkStatusCode.CLERK_NOT_FOUND) |
| 453 | 441 |
|
| 454 |
- |
|
| 455 | 442 |
log = MchInfoEncryptLogInfo.objects.filter(model_pk=model_pk, sn=serialNo) |
| 456 |
- |
|
| 443 |
+ |
|
| 457 | 444 |
if not log: |
| 458 | 445 |
return response(ProductMachineStatusCode.SN_NOT_FOUND) |
| 459 | 446 |
|
@@ -37,5 +37,3 @@ def marketcodedownload(application_id, code_start, code_end, isv_application_id= |
||
| 37 | 37 |
code_index=code_index, |
| 38 | 38 |
code_url=code_url |
| 39 | 39 |
) |
| 40 |
- |
|
| 41 |
- |
@@ -7,7 +7,7 @@ from django.conf import settings |
||
| 7 | 7 |
from pysnippets.strsnippets import strip |
| 8 | 8 |
from TimeConvert import TimeConvert as tc |
| 9 | 9 |
|
| 10 |
-from mch.models import BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, ModelInfo, ModelCameraBodyInfo |
|
| 10 |
+from mch.models import BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, ModelCameraBodyInfo, ModelInfo |
|
| 11 | 11 |
from statistic.models import (ConsumeDistributorSaleStatisticInfo, ConsumeModelSaleStatisticInfo, |
| 12 | 12 |
ConsumeProvinceSaleStatisticInfo, ConsumeSaleStatisticInfo, ConsumeUserStatisticInfo, |
| 13 | 13 |
DistributorSaleStatisticInfo, ModelSaleStatisticInfo, ProvinceSaleStatisticInfo, |
@@ -3,4 +3,5 @@ from __future__ import unicode_literals |
||
| 3 | 3 |
|
| 4 | 4 |
from django.contrib import admin |
| 5 | 5 |
|
| 6 |
+ |
|
| 6 | 7 |
# Register your models here. |
@@ -3,4 +3,5 @@ from __future__ import unicode_literals |
||
| 3 | 3 |
|
| 4 | 4 |
from django.db import models |
| 5 | 5 |
|
| 6 |
+ |
|
| 6 | 7 |
# Create your models here. |
@@ -3,4 +3,5 @@ from __future__ import unicode_literals |
||
| 3 | 3 |
|
| 4 | 4 |
from django.test import TestCase |
| 5 | 5 |
|
| 6 |
+ |
|
| 6 | 7 |
# Create your tests here. |