|
@@ -89,13 +89,15 @@ class ReportCustomerViewSet(CustomModelViewSet):
|
|
customer = NewCustomer.objects.create(report_customer=instance, gender=instance.gender,
|
|
customer = NewCustomer.objects.create(report_customer=instance, gender=instance.gender,
|
|
track_user_id=user_id, stage_progress=stage_progress,
|
|
track_user_id=user_id, stage_progress=stage_progress,
|
|
create_user=instance.create_user, store=instance.store,
|
|
create_user=instance.create_user, store=instance.store,
|
|
- name=instance.name, tel=instance.tel, village=instance.village,
|
|
|
|
|
|
+ name=instance.name, tel=instance.tel,
|
|
|
|
+ village=instance.village,
|
|
address=instance.address, source=instance.source,
|
|
address=instance.address, source=instance.source,
|
|
- notes=instance.notes,next_time=next_time,
|
|
|
|
|
|
+ notes=instance.notes, next_time=next_time,
|
|
)
|
|
)
|
|
customer.project.add(project.id)
|
|
customer.project.add(project.id)
|
|
|
|
|
|
- NewCustomerRemind.objects.create(customer=customer, store=customer.store, next_time=next_time, remind_user_id=user_id,)
|
|
|
|
|
|
+ NewCustomerRemind.objects.create(customer=customer, store=customer.store, next_time=next_time,
|
|
|
|
+ remind_user_id=user_id, )
|
|
# 根据分配人所在店面,创建内部跟踪提醒
|
|
# 根据分配人所在店面,创建内部跟踪提醒
|
|
remind_users = request.user.get_remind_users()
|
|
remind_users = request.user.get_remind_users()
|
|
# 跟踪人和提醒人是同一个人的,不需要在加提醒
|
|
# 跟踪人和提醒人是同一个人的,不需要在加提醒
|
|
@@ -104,7 +106,8 @@ class ReportCustomerViewSet(CustomModelViewSet):
|
|
# 把next_time用当前日期加上5天
|
|
# 把next_time用当前日期加上5天
|
|
next_time = (timezone.now() + datetime.timedelta(days=5)).strftime('%Y-%m-%d')
|
|
next_time = (timezone.now() + datetime.timedelta(days=5)).strftime('%Y-%m-%d')
|
|
for remind_user in remind_users:
|
|
for remind_user in remind_users:
|
|
- NewCustomerRemind.objects.create(customer=customer, next_time=next_time, remind_user_id=remind_user,
|
|
|
|
|
|
+ NewCustomerRemind.objects.create(customer=customer, next_time=next_time,
|
|
|
|
+ remind_user_id=remind_user,
|
|
is_employee=False, store=instance.store)
|
|
is_employee=False, store=instance.store)
|
|
except CustomError as e:
|
|
except CustomError as e:
|
|
return response_error(e.get_error_msg())
|
|
return response_error(e.get_error_msg())
|
|
@@ -230,12 +233,12 @@ class NewCustomerViewSet(CustomModelViewSet):
|
|
if sort > 1 or not next_time:
|
|
if sort > 1 or not next_time:
|
|
next_time = (timezone.now() + datetime.timedelta(days=track_day)).strftime('%Y-%m-%d')
|
|
next_time = (timezone.now() + datetime.timedelta(days=track_day)).strftime('%Y-%m-%d')
|
|
data = {
|
|
data = {
|
|
- 'next_time':next_time,
|
|
|
|
- 'end_time':timezone.now(),
|
|
|
|
- 'status':NewCustomer.NORMAL,
|
|
|
|
|
|
+ 'next_time': next_time,
|
|
|
|
+ 'end_time': timezone.now(),
|
|
|
|
+ 'status': NewCustomer.NORMAL,
|
|
}
|
|
}
|
|
|
|
|
|
- NewCustomerRemind.objects.filter(customer=instance,remind_user=request.user).update(next_time=next_time)
|
|
|
|
|
|
+ NewCustomerRemind.objects.filter(customer=instance, remind_user=request.user).update(next_time=next_time)
|
|
# 如果客户已放弃,再次跟踪后自动改成正常客户,同时工单状态改成正常
|
|
# 如果客户已放弃,再次跟踪后自动改成正常客户,同时工单状态改成正常
|
|
if instance.status == NewCustomer.ABANDONED:
|
|
if instance.status == NewCustomer.ABANDONED:
|
|
Order.objects.filter(customer=instance).update(status=Order.NORMAL)
|
|
Order.objects.filter(customer=instance).update(status=Order.NORMAL)
|
|
@@ -314,8 +317,8 @@ class NewCustomerViewSet(CustomModelViewSet):
|
|
return response_ok()
|
|
return response_ok()
|
|
|
|
|
|
@action(methods=['post'], detail=True)
|
|
@action(methods=['post'], detail=True)
|
|
- def inner_review(self, request , pk):
|
|
|
|
- #内部跟踪
|
|
|
|
|
|
+ def inner_review(self, request, pk):
|
|
|
|
+ # 内部跟踪
|
|
check_permission(request, 'customer.inner_review')
|
|
check_permission(request, 'customer.inner_review')
|
|
description = request.POST.get('description')
|
|
description = request.POST.get('description')
|
|
next_time = request.POST.get('next_time')
|
|
next_time = request.POST.get('next_time')
|
|
@@ -336,7 +339,8 @@ class NewCustomerViewSet(CustomModelViewSet):
|
|
serializer = ReviewSerializer(data=data)
|
|
serializer = ReviewSerializer(data=data)
|
|
if serializer.is_valid(raise_exception=True):
|
|
if serializer.is_valid(raise_exception=True):
|
|
serializer.save()
|
|
serializer.save()
|
|
- NewCustomerRemind.objects.filter(customer=instance, remind_user=request.user).update(next_time=next_time)
|
|
|
|
|
|
+ NewCustomerRemind.objects.filter(customer=instance, remind_user=request.user).update(
|
|
|
|
+ next_time=next_time)
|
|
|
|
|
|
except ValidationError as e:
|
|
except ValidationError as e:
|
|
traceback.print_exc()
|
|
traceback.print_exc()
|
|
@@ -349,7 +353,7 @@ class NewCustomerViewSet(CustomModelViewSet):
|
|
|
|
|
|
@action(methods=['post'], detail=True)
|
|
@action(methods=['post'], detail=True)
|
|
def again_dispatch(self, request, pk):
|
|
def again_dispatch(self, request, pk):
|
|
- #重新分配
|
|
|
|
|
|
+ # 重新分配
|
|
check_permission(request, 'customer.again_dispatch')
|
|
check_permission(request, 'customer.again_dispatch')
|
|
track_user_id = request.POST.get('track_user')
|
|
track_user_id = request.POST.get('track_user')
|
|
try:
|
|
try:
|
|
@@ -360,16 +364,18 @@ class NewCustomerViewSet(CustomModelViewSet):
|
|
old_track_user = instance.track_user
|
|
old_track_user = instance.track_user
|
|
if not instance.stage_progress.track_day:
|
|
if not instance.stage_progress.track_day:
|
|
raise CustomError('当前阶段,没有设置跟踪天数!')
|
|
raise CustomError('当前阶段,没有设置跟踪天数!')
|
|
- next_time = (timezone.now() + datetime.timedelta(days=instance.stage_progress.track_day)).strftime('%Y-%m-%d')
|
|
|
|
|
|
+ next_time = (timezone.now() + datetime.timedelta(days=instance.stage_progress.track_day)).strftime(
|
|
|
|
+ '%Y-%m-%d')
|
|
|
|
|
|
instance.track_user_id = track_user_id
|
|
instance.track_user_id = track_user_id
|
|
instance.next_time = next_time
|
|
instance.next_time = next_time
|
|
instance.save()
|
|
instance.save()
|
|
# 把原跟踪人提醒更新为新的跟踪人
|
|
# 把原跟踪人提醒更新为新的跟踪人
|
|
NewCustomerRemind.objects.filter(customer=instance, remind_user=old_track_user).update(
|
|
NewCustomerRemind.objects.filter(customer=instance, remind_user=old_track_user).update(
|
|
- next_time=next_time,remind_user_id=track_user_id)
|
|
|
|
|
|
+ next_time=next_time, remind_user_id=track_user_id)
|
|
BizLog.objects.addnew(request.user, BizLog.INSERT,
|
|
BizLog.objects.addnew(request.user, BizLog.INSERT,
|
|
- u'重新分配客户经理[%s]为%s,id=%d' % (instance.name,track_user_id, instance.id), track_user_id)
|
|
|
|
|
|
+ u'重新分配客户经理[%s]为%s,id=%d' % (instance.name, track_user_id, instance.id),
|
|
|
|
+ track_user_id)
|
|
|
|
|
|
except CustomError as e:
|
|
except CustomError as e:
|
|
return response_error(e.get_error_msg())
|
|
return response_error(e.get_error_msg())
|
|
@@ -392,7 +398,7 @@ class NewCustomerViewSet(CustomModelViewSet):
|
|
raise CustomError('当前阶段,没有设置跟踪天数!')
|
|
raise CustomError('当前阶段,没有设置跟踪天数!')
|
|
next_time = (timezone.now() + datetime.timedelta(days=stage_progress.track_day)).strftime('%Y-%m-%d')
|
|
next_time = (timezone.now() + datetime.timedelta(days=stage_progress.track_day)).strftime('%Y-%m-%d')
|
|
# 获取当前客户已有项目集合
|
|
# 获取当前客户已有项目集合
|
|
- new_customers= NewCustomer.objects.filter(report_customer=instance.report_customer)
|
|
|
|
|
|
+ new_customers = NewCustomer.objects.filter(report_customer=instance.report_customer)
|
|
new_projects = []
|
|
new_projects = []
|
|
for new_customer in new_customers:
|
|
for new_customer in new_customers:
|
|
new_project = new_customer.project.all()
|
|
new_project = new_customer.project.all()
|
|
@@ -407,17 +413,19 @@ class NewCustomerViewSet(CustomModelViewSet):
|
|
exist_projects.append(option.name)
|
|
exist_projects.append(option.name)
|
|
continue
|
|
continue
|
|
|
|
|
|
- customer = NewCustomer.objects.create(report_customer=instance.report_customer, gender=instance.gender,
|
|
|
|
|
|
+ customer = NewCustomer.objects.create(report_customer=instance.report_customer,
|
|
|
|
+ gender=instance.gender,
|
|
track_user=instance.track_user, stage_progress=stage_progress,
|
|
track_user=instance.track_user, stage_progress=stage_progress,
|
|
create_user=instance.create_user, store=instance.store,
|
|
create_user=instance.create_user, store=instance.store,
|
|
- name=instance.name, tel=instance.tel, village=instance.village,
|
|
|
|
|
|
+ name=instance.name, tel=instance.tel,
|
|
|
|
+ village=instance.village,
|
|
address=instance.address, source=instance.source,
|
|
address=instance.address, source=instance.source,
|
|
- notes=instance.notes,next_time=next_time,
|
|
|
|
|
|
+ notes=instance.notes, next_time=next_time,
|
|
)
|
|
)
|
|
customer.project.add(project)
|
|
customer.project.add(project)
|
|
|
|
|
|
NewCustomerRemind.objects.create(customer=customer, store=customer.store, next_time=next_time,
|
|
NewCustomerRemind.objects.create(customer=customer, store=customer.store, next_time=next_time,
|
|
- remind_user_id=instance.track_user_id,)
|
|
|
|
|
|
+ remind_user_id=instance.track_user_id, )
|
|
# 根据分配人所在店面,创建内部跟踪提醒
|
|
# 根据分配人所在店面,创建内部跟踪提醒
|
|
remind_users = request.user.get_remind_users()
|
|
remind_users = request.user.get_remind_users()
|
|
track_user = instance.track_user
|
|
track_user = instance.track_user
|
|
@@ -427,7 +435,8 @@ class NewCustomerViewSet(CustomModelViewSet):
|
|
# 把next_time用当前日期加上5天
|
|
# 把next_time用当前日期加上5天
|
|
next_time = (timezone.now() + datetime.timedelta(days=5)).strftime('%Y-%m-%d')
|
|
next_time = (timezone.now() + datetime.timedelta(days=5)).strftime('%Y-%m-%d')
|
|
for remind_user in remind_users:
|
|
for remind_user in remind_users:
|
|
- NewCustomerRemind.objects.create(customer=customer, next_time=next_time, remind_user_id=remind_user,
|
|
|
|
|
|
+ NewCustomerRemind.objects.create(customer=customer, next_time=next_time,
|
|
|
|
+ remind_user_id=remind_user,
|
|
is_employee=False, store=instance.store)
|
|
is_employee=False, store=instance.store)
|
|
|
|
|
|
add_projects.append(option.name)
|
|
add_projects.append(option.name)
|
|
@@ -450,11 +459,13 @@ class StageCountView(APIView):
|
|
id = request.query_params.get('id') or request.user.id
|
|
id = request.query_params.get('id') or request.user.id
|
|
|
|
|
|
data = []
|
|
data = []
|
|
- stage_progress = Option.objects.filter(type=Option.STAGE_PROGRESS, enable=True).order_by('sort').values('id','name')
|
|
|
|
|
|
+ stage_progress = Option.objects.filter(type=Option.STAGE_PROGRESS, enable=True).order_by('sort').values('id',
|
|
|
|
+ 'name')
|
|
time_now = timezone.now().strftime('%Y-%m-%d')
|
|
time_now = timezone.now().strftime('%Y-%m-%d')
|
|
for stage in stage_progress:
|
|
for stage in stage_progress:
|
|
# 查询正常状态客户
|
|
# 查询正常状态客户
|
|
- reminds = NewCustomerRemind.objects.filter(customer__stage_progress=stage['id'], customer__status=NewCustomer.NORMAL)
|
|
|
|
|
|
+ reminds = NewCustomerRemind.objects.filter(customer__stage_progress=stage['id'],
|
|
|
|
+ customer__status=NewCustomer.NORMAL)
|
|
if type == 'store':
|
|
if type == 'store':
|
|
reminds = reminds.filter(store_id=id, is_employee=True)
|
|
reminds = reminds.filter(store_id=id, is_employee=True)
|
|
elif type == 'user':
|
|
elif type == 'user':
|
|
@@ -466,9 +477,11 @@ class StageCountView(APIView):
|
|
except:
|
|
except:
|
|
reminds = reminds.filter(remind_user_id=id)
|
|
reminds = reminds.filter(remind_user_id=id)
|
|
elif type == 'agent':
|
|
elif type == 'agent':
|
|
- reminds = reminds.filter(store__agent_id=id, store_id__in=request.user.get_manager_range(), is_employee=True)
|
|
|
|
|
|
+ reminds = reminds.filter(store__agent_id=id, store_id__in=request.user.get_manager_range(),
|
|
|
|
+ is_employee=True)
|
|
elif type == 'general_agent':
|
|
elif type == 'general_agent':
|
|
- reminds = reminds.filter(store__agent__general_agent_id=id, store_id__in=request.user.get_manager_range(), is_employee=True)
|
|
|
|
|
|
+ reminds = reminds.filter(store__agent__general_agent_id=id,
|
|
|
|
+ store_id__in=request.user.get_manager_range(), is_employee=True)
|
|
|
|
|
|
stage_count = {
|
|
stage_count = {
|
|
'stage_id': stage['id'], # 阶段id
|
|
'stage_id': stage['id'], # 阶段id
|
|
@@ -533,7 +546,8 @@ class ReviewViewSet(CustomModelViewSet):
|
|
Order.objects.filter(customer=instance.customer).update(status=Order.ABANDONED)
|
|
Order.objects.filter(customer=instance.customer).update(status=Order.ABANDONED)
|
|
instance.customer.next_time = next_time
|
|
instance.customer.next_time = next_time
|
|
instance.customer.save()
|
|
instance.customer.save()
|
|
- NewCustomerRemind.objects.filter(customer=instance.customer, remind_user=instance.customer.track_user).update(next_time=next_time)
|
|
|
|
|
|
+ NewCustomerRemind.objects.filter(customer=instance.customer,
|
|
|
|
+ remind_user=instance.customer.track_user).update(next_time=next_time)
|
|
except CustomError as e:
|
|
except CustomError as e:
|
|
return response_error(e.get_error_msg())
|
|
return response_error(e.get_error_msg())
|
|
except Exception as e:
|
|
except Exception as e:
|
|
@@ -554,9 +568,21 @@ class ListCountView(APIView):
|
|
Q(service_user=request.user) |
|
|
Q(service_user=request.user) |
|
|
Q(customer__create_user=request.user), status=Order.WAIT_DISPATCH).count()
|
|
Q(customer__create_user=request.user), status=Order.WAIT_DISPATCH).count()
|
|
|
|
|
|
- data ={
|
|
|
|
|
|
+ data = {
|
|
'report_customer_count': report_customer_count, # 报备审核数量
|
|
'report_customer_count': report_customer_count, # 报备审核数量
|
|
'review_count': review_count, # 跟踪审核数量
|
|
'review_count': review_count, # 跟踪审核数量
|
|
'order_count': order_count, # 进度审核数量
|
|
'order_count': order_count, # 进度审核数量
|
|
|
|
+ 'today_report': 0, # 本日新增报备
|
|
|
|
+ 'mouth_report': 0, # 本月新增报备
|
|
|
|
+ 'general_report': 0, # 总报备
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ if request.user or request.user.is_authenticated:
|
|
|
|
+ today = timezone.now().date()
|
|
|
|
+ reports = ReportCustomer.objects.filter(store__in=request.user.get_manager_range(),
|
|
|
|
+ report_status=ReportCustomer.CHECKED)
|
|
|
|
+ data['today_report'] = reports.filter(check_time__gte=str(today) + ' 00:00:00').count()
|
|
|
|
+ data['mouth_report'] = reports.filter(check_time__year=today.year,
|
|
|
|
+ check_time__month=today.month).count()
|
|
|
|
+ data['general_report'] = reports.count()
|
|
return response_ok(data)
|
|
return response_ok(data)
|