@@ -226,6 +226,7 @@ urlpatterns += [  | 
            ||
| 226 | 226 | 
                url(r'^clerk/sale/submit$', sale_views.clerk_sale_submit_api, name='clerk_sale_submit'), # 店员销售信息提交  | 
            
| 227 | 227 | 
                url(r'^clerk/integral/list$', sale_views.clerk_integral_list_api, name='clerk_integral_list_api'), # 店员销售积分列表  | 
            
| 228 | 228 | 
                url(r'^clerk/model/list$', sale_views.clerk_model_list_api, name='clerk_model_list_api'),  | 
            
| 229 | 
                + url(r'^clerk/checkout/serialNo$', sale_views.clerk_checkout_serialNo_api, name='clerk_checkout_serialNo_api'), #校验序列号  | 
            |
| 229 | 230 | 
                ]  | 
            
| 230 | 231 | 
                 | 
            
| 231 | 232 | 
                urlpatterns += [  | 
            
                @@ -16,6 +16,7 @@ from statistic.models import (DistributorSaleStatisticInfo, ModelSaleStatisticIn  | 
            ||
| 16 | 16 | 
                SaleclerkSaleStatisticInfo, SaleStatisticInfo)  | 
            
| 17 | 17 | 
                from utils.error.errno_utils import (ProductBrandStatusCode, ProductDistributorStatusCode, ProductModelStatusCode,  | 
            
| 18 | 18 | 
                SaleclerkStatusCode)  | 
            
| 19 | 
                +from logs.models import MchInfoEncryptLogInfo  | 
            |
| 19 | 20 | 
                 | 
            
| 20 | 21 | 
                 | 
            
| 21 | 22 | 
                @logit  | 
            
                @@ -392,3 +393,43 @@ def clerk_model_list_api(request):  | 
            ||
| 392 | 393 | 
                     return response(200, data={
               | 
            
| 393 | 394 | 
                'models': models,  | 
            
| 394 | 395 | 
                })  | 
            
| 396 | 
                +  | 
            |
| 397 | 
                +@logit  | 
            |
| 398 | 
                +def clerk_checkout_serialNo_api(request):  | 
            |
| 399 | 
                +    brandID = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_PK)
               | 
            |
| 400 | 
                +    user_id = request.POST.get('user_id', '')
               | 
            |
| 401 | 
                +    serialNo = request.POST.get('serial', '')
               | 
            |
| 402 | 
                +    model_pk = request.POST.get('model_pk', '')
               | 
            |
| 403 | 
                +  | 
            |
| 404 | 
                + try:  | 
            |
| 405 | 
                + user = UserInfo.objects.get(user_id=user_id, status=True)  | 
            |
| 406 | 
                + except UserInfo.DoesNotExist:  | 
            |
| 407 | 
                + return response(SaleclerkStatusCode.CLERK_NOT_FOUND)  | 
            |
| 408 | 
                +  | 
            |
| 409 | 
                + try:  | 
            |
| 410 | 
                + brand = BrandInfo.objects.get(pk=brandID)  | 
            |
| 411 | 
                + except BrandInfo.DoesNotExist:  | 
            |
| 412 | 
                + brand = None  | 
            |
| 413 | 
                + except ValueError:  | 
            |
| 414 | 
                + brand = None  | 
            |
| 415 | 
                +  | 
            |
| 416 | 
                + if not brand:  | 
            |
| 417 | 
                + try:  | 
            |
| 418 | 
                + brand = BrandInfo.objects.get(brand_id=brandID)  | 
            |
| 419 | 
                + except BrandInfo.DoesNotExist:  | 
            |
| 420 | 
                + return response(ProductBrandStatusCode.BRAND_NOT_FOUND)  | 
            |
| 421 | 
                +  | 
            |
| 422 | 
                + try:  | 
            |
| 423 | 
                + clerk = SaleclerkInfo.objects.get(brand_id=brand.brand_id, unionid=user.unionid, status=True)  | 
            |
| 424 | 
                + except SaleclerkInfo.DoesNotExist:  | 
            |
| 425 | 
                + return response(SaleclerkStatusCode.CLERK_NOT_FOUND)  | 
            |
| 426 | 
                +  | 
            |
| 427 | 
                + try:  | 
            |
| 428 | 
                + logs = MchInfoEncryptLogInfo.objects.get(model_pk=model_pk, sn=serialNo)  | 
            |
| 429 | 
                + except MchInfoEncryptLogInfo.DoesNotExist:  | 
            |
| 430 | 
                + return response(SaleclerkStatusCode.SERIALNO_NOT_FOUND)  | 
            |
| 431 | 
                +  | 
            |
| 432 | 
                + if not logs:  | 
            |
| 433 | 
                + return response(SaleclerkStatusCode.SERIALNO_NOT_FOUND)  | 
            |
| 434 | 
                +  | 
            |
| 435 | 
                + return response(200, 'SerialNo Checkout Success', u'序列号校验成功')  | 
            
                @@ -15,6 +15,9 @@ class SaleclerkStatusCode(BaseStatusCode):  | 
            ||
| 15 | 15 | 
                # 上传  | 
            
| 16 | 16 | 
                DUPLICATE_SUBMIT = StatusCodeField(500199, 'Duplicate Submit', description=u'重复提交')  | 
            
| 17 | 17 | 
                 | 
            
| 18 | 
                + #序列号校验  | 
            |
| 19 | 
                + SERIALNO_NOT_FOUND = StatusCodeField(500200, 'SerialNo Not Found', description=u'序列号不存在')  | 
            |
| 20 | 
                +  | 
            |
| 18 | 21 | 
                 | 
            
| 19 | 22 | 
                class SalesResponsibilityStatusCode(BaseStatusCode):  | 
            
| 20 | 23 | 
                """ 销售担当相关错误码 5002xx """  |