|  | # -*- coding: utf-8 -*-
from django.conf import settings
from django.contrib.admin.views.decorators import staff_member_required
from django.db import transaction
from django_logit import logit
from django_response import response
from integral.models import SaleclerkIntegralIncomeExpensesInfo, SaleclerkSubmitLogInfo
from mch.models import BrandInfo, DistributorInfo, ModelInfo, SaleclerkInfo
from staff.models import StaffDeleteClerkSaleSubmitLogInfo
from statistic.models import (DistributorSaleStatisticInfo, ModelSaleStatisticInfo, ProvinceSaleStatisticInfo,
                              SaleclerkSaleStatisticInfo, SaleStatisticInfo)
def exec_del_clerk_sale_submit(pk, username):
    try:
        ssli = SaleclerkSubmitLogInfo.objects.select_for_update().get(pk=pk)
    except SaleclerkSubmitLogInfo.DoesNotExist:
        return response()
    if not ssli.status:
        return response()
    if ssli.is_staff_delete:
        return response()
    sn = ssli.code
    StaffDeleteClerkSaleSubmitLogInfo.objects.create(username=username, code=sn)
    ssli.status = False
    ssli.is_staff_delete = True
    ssli.save()
    SaleclerkIntegralIncomeExpensesInfo.objects.select_for_update().filter(code=sn).update(status=False)
    try:
        brand = BrandInfo.objects.get(pk=ssli.brand_pk)
    except BrandInfo.DoesNotExist:
        return response()
    try:
        model = ModelInfo.objects.get(pk=ssli.model_pk)
    except ModelInfo.DoesNotExist:
        return response()
    try:
        clerk = SaleclerkInfo.objects.select_for_update().get(clerk_id=ssli.clerk_id, status=True)
    except SaleclerkInfo.DoesNotExist:
        return response()
    try:
        distributor = DistributorInfo.objects.get(distributor_id=clerk.distributor_id)
    except DistributorInfo.DoesNotExist:
        return response()
    integral = model.integral
    clerk.num -= 1
    clerk.integral -= integral
    clerk.total_integral -= integral
    clerk.save()
    ymd = str(ssli.ymd)
    if not clerk.test_user and not ssli.dupload:
        # 日销量统计
        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_name=model.model_uni_name,
            ymd=ymd,
        )
        try:
            mssi.saleclerks.remove(clerk.clerk_id)
        except ValueError:
            pass
        mssi.num = len(mssi.saleclerks)
        mssi.save()
        mssi, _ = ModelSaleStatisticInfo.objects.select_for_update().get_or_create(
            brand_id=brand.brand_id,
            model_name=model.model_uni_name,
            ymd=ymd[:6],
        )
        try:
            mssi.saleclerks.remove(clerk.clerk_id)
        except ValueError:
            pass
        mssi.num = len(mssi.saleclerks)
        mssi.save()
        mssi, _ = ModelSaleStatisticInfo.objects.select_for_update().get_or_create(
            brand_id=brand.brand_id,
            model_name=model.model_uni_name,
            ymd=ymd[:4],
        )
        try:
            mssi.saleclerks.remove(clerk.clerk_id)
        except ValueError:
            pass
        mssi.num = len(mssi.saleclerks)
        mssi.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()
        # 日销售员销量统计
        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()
@logit
@staff_member_required
@transaction.atomic
def del_clerk_sale_submit_api(request):
    brand_id = request.GET.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
    pk = request.GET.get('pk', '')
    exec_del_clerk_sale_submit(pk, request.user.username)
    return response(200, 'Del Success', u'删除成功')
 |