|
# -*- 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'删除成功')
|