|
# -*- 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, ConsumeInfoSubmitLogInfo, ActivityInfo
from staff.models import StaffDeleteClerkSaleSubmitLogInfo
from coupon.models import CouponInfo, UserCouponInfo
from account.models import UserInfo
from member.models import RightInfo
from statistic.models import (DistributorSaleStatisticInfo, ModelSaleStatisticInfo, ProvinceSaleStatisticInfo,
SaleclerkSaleStatisticInfo, SaleStatisticInfo, ConsumeSaleStatisticInfo, ConsumeDistributorSaleStatisticInfo, ConsumeModelSaleStatisticInfo, ConsumeProvinceSaleStatisticInfo, ConsumeUserStatisticInfo)
def exec_del_clerk_sale_submit(pk):
try:
ssli = SaleclerkSubmitLogInfo.objects.select_for_update().get(pk=pk)
except SaleclerkSubmitLogInfo.DoesNotExist:
return response()
if not ssli.status:
return response()
ssli.status = False
ssli.is_staff_delete = True
ssli.save()
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()
ymd = str(ssli.ymd)
if not clerk.test_user and not ssli.dupload:
#删除积分
integral = model.integral
clerk.num -= 1
clerk.integral -= integral
clerk.total_integral -= integral
clerk.save()
# 日销量统计
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
@transaction.atomic
def del_clerk_sale_submit_api(request):
brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
pk = int(request.POST.get('pk', ''))
exec_del_clerk_sale_submit(pk)
return response(200, 'Del Success', u'删除成功')
def exec_del_consumer_submit(pk):
try:
ssli = ConsumeInfoSubmitLogInfo.objects.select_for_update().get(pk=pk)
except ConsumeInfoSubmitLogInfo.DoesNotExist:
return response()
if not ssli.status:
return response()
sn = ssli.serialNo
ssli.status = False
ssli.save()
ConsumeInfoSubmitLogInfo.objects.filter(serialNo=sn, model_id=ssli.model_id, dupload=True, status=True).update(status=False)
if ssli.dupload:
return response()
try:
brand = BrandInfo.objects.get(brand_id=ssli.brand_id)
except BrandInfo.DoesNotExist:
return response()
try:
model = ModelInfo.objects.get(model_id=ssli.model_id)
except ModelInfo.DoesNotExist:
return response()
try:
user = UserInfo.objects.select_for_update().get(user_id=ssli.user_id)
except UserInfo.DoesNotExist:
return response()
#消除用户劵
if user.shots_num <= 5:
rights = RightInfo.objects.filter(is_send_coupon=True, status=True)
for right in rights:
if user.level == UserInfo.MEMBER_LRC:
coupon_id = right.coupon_level1_id
coupon_num = right.coupon_level1_num
elif user.level == UserInfo.MEMBER_SILVER:
coupon_id = right.coupon_level2_id
coupon_num = right.coupon_level2_num
elif user.level == UserInfo.MEMBER_GOLD:
coupon_id = right.coupon_level3_id
coupon_num = right.coupon_level3_num
elif user.level == UserInfo.MEMBER_WHITE_GOLD:
coupon_id = right.coupon_level4_id
coupon_num = right.coupon_level4_num
elif user.level == UserInfo.MEMBER_BLACK_GOLD:
coupon_id = right.coupon_level5_id
coupon_num = right.coupon_level5_num
else:
continue
try:
coupon = CouponInfo.objects.get(coupon_id=coupon_id)
except CouponInfo.DoesNotExist:
continue
user_coupons = UserCouponInfo.objects.filter(user_id=user.user_id, coupon_id=coupon_id, coupon_from='MEMBER_BENEFITS', status=True, has_used=False).values_list('pk', flat=True)
# 防止用户部分劵已使用,不够消除
UserCouponInfo.objects.filter(pk__in=list(user_coupons)[0:min(coupon_num, len(user_coupons))]).update(status=False)
# 消除活动劵
if ssli.submit_during_activity:
UserCouponInfo.objects.filter(user_id=user.user_id, coupon_from='PROMOTION', submit_pk=ssli.pk).update(status=False)
#消除积分及会员等级
integral = model.shot_member_integral
if user.shots_num <= 5:
user.level -= 1
user.shots_num -= 1
user.integral -= integral
user.integral = max(user.integral, 0)
user.save()
# 消除统计记录
ymd = str(ssli.ymd)
if not user.test_user:
# 日销量统计
ssi, _ = ConsumeSaleStatisticInfo.objects.select_for_update().get_or_create(
brand_id=brand.brand_id,
ymd=ymd,
)
ssi.num -= 1
ssi.save()
# 月销量统计
ssi, _ = ConsumeSaleStatisticInfo.objects.select_for_update().get_or_create(
brand_id=brand.brand_id,
ymd=ymd[:6],
)
ssi.num -= 1
ssi.save()
# 年销量统计
ssi, _ = ConsumeSaleStatisticInfo.objects.select_for_update().get_or_create(
brand_id=brand.brand_id,
ymd=ymd[:4],
)
ssi.num -= 1
ssi.save()
# 日用户统计
ussi, _ = ConsumeUserStatisticInfo.objects.select_for_update().get_or_create(
brand_id=brand.brand_id,
ymd=ymd,
)
try:
ussi.users.remove(user.user_id)
except ValueError:
pass
ussi.num = len(ussi.users)
ussi.save()
# 月用户统计
ussi, _ = ConsumeUserStatisticInfo.objects.select_for_update().get_or_create(
brand_id=brand.brand_id,
ymd=ymd[:6],
)
try:
ussi.users.remove(user.user_id)
except ValueError:
pass
ussi.num = len(ussi.users)
ussi.save()
# 年用户统计
ussi, _ = ConsumeUserStatisticInfo.objects.select_for_update().get_or_create(
brand_id=brand.brand_id,
ymd=ymd[:4],
)
try:
ussi.users.remove(user.user_id)
except ValueError:
pass
ussi.num = len(ussi.users)
ussi.save()
# 型号日销量统计
mssi, _ = ConsumeModelSaleStatisticInfo.objects.select_for_update().get_or_create(
brand_id=brand.brand_id,
model_name=model.model_uni_name,
ymd=ymd,
)
try:
mssi.users.remove(user.user_id)
except ValueError:
pass
mssi.num = len(mssi.users)
mssi.save()
# 型号月销量统计
mssi, _ = ConsumeModelSaleStatisticInfo.objects.select_for_update().get_or_create(
brand_id=brand.brand_id,
model_name=model.model_uni_name,
ymd=ymd[:6],
)
try:
mssi.users.remove(user.user_id)
except ValueError:
pass
mssi.num = len(mssi.users)
mssi.save()
# 型号年销量统计
mssi, _ = ConsumeModelSaleStatisticInfo.objects.select_for_update().get_or_create(
brand_id=brand.brand_id,
model_name=model.model_uni_name,
ymd=ymd[:4],
)
try:
mssi.users.remove(user.user_id)
except ValueError:
pass
mssi.num = len(mssi.users)
mssi.save()
# 省份日销量统计
pssi, _ = ProvinceSaleStatisticInfo.objects.select_for_update().get_or_create(
brand_id=brand.brand_id,
province_name=ssli.province,
ymd=ymd,
)
pssi.province_name = ssli.province
pssi.num -= 1
pssi.save()
# 省份月销量统计
pssi, _ = ProvinceSaleStatisticInfo.objects.select_for_update().get_or_create(
brand_id=brand.brand_id,
province_name=ssli.province,
ymd=ymd[:6],
)
pssi.province_name = ssli.province
pssi.num -= 1
pssi.save()
# 省份年销量统计
pssi, _ = ProvinceSaleStatisticInfo.objects.select_for_update().get_or_create(
brand_id=brand.brand_id,
province_name=ssli.province,
ymd=ymd[:4],
)
pssi.province_name = ssli.province
pssi.num -= 1
pssi.save()
@logit
@transaction.atomic
def del_consumer_submit_api(request):
brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
pk = int(request.POST.get('pk', ''))
exec_del_consumer_submit(pk)
return response(200, 'Del Success', u'删除成功')
|