s-code">
+ test_user=clerk.test_user,
+ test_sn=test_sn,
+ )
+
+ if settings.CHECK_TESTSN_ENABLED and test_sn:
+ return response(200, data={
+ 'integral': 0,
+ 'total_integral': clerk.integral,
+ })
+
+ if settings.CHECK_DUPLOAD_ENABLED:
+ try:
+ sci = SaleclerkIntegralIncomeExpensesInfo.objects.get(
+ brand_id=brand.brand_id,
+ model_id=model.model_id,
+ code=serialNo,
+ status=True
+ )
+ except SaleclerkIntegralIncomeExpensesInfo.DoesNotExist:
+ sci = None
+ else:
+ sci = None
+
+ if sci:
+ ssli.dupload = True
+ ssli.save()
+
+ try:
+ clerk = SaleclerkInfo.objects.get(clerk_id=sci.clerk_id, status=True)
+ except SaleclerkInfo.DoesNotExist:
+ clerk = None
+
+ return response(SaleclerkStatusCode.DUPLICATE_SUBMIT, data={
+ 'franchiser_name': clerk.distributor_name,
+ 'clerk_name': clerk.clerk_name,
+ } if clerk else {})
+
+ # 店员积分
+ integral = model.integral
+
+ clerk.num += 1
+ clerk.integral += integral
+ clerk.total_integral += integral
+ clerk.save()
+
+ # 店员积分记录
+ if integral > 0:
+ SaleclerkIntegralIncomeExpensesInfo.objects.create(
+ clerk_id=clerk.clerk_id,
+ type=SaleclerkIntegralIncomeExpensesInfo.INCOME,
+ brand_id=brand.brand_id,
+ brand_name=brand.brand_name,
+ model_id=model.model_id,
+ model_name=model.model_name,
+ distributor_id=distributor.distributor_id,
+ distributor_name=distributor.distributor_name,
+ code=serialNo,
+ consumer_name=consumer_name,
+ consumer_phone=consumer_phone,
+ lat=lat,
+ lon=lon,
+ image=file_path,
+ integral=integral,
+ left_integral=clerk.total_integral,
+ test_user=clerk.test_user,
+ )
+
+ # TODO: Make statistic async
+ if (not settings.CHECK_DUPLOAD_ENABLED) or (not clerk.test_user and not sci):
+ ymd = tc.local_string(format='%Y%m%d')
+
+ # 日销量统计
+ ssi, _ = SaleStatisticInfo.objects.select_for_update().get_or_create(
+ brand_id=brand.brand_id,
+ ymd=ymd,
+ )
+ ssi.num += 1
+ ssi.save()
+ # 月销量统计
+ ssi, _ = SaleStatisticInfo.objects.select_for_update().get_or_create(
+ brand_id=brand.brand_id,
+ ymd=ymd[:6],
+ )
+ ssi.num += 1
+ ssi.save()
+ # 年销量统计
+ ssi, _ = SaleStatisticInfo.objects.select_for_update().get_or_create(
+ brand_id=brand.brand_id,
+ ymd=ymd[:4],
+ )
+ ssi.num += 1
+ ssi.save()
+
+ # 型号销量统计
+ mssi, _ = ModelSaleStatisticInfo.objects.select_for_update().get_or_create(
+ brand_id=brand.brand_id,
+ model_id=model.model_id,
+ ymd=ymd,
+ )
+ mssi.model_name = model.model_name
+ mssi.num += 1
+ mssi.save()
+
+ mssi2, _ = ModelSaleStatisticInfo.objects.select_for_update().get_or_create(
+ brand_id=brand.brand_id,
+ model_id=model.model_id,
+ ymd=0,
+ )
+ mssi2.model_name = model.model_name
+ mssi2.num += 1
+ mssi2.save()
+
+ # 经销商销量统计
+ dssi, _ = DistributorSaleStatisticInfo.objects.select_for_update().get_or_create(
+ brand_id=brand.brand_id,
+ distributor_id=distributor.distributor_id,
+ ymd=ymd,
+ )
+ dssi.distributor_name = distributor.distributor_name
+ dssi.num += 1
+ dssi.save()
+
+ dssi2, _ = DistributorSaleStatisticInfo.objects.select_for_update().get_or_create(
+ brand_id=brand.brand_id,
+ distributor_id=distributor.distributor_id,
+ ymd=0,
+ )
+ dssi2.distributor_name = distributor.distributor_name
+ dssi2.num += 1
+ dssi2.save()
+
+ # 日省份销量统计
+ pssi, _ = ProvinceSaleStatisticInfo.objects.select_for_update().get_or_create(
+ brand_id=brand.brand_id,
+ province_code=distributor.distributor_province_code,
+ ymd=ymd,
+ )
+ pssi.province_name = distributor.distributor_province_name
+ pssi.num += 1
+ pssi.save()
+ # 月省份销量统计
+ pssi, _ = ProvinceSaleStatisticInfo.objects.select_for_update().get_or_create(
+ brand_id=brand.brand_id,
+ province_code=distributor.distributor_province_code,
+ ymd=ymd[:6],
+ )
+ pssi.province_name = distributor.distributor_province_name
+ pssi.num += 1
+ pssi.save()
+ # 年省份销量统计
+ pssi, _ = ProvinceSaleStatisticInfo.objects.select_for_update().get_or_create(
+ brand_id=brand.brand_id,
+ province_code=distributor.distributor_province_code,
+ ymd=ymd[:4],
+ )
+ pssi.province_name = distributor.distributor_province_name
+ pssi.num += 1
+ pssi.save()
+
+ # pssi2, _ = ProvinceSaleStatisticInfo.objects.select_for_update().get_or_create(
+ # brand_id=brand.brand_id,
+ # province_code=distributor.distributor_province_code,
+ # ymd=0,
+ # )
+ # pssi2.province_name = distributor.distributor_province_name
+ # pssi2.num += 1
+ # pssi2.save()
+
+ # 日销售员销量统计
+ sssi, _ = SaleclerkSaleStatisticInfo.objects.select_for_update().get_or_create(
+ brand_id=brand.brand_id,
+ clerk_id=clerk.clerk_id,
+ ymd=ymd,
+ )
+ sssi.distributor_id = distributor.distributor_id
+ sssi.distributor_name = distributor.distributor_name
+ sssi.distributor_short_name = distributor.distributor_short_name
+ sssi.clerk_name = clerk.clerk_name
+ sssi.num += 1
+ sssi.save()
+ # 月销售员销量统计
+ sssi, _ = SaleclerkSaleStatisticInfo.objects.select_for_update().get_or_create(
+ brand_id=brand.brand_id,
+ clerk_id=clerk.clerk_id,
+ ymd=ymd[:6],
+ )
+ sssi.distributor_id = distributor.distributor_id
+ sssi.distributor_name = distributor.distributor_name
+ sssi.distributor_short_name = distributor.distributor_short_name
+ sssi.clerk_name = clerk.clerk_name
+ sssi.num += 1
+ sssi.save()
+ # 年销售员销量统计
+ sssi, _ = SaleclerkSaleStatisticInfo.objects.select_for_update().get_or_create(
+ brand_id=brand.brand_id,
+ clerk_id=clerk.clerk_id,
+ ymd=ymd[:4],
+ )
+ sssi.distributor_id = distributor.distributor_id
+ sssi.distributor_name = distributor.distributor_name
+ sssi.distributor_short_name = distributor.distributor_short_name
+ sssi.clerk_name = clerk.clerk_name
+ sssi.num += 1
+ sssi.save()
+
+ return response(200, data={
+ 'plaintext': plaintext,
+ 'logo_url': brand.brand_logo_url if brand else '',
+ 'model_imgs': model.images if model else [],
+ 'goodsInfo': {
+ 'BrandID': brand_pk,
+ 'Brand': brand.brand_name if brand else '',
+ 'ModelID': model_pk,
+ 'Model': (model.model_full_name or model.model_name) if model else '',
+ 'DistributorID': distributor_pk,
+ 'SerialNo': sn,
+ },
+ 'has_unexpired_activity': has_unexpired_activity,
+ 'coupon_info': coupon_info,
+ 'redpack_info': elog.redpack_info if elog else {},
+ 'integral': integral,
+ 'total_integral': clerk.integral,
+ })
+
+
@logit
@transaction.atomic
def clerk_sale_submit_api(request):
user_id = request.POST.get('user_id', '')
- iv = request.POST.get('iv', '')
- encryptedData = request.POST.get('encryptedData', '')
lat = request.POST.get('lat', .0)
lon = request.POST.get('lon', .0)
brandID = request.POST.get('BrandID', settings.KODO_DEFAULT_BRAND_PK)
modelID = request.POST.get('ModelID', '')
distributorID = request.POST.get('DistributorID', '')
serialNo = request.POST.get('SerialNo', '')
- verifyResult = request.POST.get('verifyResult', '')
consumer_name = request.POST.get('consumer_name', '')
consumer_phone = request.POST.get('consumer_phone', '')