|
# -*- 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 TimeConvert import TimeConvert as tc
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 SaleclerkInfo.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 = tc.local_string(format='%Y%m%d')
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'删除成功')
|