educode_sales 0.1.0 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/educode_sales/app.css +2 -1
- data/app/controllers/educode_sales/activities_controller.rb +7 -1
- data/app/controllers/educode_sales/application_controller.rb +0 -1
- data/app/controllers/educode_sales/businesses_controller.rb +16 -9
- data/app/controllers/educode_sales/follow_ups_controller.rb +12 -8
- data/app/controllers/educode_sales/operation_plans_controller.rb +155 -0
- data/app/controllers/educode_sales/operation_reports_controller.rb +125 -0
- data/app/controllers/educode_sales/places_controller.rb +3 -4
- data/app/controllers/educode_sales/plans_controller.rb +12 -10
- data/app/controllers/educode_sales/roles_controller.rb +11 -0
- data/app/controllers/educode_sales/sale_reports_controller.rb +5 -4
- data/app/controllers/educode_sales/sales_controller.rb +4 -1
- data/app/controllers/educode_sales/sessions_controller.rb +2 -1
- data/app/controllers/educode_sales/teacher_follows_controller.rb +146 -0
- data/app/controllers/educode_sales/teachers_controller.rb +113 -11
- data/app/models/ability.rb +0 -1
- data/app/models/educode_sales/activity.rb +2 -1
- data/app/models/educode_sales/business.rb +0 -1
- data/app/models/educode_sales/common.rb +1 -0
- data/app/models/educode_sales/course_subject.rb +1 -1
- data/app/models/educode_sales/money_plan.rb +3 -3
- data/app/models/educode_sales/operation_plan.rb +2 -0
- data/app/models/educode_sales/place.rb +1 -0
- data/app/models/educode_sales/sale_plan.rb +2 -0
- data/app/models/educode_sales/staff.rb +5 -3
- data/app/models/educode_sales/teacher.rb +20 -1
- data/app/views/educode_sales/activities/edit.html.erb +4 -4
- data/app/views/educode_sales/activities/index.html.erb +23 -8
- data/app/views/educode_sales/activities/index.json.jbuilder +1 -1
- data/app/views/educode_sales/activities/new.html.erb +4 -3
- data/app/views/educode_sales/businesses/edit_follow_record.html.erb +2 -2
- data/app/views/educode_sales/businesses/edit_plan.html.erb +12 -7
- data/app/views/educode_sales/businesses/index.html.erb +137 -141
- data/app/views/educode_sales/businesses/index.json.jbuilder +2 -1
- data/app/views/educode_sales/businesses/new.html.erb +1 -1
- data/app/views/educode_sales/businesses/show_follow.html.erb +18 -3
- data/app/views/educode_sales/businesses/show_follow_record.html.erb +1 -1
- data/app/views/educode_sales/home/search_users.json.jbuilder +1 -1
- data/app/views/educode_sales/operation_plans/_monthPlan.html.erb +82 -88
- data/app/views/educode_sales/operation_plans/_monthly.html.erb +126 -97
- data/app/views/educode_sales/operation_plans/_weekPlan.html.erb +103 -90
- data/app/views/educode_sales/operation_plans/_weekly.html.erb +116 -87
- data/app/views/educode_sales/operation_plans/edit_month.html.erb +44 -32
- data/app/views/educode_sales/operation_plans/edit_monthly.html.erb +1 -1
- data/app/views/educode_sales/operation_plans/edit_week.html.erb +49 -39
- data/app/views/educode_sales/operation_plans/edit_weekly.html.erb +1 -1
- data/app/views/educode_sales/operation_plans/index.html.erb +35 -5
- data/app/views/educode_sales/operation_plans/index.json.jbuilder +19 -0
- data/app/views/educode_sales/operation_plans/my_month.json.jbuilder +18 -0
- data/app/views/educode_sales/operation_plans/my_week.json.jbuilder +19 -0
- data/app/views/educode_sales/operation_plans/new_month.html.erb +13 -10
- data/app/views/educode_sales/operation_plans/new_monthly.html.erb +162 -72
- data/app/views/educode_sales/operation_plans/new_week.html.erb +14 -7
- data/app/views/educode_sales/operation_plans/new_weekly.html.erb +205 -120
- data/app/views/educode_sales/operation_plans/show_month.html.erb +4 -10
- data/app/views/educode_sales/operation_plans/show_week.html.erb +20 -25
- data/app/views/educode_sales/operation_plans/show_weekly.html.erb +6 -6
- data/app/views/educode_sales/operation_reports/audit.html.erb +214 -0
- data/app/views/educode_sales/operation_reports/edit.html.erb +234 -0
- data/app/views/educode_sales/operation_reports/index.json.jbuilder +18 -0
- data/app/views/educode_sales/operation_reports/plans.json.jbuilder +19 -0
- data/app/views/educode_sales/operation_reports/show.html.erb +139 -0
- data/app/views/educode_sales/operations/trends.html.erb +8 -0
- data/app/views/educode_sales/places/index.html.erb +6 -0
- data/app/views/educode_sales/places/index.json.jbuilder +1 -1
- data/app/views/educode_sales/plans/_monthPlan.html.erb +9 -1
- data/app/views/educode_sales/plans/_monthly.html.erb +10 -2
- data/app/views/educode_sales/plans/_weekPlan.html.erb +17 -5
- data/app/views/educode_sales/plans/_weekly.html.erb +10 -2
- data/app/views/educode_sales/plans/audit_weekly.html.erb +6 -0
- data/app/views/educode_sales/plans/edit_monthly.html.erb +8 -0
- data/app/views/educode_sales/plans/edit_week.html.erb +8 -2
- data/app/views/educode_sales/plans/edit_weekly.html.erb +8 -0
- data/app/views/educode_sales/plans/index.json.jbuilder +1 -1
- data/app/views/educode_sales/plans/my_month.json.jbuilder +1 -1
- data/app/views/educode_sales/plans/my_week.json.jbuilder +1 -1
- data/app/views/educode_sales/plans/new_month.html.erb +7 -3
- data/app/views/educode_sales/plans/new_monthly.html.erb +8 -0
- data/app/views/educode_sales/plans/new_week.html.erb +8 -2
- data/app/views/educode_sales/plans/new_weekly.html.erb +7 -1
- data/app/views/educode_sales/roles/index.html.erb +33 -2
- data/app/views/educode_sales/sale_reports/index.json.jbuilder +1 -1
- data/app/views/educode_sales/sale_trends/trends.html.erb +8 -0
- data/app/views/educode_sales/sales/index.html.erb +2 -1
- data/app/views/educode_sales/sales/operations.html.erb +5 -2
- data/app/views/educode_sales/sessions/login.html.erb +1 -1
- data/app/views/educode_sales/staffs/edit.html.erb +2 -3
- data/app/views/educode_sales/staffs/index.html.erb +4 -4
- data/app/views/educode_sales/staffs/new.html.erb +1 -1
- data/app/views/educode_sales/teachers/add_courses.html.erb +100 -19
- data/app/views/educode_sales/teachers/course_subject.json.jbuilder +10 -0
- data/app/views/educode_sales/teachers/edit.html.erb +54 -18
- data/app/views/educode_sales/teachers/edit_follow_record.html.erb +49 -30
- data/app/views/educode_sales/teachers/index.html.erb +20 -11
- data/app/views/educode_sales/teachers/index.json.jbuilder +2 -0
- data/app/views/educode_sales/teachers/new.html.erb +8 -6
- data/app/views/educode_sales/teachers/new_follow_record.html.erb +54 -29
- data/app/views/educode_sales/teachers/show_follow.html.erb +150 -170
- data/app/views/educode_sales/teachers/show_follow.json.jbuilder +20 -0
- data/app/views/educode_sales/teachers/show_follow_record.html.erb +11 -42
- data/app/views/educode_sales/teachers/unfinish_plans.json.jbuilder +14 -0
- data/app/views/layouts/educode_sales/application.html.erb +23 -2
- data/config/routes.rb +22 -4
- data/db/migrate/20210915061738_add_students_count_teacher_follow_ups.rb +9 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +19 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e11b0c160f2894e96d39dff5b6f90e895950940a
|
4
|
+
data.tar.gz: fcb96df55ddd39ed2dc9e67e4cd6313cdd6c8259
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5fba1e9ca510c1803807abb69e41a1482a0858b4e7e54757fdf894ae5460b110ae8bd1faf0559de01cc108f47594bdc2f8cd0e4f90c91e59054a47f7f99d5b8
|
7
|
+
data.tar.gz: 0c6e805fe44da4508bc033bbf63846bda0bd24248a3f8face88ae839fc06ceabb90e9dbb061f6f8cae7fd91b711806f0c841b0c9aa2fcc9541166e77cbce4e7a
|
@@ -243,7 +243,8 @@ td .layui-table-cell .layui-form-select {
|
|
243
243
|
margin-top: 5px;
|
244
244
|
}
|
245
245
|
|
246
|
-
.edit-table .layui-table-body.layui-table-main
|
246
|
+
.edit-table .layui-table-body.layui-table-main,
|
247
|
+
.min-height-table .layui-table-body.layui-table-main {
|
247
248
|
min-height: 200px;
|
248
249
|
}
|
249
250
|
|
@@ -7,7 +7,13 @@ module EducodeSales
|
|
7
7
|
format.html do
|
8
8
|
end
|
9
9
|
format.json do
|
10
|
-
@activities = Activity
|
10
|
+
@activities = Activity
|
11
|
+
if params[:sort].present? && params[:sort][:field]
|
12
|
+
@activities = @activities.order("#{params[:sort][:field]} #{params[:sort][:order]}")
|
13
|
+
else
|
14
|
+
@activities = @activities.order("created_at desc")
|
15
|
+
end
|
16
|
+
@activities = @activities.page(params[:page]).per(params[:per_page])
|
11
17
|
end
|
12
18
|
end
|
13
19
|
end
|
@@ -4,6 +4,7 @@ module EducodeSales
|
|
4
4
|
class BusinessesController < ApplicationController
|
5
5
|
|
6
6
|
def index
|
7
|
+
authorize! :read, Business
|
7
8
|
respond_to do |format|
|
8
9
|
format.html do
|
9
10
|
@staffs = Staff.joins(:user).map { |d| [d.user.real_name, d.id]}
|
@@ -17,20 +18,14 @@ module EducodeSales
|
|
17
18
|
when '自己'
|
18
19
|
@businesses = Business.where(staff_id: @current_admin.id)
|
19
20
|
when '区域'
|
20
|
-
|
21
|
-
@businesses = Business.joins("JOIN departments ON
|
21
|
+
school_ids = School.where(province: @current_admin.areas.pluck(:name)).pluck(:id)
|
22
|
+
@businesses = Business.joins("JOIN departments ON educode_sales_businesses.department_id = departments.id").where("departments.school_id in (?) OR educode_sales_businesses.staff_id = #{@current_admin.id}", school_ids)
|
22
23
|
else
|
23
24
|
@businesses = Business
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
27
|
-
@businesses = @businesses
|
28
|
-
educode_sales_businesses.*,
|
29
|
-
last_follow.invitation_at,
|
30
|
-
last_follow.reception_at,
|
31
|
-
last_follow.total_amount").joins("
|
32
|
-
LEFT JOIN educode_sales_follow_ups AS last_follow ON educode_sales_businesses.last_follow_up_id = last_follow.id
|
33
|
-
")
|
28
|
+
@businesses = @businesses
|
34
29
|
if params[:q].present? && params[:q][:name].present?
|
35
30
|
@businesses = @businesses.where("educode_sales_businesses.name like ?", "%#{params[:q][:name]}%")
|
36
31
|
end
|
@@ -69,11 +64,23 @@ module EducodeSales
|
|
69
64
|
@businesses = @businesses.where("created_at > ? AND created_at < ?", date[0], date[1])
|
70
65
|
end
|
71
66
|
|
67
|
+
@businesses = @businesses.page(params[:page]).per(params[:per_page])
|
68
|
+
|
72
69
|
if params[:sort].present? && params[:sort][:field]
|
73
70
|
@businesses = @businesses.order("#{params[:sort][:field]} #{params[:sort][:order]}")
|
74
71
|
else
|
75
72
|
@businesses = @businesses.order("created_at desc")
|
76
73
|
end
|
74
|
+
|
75
|
+
@business_count = @businesses.count
|
76
|
+
|
77
|
+
@businesses = @businesses.select("
|
78
|
+
educode_sales_businesses.*,
|
79
|
+
last_follow.invitation_at,
|
80
|
+
last_follow.reception_at,
|
81
|
+
last_follow.total_amount").joins("
|
82
|
+
LEFT JOIN educode_sales_follow_ups AS last_follow ON educode_sales_businesses.last_follow_up_id = last_follow.id
|
83
|
+
").page(params[:page]).per(params[:per_page])
|
77
84
|
end
|
78
85
|
end
|
79
86
|
end
|
@@ -17,8 +17,12 @@ module EducodeSales
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def destroy
|
20
|
-
follow_up =
|
20
|
+
follow_up = FollowUp.find(params[:id])
|
21
|
+
business = follow_up.business
|
21
22
|
if follow_up.destroy
|
23
|
+
if follow_up.id == business.last_follow_up_id
|
24
|
+
business.update(last_follow_up: follow_ups.last, return_money: MoneyPlan.where(clazz: '已完成', follow_up_id: follow_ups.last&.id).sum(:amount))
|
25
|
+
end
|
22
26
|
render_success
|
23
27
|
else
|
24
28
|
render_failure follow_up
|
@@ -26,7 +30,7 @@ module EducodeSales
|
|
26
30
|
end
|
27
31
|
|
28
32
|
def update
|
29
|
-
follow_up =
|
33
|
+
follow_up = FollowUp.find(params[:id])
|
30
34
|
follow_up.assign_attributes(follow_up_params)
|
31
35
|
follow_up.profit_amount = follow_up.actual_amount * (100-follow_up.divide_rate.to_i) * 0.01 if follow_up.actual_amount
|
32
36
|
if follow_up.save
|
@@ -37,7 +41,7 @@ module EducodeSales
|
|
37
41
|
end
|
38
42
|
|
39
43
|
def teachers
|
40
|
-
follow_up =
|
44
|
+
follow_up = FollowUp.find_by(id: params[:id])
|
41
45
|
if follow_up.present?
|
42
46
|
@teachers = follow_up.key_person.includes(:teacher).page(params[:page]).per(params[:per_page])
|
43
47
|
else
|
@@ -46,12 +50,12 @@ module EducodeSales
|
|
46
50
|
end
|
47
51
|
|
48
52
|
def money_plans
|
49
|
-
follow_up =
|
53
|
+
follow_up = FollowUp.find_by(id: params[:id])
|
50
54
|
@money_plans = follow_up.money_plans.page(params[:page]).per(params[:per_page])
|
51
55
|
end
|
52
56
|
|
53
57
|
def add_money
|
54
|
-
follow_up =
|
58
|
+
follow_up = FollowUp.find(params[:id])
|
55
59
|
money_plan = follow_up.money_plans.build(date_at: params[:date_at], amount: params[:amount], clazz: params[:clazz])
|
56
60
|
money_plan.staff = @current_admin
|
57
61
|
if money_plan.save
|
@@ -62,7 +66,7 @@ module EducodeSales
|
|
62
66
|
end
|
63
67
|
|
64
68
|
def update_money
|
65
|
-
follow_up =
|
69
|
+
follow_up = FollowUp.find_by(id: params[:id])
|
66
70
|
money_plan = follow_up.money_plans.find(params[:plan_id])
|
67
71
|
if money_plan.update(date_at: params[:date_at], amount: params[:amount], clazz: params[:clazz])
|
68
72
|
render_success
|
@@ -72,7 +76,7 @@ module EducodeSales
|
|
72
76
|
end
|
73
77
|
|
74
78
|
def delete_money
|
75
|
-
follow_up =
|
79
|
+
follow_up = FollowUp.find_by(id: params[:id])
|
76
80
|
money_plan = follow_up.money_plans.find(params[:plan_id])
|
77
81
|
if money_plan.destroy
|
78
82
|
render_success
|
@@ -82,7 +86,7 @@ module EducodeSales
|
|
82
86
|
end
|
83
87
|
|
84
88
|
def add_keys
|
85
|
-
follow_up =
|
89
|
+
follow_up = FollowUp.find(params[:id])
|
86
90
|
if params[:name].blank?
|
87
91
|
return render_failure '请从平台里选择教师'
|
88
92
|
end
|
@@ -2,23 +2,104 @@ require_dependency "educode_sales/application_controller"
|
|
2
2
|
|
3
3
|
module EducodeSales
|
4
4
|
class OperationPlansController < ApplicationController
|
5
|
+
def index
|
6
|
+
# authorize! :read, SalePlan
|
7
|
+
respond_to do |format|
|
8
|
+
format.html do
|
9
|
+
common = Common.find_by(clazz: 'staff_type', name: '运营')
|
10
|
+
@staffs = Staff.includes(:user).where(job_type: common.id).map { |d| [d.user.real_name, d.id] }
|
11
|
+
@years = (1..(Time.now.year - 2020)).map { |d| 2020 + d }
|
12
|
+
@months = (1..12).map { |d| d }
|
13
|
+
end
|
14
|
+
format.json do
|
15
|
+
if @current_admin.is_admin?
|
16
|
+
@sale_plans = OperationPlan
|
17
|
+
else
|
18
|
+
level = @current_admin.role.role_areas.find_by(clazz: '销售计划').level
|
19
|
+
case level
|
20
|
+
when '自己'
|
21
|
+
@sale_plans = OperationPlan.where(staff_id: @current_admin.id)
|
22
|
+
when '区域'
|
23
|
+
staff_ids = Staff.joins(department: :school).where("school.province in ?", staff.areas.pluck(:name)).pluck(:id)
|
24
|
+
@sale_plans = OperationPlan.where("staff_id in ?", staff_ids)
|
25
|
+
else
|
26
|
+
@sale_plans = OperationPlan
|
27
|
+
end
|
28
|
+
end
|
29
|
+
if params[:clazz] == 'week'
|
30
|
+
@sale_plans = @sale_plans.where.not(weekly: nil)
|
31
|
+
else
|
32
|
+
@sale_plans = @sale_plans.where(weekly: nil)
|
33
|
+
|
34
|
+
end
|
35
|
+
if params[:q].present? && params[:q][:staff_id].present?
|
36
|
+
@sale_plans = @sale_plans.where(staff_id: params[:q][:staff_id])
|
37
|
+
end
|
38
|
+
if params[:q].present? && params[:q][:year].present?
|
39
|
+
@sale_plans = @sale_plans.where("month >= ? and month <= ?", "#{params[:q][:year]}-01-01 00:00:00".to_date, "#{params[:q][:year]}-12-31 23:59:00".to_date)
|
40
|
+
end
|
41
|
+
if params[:q].present? && params[:q][:month].present?
|
42
|
+
@sale_plans = @sale_plans.where("month = ?", "#{params[:q][:month]}-01 00:00:00".to_date)
|
43
|
+
end
|
44
|
+
if params[:sort].present? && params[:sort][:field]
|
45
|
+
@sale_plans = @sale_plans.order("#{params[:sort][:field]} #{params[:sort][:order]}")
|
46
|
+
else
|
47
|
+
@sale_plans = @sale_plans.order("updated_at desc")
|
48
|
+
end
|
49
|
+
@sale_plans = @sale_plans.page(params[:page]).per(params[:per_page])
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
5
53
|
def new_week
|
54
|
+
@teacher = Teacher.find_by(id: params[:teacher_id])
|
55
|
+
week = Time.now.strftime('%W').to_i
|
56
|
+
if week > 3
|
57
|
+
@weeks = [week, week - 1, week - 2]
|
58
|
+
elsif week == 2
|
59
|
+
@weeks = [week, week - 1]
|
60
|
+
else
|
61
|
+
@weeks = [week]
|
62
|
+
end
|
63
|
+
@teachers = @current_admin.teachers.where(is_key: 0).pluck(:name, :id)
|
6
64
|
render layout: false
|
7
65
|
end
|
8
66
|
|
67
|
+
|
68
|
+
def create
|
69
|
+
plan = @current_admin.operation_plans.build(plan_params)
|
70
|
+
plan.month = params["month"] + "-1"
|
71
|
+
plan.teacher_id = @current_admin.teachers.find(params[:teacher_id]).id
|
72
|
+
if plan.save
|
73
|
+
render_success
|
74
|
+
else
|
75
|
+
render_failure plan
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
9
79
|
def new_weekly
|
80
|
+
sale_plans = OperationPlan.where(month: Time.now.strftime("%Y-%m") + "-01 00:00:00", weekly: Time.now.strftime('%W').to_i, staff_id: @current_admin.id)
|
81
|
+
@rate = sale_plans.present? ? (sale_plans.sum("finish_rate") / sale_plans.size) : 0
|
82
|
+
@departments_count = sale_plans.joins(:teacher).count("distinct(department_id)")
|
83
|
+
# @departments_count = 1
|
10
84
|
render layout: false
|
85
|
+
|
11
86
|
end
|
12
87
|
|
13
88
|
def new_month
|
89
|
+
@teacher = Teacher.find_by(id: params[:teacher_id])
|
90
|
+
@teachers = @current_admin.teachers.where(is_key: 0).pluck(:name, :id)
|
14
91
|
render layout: false
|
15
92
|
end
|
16
93
|
|
17
94
|
def new_monthly
|
95
|
+
sale_plans = OperationPlan.where(month: Time.now.strftime("%Y-%m") + "-01 00:00:00", staff_id: @current_admin.id, weekly: nil)
|
96
|
+
@rate = sale_plans.present? ? (sale_plans.sum("finish_rate") / sale_plans.size) : 0
|
97
|
+
@departments_count = sale_plans.joins(:teacher).count("distinct(department_id)")
|
18
98
|
render layout: false
|
19
99
|
end
|
20
100
|
|
21
101
|
def show_week
|
102
|
+
@sale_plan = OperationPlan.find(params[:id])
|
22
103
|
render layout: false
|
23
104
|
end
|
24
105
|
|
@@ -35,6 +116,26 @@ module EducodeSales
|
|
35
116
|
end
|
36
117
|
|
37
118
|
def edit_week
|
119
|
+
@teacher = Teacher.find_by(id: params[:teacher_id])
|
120
|
+
@teachers = @current_admin.teachers.pluck(:name, :id)
|
121
|
+
@sale_plan = OperationPlan.find(params[:id])
|
122
|
+
if @sale_plan.weekly.present?
|
123
|
+
week = Time.now.strftime('%W').to_i
|
124
|
+
if week > 3
|
125
|
+
@weeks = [week, week - 1, week - 2]
|
126
|
+
elsif week == 2
|
127
|
+
@weeks = [week, week - 1]
|
128
|
+
else
|
129
|
+
@weeks = [week]
|
130
|
+
end
|
131
|
+
@weeks << @sale_plan.weekly
|
132
|
+
@weeks = @weeks.uniq.sort
|
133
|
+
end
|
134
|
+
@months = [Time.now.strftime("%Y-%m"), Time.now.months_ago(1).strftime("%Y-%m")]
|
135
|
+
@months << @sale_plan.month.strftime("%Y-%m")
|
136
|
+
@months = @months.uniq.sort
|
137
|
+
@finish_rates = []
|
138
|
+
11.times { |d| @finish_rates << ["#{d * 10}%", d * 10] }
|
38
139
|
render layout: false
|
39
140
|
end
|
40
141
|
|
@@ -43,11 +144,65 @@ module EducodeSales
|
|
43
144
|
end
|
44
145
|
|
45
146
|
def edit_month
|
147
|
+
@teacher = Teacher.find_by(id: params[:teacher_id])
|
148
|
+
@teachers = @current_admin.teachers.pluck(:name, :id)
|
149
|
+
@sale_plan = OperationPlan.find(params[:id])
|
150
|
+
@months = [Time.now.strftime("%Y-%m"), Time.now.months_ago(1).strftime("%Y-%m")]
|
151
|
+
@months << @sale_plan.month.strftime("%Y-%m")
|
152
|
+
@months = @months.uniq.sort
|
153
|
+
@finish_rates = []
|
154
|
+
11.times { |d| @finish_rates << ["#{d * 10}%", d * 10] }
|
46
155
|
render layout: false
|
47
156
|
end
|
48
157
|
|
49
158
|
def edit_monthly
|
50
159
|
render layout: false
|
51
160
|
end
|
161
|
+
|
162
|
+
def my_week
|
163
|
+
@sale_plans = OperationPlan.where(staff_id: @current_admin.id, month: Time.now.strftime("%Y-%m") + "-01 00:00:00", weekly: Time.now.strftime('%W').to_i)
|
164
|
+
if params[:sort].present? && params[:sort][:field]
|
165
|
+
@sale_plans = @sale_plans.order("#{params[:sort][:field]} #{params[:sort][:order]}")
|
166
|
+
else
|
167
|
+
@sale_plans = @sale_plans.order("updated_at desc")
|
168
|
+
end
|
169
|
+
@sale_plans = @sale_plans.page(params[:page]).per(params[:per_page])
|
170
|
+
end
|
171
|
+
|
172
|
+
def my_month
|
173
|
+
@sale_plans = OperationPlan.where(staff_id: @current_admin.id, month: Time.now.strftime("%Y-%m") + "-01 00:00:00", weekly: nil)
|
174
|
+
if params[:sort].present? && params[:sort][:field]
|
175
|
+
@sale_plans = @sale_plans.order("#{params[:sort][:field]} #{params[:sort][:order]}")
|
176
|
+
else
|
177
|
+
@sale_plans = @sale_plans.order("updated_at desc")
|
178
|
+
end
|
179
|
+
@sale_plans = @sale_plans.page(params[:page]).per(params[:per_page])
|
180
|
+
end
|
181
|
+
|
182
|
+
def update
|
183
|
+
operation_plan = OperationPlan.find(params[:id])
|
184
|
+
params["month"] = params["month"] + "-1"
|
185
|
+
if operation_plan.update(params.permit(:month, :weekly, :content, :finish_rate, :teacher_id))
|
186
|
+
render_success
|
187
|
+
else
|
188
|
+
render_failure operation_plan
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
def destroy
|
193
|
+
operation_plan = OperationPlan.find(params[:id])
|
194
|
+
operation_plan.destroy
|
195
|
+
render_success
|
196
|
+
end
|
197
|
+
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
|
202
|
+
private
|
203
|
+
|
204
|
+
def plan_params
|
205
|
+
params.permit(:month, :weekly, :content, :finish_rate)
|
206
|
+
end
|
52
207
|
end
|
53
208
|
end
|
@@ -2,5 +2,130 @@ require_dependency "educode_sales/application_controller"
|
|
2
2
|
|
3
3
|
module EducodeSales
|
4
4
|
class OperationReportsController < ApplicationController
|
5
|
+
|
6
|
+
def index
|
7
|
+
# authorize! :read, SalePlan
|
8
|
+
respond_to do |format|
|
9
|
+
format.html do
|
10
|
+
end
|
11
|
+
format.json do
|
12
|
+
if @current_admin.is_admin?
|
13
|
+
@sale_reports = OperationReport
|
14
|
+
else
|
15
|
+
level = @current_admin.role.role_areas.find_by(clazz: '销售计划').level
|
16
|
+
case level
|
17
|
+
when '自己'
|
18
|
+
@sale_reports = OperationReport.where(staff_id: @current_admin.id)
|
19
|
+
when '区域'
|
20
|
+
staff_ids = Staff.joins(department: :school).where("school.province in ?", staff.areas.pluck(:name)).pluck(:id)
|
21
|
+
@sale_reports = OperationReport.where("staff_id in ?", staff_ids)
|
22
|
+
else
|
23
|
+
@sale_reports = OperationReport
|
24
|
+
end
|
25
|
+
end
|
26
|
+
if params[:clazz] == 'week'
|
27
|
+
@sale_reports = @sale_reports.where.not(weekly: nil)
|
28
|
+
else
|
29
|
+
@sale_reports = @sale_reports.where(weekly: nil)
|
30
|
+
end
|
31
|
+
if params[:q].present? && params[:q][:staff_id].present?
|
32
|
+
@sale_reports = @sale_reports.where(staff_id: params[:q][:staff_id])
|
33
|
+
end
|
34
|
+
if params[:q].present? && params[:q][:year].present?
|
35
|
+
@sale_reports = @sale_reports.where("month >= ? and month <= ?", "#{params[:q][:year]}-01-01 00:00:00".to_date, "#{params[:q][:year]}-12-31 23:59:00".to_date)
|
36
|
+
end
|
37
|
+
if params[:q].present? && params[:q][:month].present?
|
38
|
+
@sale_reports = @sale_reports.where("month = ?", "#{params[:q][:month]}-01 00:00:00".to_date)
|
39
|
+
end
|
40
|
+
if params[:sort].present? && params[:sort][:field]
|
41
|
+
@sale_reports = @sale_reports.order("#{params[:sort][:field]} #{params[:sort][:order]}")
|
42
|
+
else
|
43
|
+
@sale_reports = @sale_reports.order("updated_at desc")
|
44
|
+
end
|
45
|
+
@sale_reports = @sale_reports.page(params[:page]).per(params[:per_page])
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
def create
|
52
|
+
if params[:month].present?
|
53
|
+
sale_report = @current_admin.operation_reports.build(month: Date.today.beginning_of_month)
|
54
|
+
else
|
55
|
+
sale_report = @current_admin.operation_reports.build(month: Date.today.beginning_of_month, weekly: Time.now.strftime('%W').to_i)
|
56
|
+
end
|
57
|
+
|
58
|
+
sale_report.finish_rate = params[:finish_rate]
|
59
|
+
sale_report.client = params[:client]
|
60
|
+
sale_report.content = params[:content]
|
61
|
+
if sale_report.save
|
62
|
+
render_success
|
63
|
+
else
|
64
|
+
render_failure sale_report
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def show
|
69
|
+
@sale_report = OperationReport.find(params[:id])
|
70
|
+
render layout: false
|
71
|
+
end
|
72
|
+
|
73
|
+
def destroy
|
74
|
+
sale_report = @current_admin.operation_reports.find(params[:id])
|
75
|
+
sale_report.destroy
|
76
|
+
render_success
|
77
|
+
end
|
78
|
+
|
79
|
+
def edit
|
80
|
+
@sale_report = @current_admin.operation_reports.find(params[:id])
|
81
|
+
render layout: false
|
82
|
+
end
|
83
|
+
|
84
|
+
def update
|
85
|
+
sale_report = @current_admin.operation_reports.find(params[:id])
|
86
|
+
sale_report.content = params[:content]
|
87
|
+
if sale_report.save
|
88
|
+
render_success
|
89
|
+
else
|
90
|
+
render_failure sale_report
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def update_audit
|
95
|
+
authorize! :audit, EducodeSales::OperationReport
|
96
|
+
sale_report = OperationReport.find(params[:id])
|
97
|
+
sale_report.assign_attributes(audit_params)
|
98
|
+
if sale_report.level1_opinion_changed? || sale_report.level1_score_changed?
|
99
|
+
sale_report.audit1_user_id = @current_admin.id
|
100
|
+
end
|
101
|
+
if sale_report.level2_opinion_changed? || sale_report.level2_score_changed?
|
102
|
+
sale_report.audit2_user_id = @current_admin.id
|
103
|
+
end
|
104
|
+
if sale_report.level3_opinion_changed? || sale_report.level3_score_changed?
|
105
|
+
sale_report.audit3_user_id = @current_admin.id
|
106
|
+
end
|
107
|
+
if sale_report.save
|
108
|
+
render_success
|
109
|
+
else
|
110
|
+
render_failure sale_report
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def audit
|
115
|
+
@sale_report = OperationReport.find(params[:id])
|
116
|
+
render layout: false
|
117
|
+
end
|
118
|
+
|
119
|
+
def plans
|
120
|
+
sale_report = OperationReport.find(params[:id])
|
121
|
+
@sale_plans = OperationPlan.where(staff_id: sale_report.staff_id, month: sale_report.month, weekly: sale_report.weekly).order("updated_at desc").page(params[:page]).per(params[:per_page])
|
122
|
+
end
|
123
|
+
|
124
|
+
private
|
125
|
+
def audit_params
|
126
|
+
params.permit(:level1_opinion, :level2_opinion, :level3_opinion, :level1_score, :level2_score, :level3_score)
|
127
|
+
end
|
128
|
+
|
129
|
+
|
5
130
|
end
|
6
131
|
end
|