educode_sales 0.4.9 → 0.5.3
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/images/educode_sales//345/233/236/346/224/266/347/253/231.png +0 -0
- data/app/controllers/educode_sales/businesses_controller.rb +27 -13
- data/app/controllers/educode_sales/follow_ups_controller.rb +3 -2
- data/app/controllers/educode_sales/operation_plans_controller.rb +23 -2
- data/app/controllers/educode_sales/operation_reports_controller.rb +33 -3
- data/app/controllers/educode_sales/plans_controller.rb +28 -7
- data/app/controllers/educode_sales/recycles_controller.rb +95 -0
- data/app/controllers/educode_sales/roles_controller.rb +5 -0
- data/app/controllers/educode_sales/sale_reports_controller.rb +34 -4
- data/app/controllers/educode_sales/sale_trends_controller.rb +171 -0
- data/app/controllers/educode_sales/sales_controller.rb +4 -0
- data/app/controllers/educode_sales/staffs_controller.rb +4 -4
- data/app/controllers/educode_sales/upload_files_controller.rb +40 -27
- data/app/models/concerns/deletable.rb +8 -0
- data/app/models/educode_sales/application_record.rb +2 -0
- data/app/models/educode_sales/business.rb +15 -2
- data/app/models/educode_sales/common.rb +2 -1
- data/app/models/educode_sales/follow_up.rb +4 -2
- data/app/models/educode_sales/recycle.rb +5 -0
- data/app/models/educode_sales/sale_plan.rb +3 -0
- data/app/models/educode_sales/sale_report.rb +2 -0
- data/app/views/educode_sales/businesses/edit_plan.html.erb +2 -2
- data/app/views/educode_sales/businesses/file.html.erb +30 -15
- data/app/views/educode_sales/businesses/index.html.erb +20 -7
- data/app/views/educode_sales/businesses/new_follow_record.html.erb +5 -1
- data/app/views/educode_sales/businesses/show_follow.html.erb +8 -2
- data/app/views/educode_sales/businesses/show_follow.json.jbuilder +1 -0
- data/app/views/educode_sales/businesses/show_follow_record.html.erb +1 -1
- data/app/views/educode_sales/businesses/time_line.html.erb +5 -1
- data/app/views/educode_sales/businesses/upload_file.html.erb +4 -4
- data/app/views/educode_sales/operation_plans/index.html.erb +6 -1
- data/app/views/educode_sales/operation_plans/new_week.html.erb +1 -1
- data/app/views/educode_sales/operation_reports/audit.html.erb +14 -6
- data/app/views/educode_sales/operation_reports/show.html.erb +13 -10
- data/app/views/educode_sales/places/index.html.erb +6 -1
- data/app/views/educode_sales/places/index.json.jbuilder +11 -1
- data/app/views/educode_sales/plans/index.html.erb +6 -1
- data/app/views/educode_sales/plans/new_monthly.html.erb +6 -6
- data/app/views/educode_sales/plans/new_week.html.erb +1 -1
- data/app/views/educode_sales/plans/new_weekly.html.erb +7 -7
- data/app/views/educode_sales/recycles/_business.html.erb +122 -0
- data/app/views/educode_sales/recycles/_monthPlan.html.erb +123 -0
- data/app/views/educode_sales/recycles/_monthly.html.erb +121 -0
- data/app/views/educode_sales/recycles/_weekPlan.html.erb +128 -0
- data/app/views/educode_sales/recycles/_weekly.html.erb +122 -0
- data/app/views/educode_sales/recycles/business.json.jbuilder +16 -0
- data/app/views/educode_sales/recycles/index.html.erb +58 -0
- data/app/views/educode_sales/recycles/monthPlan.json.jbuilder +16 -0
- data/app/views/educode_sales/recycles/monthly.json.jbuilder +15 -0
- data/app/views/educode_sales/recycles/weekPlan.json.jbuilder +16 -0
- data/app/views/educode_sales/recycles/weekly.json.jbuilder +15 -0
- data/app/views/educode_sales/roles/index.html.erb +19 -1
- data/app/views/educode_sales/roles/rename.html.erb +50 -0
- data/app/views/educode_sales/sale_reports/audit.html.erb +17 -6
- data/app/views/educode_sales/sale_reports/show.html.erb +11 -8
- data/app/views/educode_sales/sale_trends/trends.html.erb +252 -8
- data/app/views/educode_sales/sale_trends/trends.json.jbuilder +14 -0
- data/app/views/educode_sales/sales/index.html.erb +75 -9
- data/app/views/educode_sales/sales/index.json.jbuilder +35 -1
- data/app/views/educode_sales/sales/operations.json.jbuilder +11 -1
- data/app/views/educode_sales/staffs/index.html.erb +6 -1
- data/app/views/educode_sales/staffs/index.json.jbuilder +11 -1
- data/app/views/educode_sales/teachers/add_keys.html.erb +3 -3
- data/app/views/educode_sales/teachers/index.html.erb +7 -2
- data/app/views/educode_sales/teachers/new.html.erb +1 -0
- data/app/views/educode_sales/upload_files/index.json.jbuilder +2 -2
- data/app/views/layouts/educode_sales/application.html.erb +3 -0
- data/config/routes.rb +18 -0
- data/db/migrate/20210902064109_create_educode_sales_role_permissions.rb +6 -0
- data/db/migrate/20211109015617_create_educode_sales_recycles.rb +25 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +20 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87e480da43efa545f556407cb3aced122684a09ebba821cc1d5ba1b33013758c
|
4
|
+
data.tar.gz: f8a1d0d849c2f45fac61856394ebd61fa19c6993349393cf30c73061071e200b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b9b85218c9ab2ba92752aaac23ed8329bd130c48f27c00488d4e8a484cdb8791b29b9be8bb9ccafa6828ba9bc4500c4365718d5c080cfd789960c5125c2da33
|
7
|
+
data.tar.gz: 8ae91d1a4d9337886c87067b69728cd93831e8d7a85bf524c6acef57915561726a574d6a3c5a1c2eb4cead28ea6aea1450dd94949920d0113856b7390f418445
|
@@ -4,7 +4,7 @@ module EducodeSales
|
|
4
4
|
class BusinessesController < ApplicationController
|
5
5
|
|
6
6
|
def file
|
7
|
-
|
7
|
+
gon.folder = edu_setting('attachment_folder') + '/'
|
8
8
|
render layout: false
|
9
9
|
end
|
10
10
|
def upload_file
|
@@ -66,6 +66,10 @@ module EducodeSales
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
+
if params[:q].present? && params[:q][:name].present?
|
70
|
+
@year = params[:q][:name].split("-")[1].present? ? params[:q][:name].split("-")[1] : ''
|
71
|
+
end
|
72
|
+
|
69
73
|
if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-现有商机)"
|
70
74
|
a_id = Common.find_by(extras: EducodeSales::Common::ATYPE)&.id
|
71
75
|
b_id = Common.find_by(extras: EducodeSales::Common::BTYPE)&.id
|
@@ -77,23 +81,28 @@ module EducodeSales
|
|
77
81
|
").where("educode_sales_follow_ups.clazz_id in (?)",ids)
|
78
82
|
end
|
79
83
|
|
80
|
-
if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(
|
84
|
+
if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-" + @year + "-已中标商机)"
|
85
|
+
stage_ids = Common.where(clazz: '商机阶段', name: ['已中标','已签单','已验收','回款中', '服务中','已结束']).pluck(:id)
|
81
86
|
@businesses = @businesses.joins("
|
82
87
|
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
83
|
-
").where("educode_sales_follow_ups.bidded_date > ? AND educode_sales_follow_ups.bidded_date < ?", "#{
|
88
|
+
").where("educode_sales_follow_ups.bidded_date > ? AND educode_sales_follow_ups.bidded_date < ? AND educode_sales_follow_ups.stage_id IN (?)", "#{@year}-01-01", "#{@year}-12-31", stage_ids)
|
84
89
|
end
|
85
90
|
|
86
|
-
if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(
|
91
|
+
if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-" + @year + "-已签单商机)"
|
92
|
+
s_stage_ids = Common.where(clazz: '商机阶段', name: ['已签单','已验收','回款中', '服务中','已结束']).pluck(:id)
|
87
93
|
@businesses = @businesses.joins("
|
88
94
|
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
89
|
-
").where("educode_sales_follow_ups.signed_date > ? AND educode_sales_follow_ups.signed_date < ?", "#{
|
95
|
+
").where("educode_sales_follow_ups.signed_date > ? AND educode_sales_follow_ups.signed_date < ? AND educode_sales_follow_ups.stage_id IN (?)", "#{@year}-01-01", "#{@year}-12-31", s_stage_ids)
|
90
96
|
end
|
91
97
|
|
92
|
-
if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(
|
98
|
+
if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-" + @year + "-已回款商机)"
|
93
99
|
x_id = Common.find_by(extras: EducodeSales::Common::XTYPE)&.id
|
94
|
-
@businesses = @businesses.where("educode_sales_businesses.created_at > ? AND educode_sales_businesses.created_at < ? AND educode_sales_businesses.return_money > 0", "#{
|
95
|
-
|
96
|
-
").where.not("educode_sales_follow_ups.clazz_id = ?",x_id)
|
100
|
+
# @businesses = @businesses.where("educode_sales_businesses.created_at > ? AND educode_sales_businesses.created_at < ? AND educode_sales_businesses.return_money > 0", "#{@year}-01-01", "#{@year}-12-31").joins("
|
101
|
+
# JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
102
|
+
# ").where.not("educode_sales_follow_ups.clazz_id = ?",x_id)
|
103
|
+
year_time = "#{@year}-01-01 00:00:00"
|
104
|
+
year_over_time = "#{@year}-12-31 23:59:59"
|
105
|
+
@businesses = @businesses.joins(follow_ups: :money_plans).where("educode_sales_follow_ups.clazz_id != ?", x_id).where.not("educode_sales_money_plans.clazz!= ?", 1).where("educode_sales_money_plans.date_at >= ? AND educode_sales_money_plans.date_at <= ? ", year_time, year_over_time).distinct
|
97
106
|
end
|
98
107
|
|
99
108
|
if params[:q].present? && params[:q][:all].present?
|
@@ -107,7 +116,7 @@ module EducodeSales
|
|
107
116
|
end
|
108
117
|
|
109
118
|
@businesses = @businesses
|
110
|
-
if params[:q].present? && params[:q][:name].present? && params[:q][:name] != "(
|
119
|
+
if params[:q].present? && params[:q][:name].present? && params[:q][:name] != "(销售态势-" + @year + "-已中标商机)" && params[:q][:name] != "(销售态势-" + @year + "-已签单商机)" && params[:q][:name] != "(销售态势-" + @year + "-已回款商机)" && params[:q][:name] != "(销售态势-现有商机)"
|
111
120
|
@businesses = @businesses.where("educode_sales_businesses.name like ?", "%#{params[:q][:name]}%")
|
112
121
|
end
|
113
122
|
if params[:q].present? && params[:q][:department].present?
|
@@ -115,10 +124,10 @@ module EducodeSales
|
|
115
124
|
@businesses = @businesses.joins(:department).where("departments.id in (?)", departments_ids)
|
116
125
|
end
|
117
126
|
if params[:q].present? && params[:q][:staff_id].present?
|
118
|
-
part_a_ids = @businesses.where("educode_sales_businesses.last_follow_up_id is null AND staff_id = ?",params[:q][:staff_id]).ids
|
127
|
+
part_a_ids = @businesses.where("educode_sales_businesses.last_follow_up_id is null AND educode_sales_businesses.staff_id = ?",params[:q][:staff_id]).ids
|
119
128
|
part_b_ids = @businesses.where("educode_sales_businesses.last_follow_up_id is not null").joins("
|
120
129
|
JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
|
121
|
-
").where("educode_sales_follow_ups.staff_id = ?", params[:q][:staff_id]).
|
130
|
+
").where("educode_sales_follow_ups.staff_id = ?", params[:q][:staff_id]).ids
|
122
131
|
business_ids = part_a_ids + part_b_ids
|
123
132
|
@businesses = EducodeSales::Business.where(id:business_ids)
|
124
133
|
end
|
@@ -165,6 +174,8 @@ module EducodeSales
|
|
165
174
|
educode_sales_businesses.*,
|
166
175
|
last_follow.invitation_at,
|
167
176
|
last_follow.reception_at,
|
177
|
+
last_follow.bidded_date,
|
178
|
+
last_follow.signed_date,
|
168
179
|
last_follow.total_amount").joins("
|
169
180
|
LEFT JOIN educode_sales_follow_ups AS last_follow ON educode_sales_businesses.last_follow_up_id = last_follow.id
|
170
181
|
").page(params[:page]).per(params[:limit])
|
@@ -214,7 +225,7 @@ module EducodeSales
|
|
214
225
|
|
215
226
|
def destroy
|
216
227
|
business = Business.find(params[:id])
|
217
|
-
business.
|
228
|
+
business.soft_destroy(@current_admin.id)
|
218
229
|
render_success
|
219
230
|
rescue ActiveRecord::DeleteRestrictionError => e
|
220
231
|
render_failure '该商机已其它关联数据产生,暂不能删除'
|
@@ -308,5 +319,8 @@ module EducodeSales
|
|
308
319
|
params.permit(:clazz_id, :stage_id, :invitation_at, :reception_at, :total_amount, :actual_amount, :divide_amount, :description, :advise, :place_id)
|
309
320
|
end
|
310
321
|
|
322
|
+
def edu_setting name
|
323
|
+
EduSetting.get(name)
|
324
|
+
end
|
311
325
|
end
|
312
326
|
end
|
@@ -36,7 +36,7 @@ module EducodeSales
|
|
36
36
|
def destroy
|
37
37
|
follow_up = FollowUp.find(params[:id])
|
38
38
|
business = follow_up.business
|
39
|
-
if follow_up.
|
39
|
+
if follow_up.soft_destroy(@current_admin.id)
|
40
40
|
if follow_up.id == business.last_follow_up_id
|
41
41
|
business.update(last_follow_up: business.follow_ups.last, return_money: MoneyPlan.where(clazz: '已完成', follow_up_id: business.follow_ups.last&.id).sum(:amount))
|
42
42
|
end
|
@@ -132,7 +132,8 @@ module EducodeSales
|
|
132
132
|
)
|
133
133
|
teacher.save
|
134
134
|
key_peprson = KeyPerson.new(teacher_params)
|
135
|
-
|
135
|
+
teacher_id = EducodeSales::Teacher.find_by(name: user.real_name, department_id: user.department_id).id
|
136
|
+
key_peprson.teacher_id = teacher_id
|
136
137
|
end
|
137
138
|
|
138
139
|
follow_up.key_person << key_peprson
|
@@ -52,6 +52,7 @@ module EducodeSales
|
|
52
52
|
end
|
53
53
|
def new_week
|
54
54
|
@teacher = Teacher.find_by(id: params[:teacher_id])
|
55
|
+
@week = Time.now.strftime('%W').to_i
|
55
56
|
week = Time.now.strftime('%W').to_i
|
56
57
|
if week > 3
|
57
58
|
@weeks = [[week+2,week+2], [week+1,week+1], [week.to_s + ' 本周',week], [week - 1,week - 1], [week - 2,week - 2]]
|
@@ -77,7 +78,17 @@ module EducodeSales
|
|
77
78
|
end
|
78
79
|
|
79
80
|
def new_weekly
|
80
|
-
|
81
|
+
d = @current_admin
|
82
|
+
area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
|
83
|
+
if d.areas.present?
|
84
|
+
if d.areas.ids.sort.to_s == area_ids
|
85
|
+
@area = '全国'
|
86
|
+
else
|
87
|
+
@area = d.areas.pluck(:name).join("、")
|
88
|
+
end
|
89
|
+
else
|
90
|
+
@area = ''
|
91
|
+
end
|
81
92
|
@name = @current_admin.user.real_name
|
82
93
|
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)
|
83
94
|
@rate = sale_plans.present? ? (sale_plans.sum("finish_rate") / sale_plans.size) : 0
|
@@ -94,7 +105,17 @@ module EducodeSales
|
|
94
105
|
end
|
95
106
|
|
96
107
|
def new_monthly
|
97
|
-
|
108
|
+
d = @current_admin
|
109
|
+
area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
|
110
|
+
if d.areas.present?
|
111
|
+
if d.areas.ids.sort.to_s == area_ids
|
112
|
+
@area = '全国'
|
113
|
+
else
|
114
|
+
@area = d.areas.pluck(:name).join("、")
|
115
|
+
end
|
116
|
+
else
|
117
|
+
@area = ''
|
118
|
+
end
|
98
119
|
@name = @current_admin.user.real_name
|
99
120
|
sale_plans = OperationPlan.where(month: Time.now.strftime("%Y-%m") + "-01 00:00:00", staff_id: @current_admin.id, weekly: nil)
|
100
121
|
@rate = sale_plans.present? ? (sale_plans.sum("finish_rate") / sale_plans.size) : 0
|
@@ -68,7 +68,17 @@ module EducodeSales
|
|
68
68
|
def show
|
69
69
|
@sale_report = OperationReport.find(params[:id])
|
70
70
|
@name = @sale_report.staff.user.real_name
|
71
|
-
|
71
|
+
d = @sale_report.staff
|
72
|
+
area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
|
73
|
+
if d.areas.present?
|
74
|
+
if d.areas.ids.sort.to_s == area_ids
|
75
|
+
@area = '全国'
|
76
|
+
else
|
77
|
+
@area = d.areas.pluck(:name).join("、")
|
78
|
+
end
|
79
|
+
else
|
80
|
+
@area = ''
|
81
|
+
end
|
72
82
|
render layout: false
|
73
83
|
end
|
74
84
|
|
@@ -81,7 +91,17 @@ module EducodeSales
|
|
81
91
|
def edit
|
82
92
|
@sale_report = OperationReport.find(params[:id])
|
83
93
|
@name = @sale_report.staff.user.real_name
|
84
|
-
|
94
|
+
d = @sale_report.staff
|
95
|
+
area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
|
96
|
+
if d.areas.present?
|
97
|
+
if d.areas.ids.sort.to_s == area_ids
|
98
|
+
@area = '全国'
|
99
|
+
else
|
100
|
+
@area = d.areas.pluck(:name).join("、")
|
101
|
+
end
|
102
|
+
else
|
103
|
+
@area = ''
|
104
|
+
end
|
85
105
|
render layout: false
|
86
106
|
end
|
87
107
|
|
@@ -118,7 +138,17 @@ module EducodeSales
|
|
118
138
|
def audit
|
119
139
|
@sale_report = OperationReport.find(params[:id])
|
120
140
|
@name = @sale_report.staff.user.real_name
|
121
|
-
|
141
|
+
d = @sale_report.staff
|
142
|
+
area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
|
143
|
+
if d.areas.present?
|
144
|
+
if d.areas.ids.sort.to_s == area_ids
|
145
|
+
@area = '全国'
|
146
|
+
else
|
147
|
+
@area = d.areas.pluck(:name).join("、")
|
148
|
+
end
|
149
|
+
else
|
150
|
+
@area = ''
|
151
|
+
end
|
122
152
|
render layout: false
|
123
153
|
end
|
124
154
|
|
@@ -70,6 +70,7 @@ module EducodeSales
|
|
70
70
|
|
71
71
|
def new_week
|
72
72
|
@business = Business.find_by(id: params[:business_id])
|
73
|
+
@week = Time.now.strftime('%W').to_i
|
73
74
|
week = Time.now.strftime('%W').to_i
|
74
75
|
if week > 3
|
75
76
|
@weeks = [[week+2,week+2], [week+1,week+1], [week.to_s + ' 本周',week], [week - 1,week - 1], [week - 2,week - 2]]
|
@@ -80,12 +81,22 @@ module EducodeSales
|
|
80
81
|
end
|
81
82
|
business_ids = EducodeSales::AssignFollowUp.joins(:follow_up).where(staff_id: @current_admin.id).pluck :business_id
|
82
83
|
@businesses = Business.includes(:department, :last_follow_up).where("educode_sales_businesses.id in (?) or educode_sales_businesses.staff_id = ?", business_ids, @current_admin.id).order(created_at: :desc)
|
83
|
-
@businesses = @businesses.map { |b| [b.name + "(" + b.department.school.name + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s :
|
84
|
+
@businesses = @businesses.map { |b| [b.name + "(" + b.department.school.name + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s : b.created_at.to_s), b.id] }
|
84
85
|
render layout: false
|
85
86
|
end
|
86
87
|
|
87
88
|
def new_weekly
|
88
|
-
|
89
|
+
d = @current_admin
|
90
|
+
area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
|
91
|
+
if d.areas.present?
|
92
|
+
if d.areas.ids.sort.to_s == area_ids
|
93
|
+
@area = '全国'
|
94
|
+
else
|
95
|
+
@area = d.areas.pluck(:name).join("、")
|
96
|
+
end
|
97
|
+
else
|
98
|
+
@area = ''
|
99
|
+
end
|
89
100
|
@name = @current_admin.user.real_name
|
90
101
|
sale_plans = SalePlan.where(month: Time.now.strftime("%Y-%m") + "-01 00:00:00", weekly: Time.now.strftime('%W').to_i, staff_id: @current_admin.id)
|
91
102
|
@rate = sale_plans.present? ? (sale_plans.sum("finish_rate") / sale_plans.size) : 0
|
@@ -98,12 +109,22 @@ module EducodeSales
|
|
98
109
|
@business = Business.find_by(id: params[:business_id])
|
99
110
|
business_ids = EducodeSales::AssignFollowUp.joins(:follow_up).where(staff_id: @current_admin.id).pluck :business_id
|
100
111
|
@businesses =Business.includes(:department, :last_follow_up).where("educode_sales_businesses.id in (?) or educode_sales_businesses.staff_id = ?", business_ids, @current_admin.id).order(created_at: :desc)
|
101
|
-
@businesses = @businesses.map { |b| [b.name + "(" + b.department.school.name + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s :
|
112
|
+
@businesses = @businesses.map { |b| [b.name + "(" + b.department.school.name + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s : b.created_at.to_s), b.id] }
|
102
113
|
render layout: false
|
103
114
|
end
|
104
115
|
|
105
116
|
def new_monthly
|
106
|
-
|
117
|
+
d = @current_admin
|
118
|
+
area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
|
119
|
+
if d.areas.present?
|
120
|
+
if d.areas.ids.sort.to_s == area_ids
|
121
|
+
@area = '全国'
|
122
|
+
else
|
123
|
+
@area = d.areas.pluck(:name).join("、")
|
124
|
+
end
|
125
|
+
else
|
126
|
+
@area = ''
|
127
|
+
end
|
107
128
|
@name = @current_admin.user.real_name
|
108
129
|
sale_plans = SalePlan.where(month: Time.now.strftime("%Y-%m") + "-01 00:00:00", staff_id: @current_admin.id, weekly: nil)
|
109
130
|
@rate = sale_plans.present? ? (sale_plans.sum("finish_rate") / sale_plans.size) : 0
|
@@ -133,7 +154,7 @@ module EducodeSales
|
|
133
154
|
def edit_week
|
134
155
|
business_ids = EducodeSales::AssignFollowUp.joins(:follow_up).where(staff_id: @current_admin.id).pluck :business_id
|
135
156
|
@businesses = Business.includes(:department, :last_follow_up).where("educode_sales_businesses.id in (?) or educode_sales_businesses.staff_id = ?", business_ids, @current_admin.id).order(created_at: :desc)
|
136
|
-
@businesses = @businesses.map { |b| [b.name + "(" + b.department.school.name + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s :
|
157
|
+
@businesses = @businesses.map { |b| [b.name + "(" + b.department.school.name + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s : b.created_at.to_s), b.id] }
|
137
158
|
@sale_plan = SalePlan.find(params[:id])
|
138
159
|
if @sale_plan.weekly.present?
|
139
160
|
week = Time.now.strftime('%W').to_i
|
@@ -174,7 +195,7 @@ module EducodeSales
|
|
174
195
|
|
175
196
|
def destroy
|
176
197
|
sale_plan = SalePlan.find(params[:id])
|
177
|
-
if sale_plan.
|
198
|
+
if sale_plan.soft_destroy(@current_admin.id)
|
178
199
|
render_success
|
179
200
|
else
|
180
201
|
render_failure sale_plan
|
@@ -188,7 +209,7 @@ module EducodeSales
|
|
188
209
|
def edit_month
|
189
210
|
business_ids = EducodeSales::AssignFollowUp.joins(:follow_up).where(staff_id: @current_admin.id).pluck :business_id
|
190
211
|
@businesses = Business.includes(:department, :last_follow_up).where("educode_sales_businesses.id in (?) or educode_sales_businesses.staff_id = ?", business_ids, @current_admin.id).order(created_at: :desc)
|
191
|
-
@businesses = @businesses.map { |b| [b.name + "(" + b.department.school.name + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s :
|
212
|
+
@businesses = @businesses.map { |b| [b.name + "(" + b.department.school.name + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s : b.created_at.to_s), b.id] }
|
192
213
|
@sale_plan = SalePlan.find(params[:id])
|
193
214
|
@finish_rates = []
|
194
215
|
11.times { |d| @finish_rates << ["#{d*10}%", d * 10]}
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require_dependency "educode_sales/application_controller"
|
2
|
+
|
3
|
+
module EducodeSales
|
4
|
+
class RecyclesController < ApplicationController
|
5
|
+
|
6
|
+
def destroy
|
7
|
+
@recycle = Recycle.find(params[:id])
|
8
|
+
@recycle.destroy
|
9
|
+
render_success
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
def restore_reports
|
15
|
+
@recycle = Recycle.find(params[:id])
|
16
|
+
report_id = @recycle.source_id
|
17
|
+
EducodeSales::SaleReport.unscoped.find(report_id).update(deleted_at: nil)
|
18
|
+
@recycle.destroy
|
19
|
+
render_success
|
20
|
+
end
|
21
|
+
|
22
|
+
def restore_plans
|
23
|
+
@recycle = Recycle.find(params[:id])
|
24
|
+
plan = EducodeSales::SalePlan.unscoped.find(@recycle.source_id)
|
25
|
+
business = EducodeSales::Business.unscoped.find(plan.business_id)
|
26
|
+
Recycle.find_by(source_id: business.id).destroy if Recycle.find_by(source_id: business.id).present?
|
27
|
+
business.update(deleted_at: nil)
|
28
|
+
follow_ups = EducodeSales::FollowUp.unscoped.where(business_id: business.id)
|
29
|
+
follow_ups.update_all(deleted_at: nil)
|
30
|
+
plan.update(deleted_at: nil)
|
31
|
+
@recycle.destroy
|
32
|
+
render_success
|
33
|
+
end
|
34
|
+
|
35
|
+
def restore_businesses
|
36
|
+
@recycle = Recycle.find(params[:id])
|
37
|
+
business_id = @recycle.source_id
|
38
|
+
EducodeSales::Business.unscoped.find(business_id).update(deleted_at: nil)
|
39
|
+
follow_ups = EducodeSales::FollowUp.unscoped.where(business_id: business_id)
|
40
|
+
follow_ups.update_all(deleted_at: nil)
|
41
|
+
@recycle.destroy
|
42
|
+
render_success
|
43
|
+
end
|
44
|
+
|
45
|
+
def business
|
46
|
+
@businesses = Recycle.where(source_type:"EducodeSales::Business")
|
47
|
+
if params[:sort].present? && params[:sort][:field]
|
48
|
+
@businesses = @businesses.order("created_at #{params[:sort][:order]}")
|
49
|
+
else
|
50
|
+
@businesses = @businesses.order("educode_sales_recycles.created_at desc")
|
51
|
+
end
|
52
|
+
@businesses = @businesses.page(params[:page]).per(params[:limit])
|
53
|
+
end
|
54
|
+
|
55
|
+
def weekly
|
56
|
+
@weekly = Recycle.where(source_type:"EducodeSales::SaleReport").order(created_at: :desc).page(params[:page]).per(params[:limit])
|
57
|
+
if params[:sort].present? && params[:sort][:field]
|
58
|
+
@weekly = @weekly.order("created_at #{params[:sort][:order]}")
|
59
|
+
else
|
60
|
+
@weekly = @weekly.order("educode_sales_recycles.created_at desc")
|
61
|
+
end
|
62
|
+
@weekly = @weekly.page(params[:page]).per(params[:limit])
|
63
|
+
end
|
64
|
+
|
65
|
+
def monthly
|
66
|
+
@monthly = Recycle.where(source_type:"EducodeSales::SaleReport")
|
67
|
+
if params[:sort].present? && params[:sort][:field]
|
68
|
+
@monthly = @monthly.order("created_at #{params[:sort][:order]}")
|
69
|
+
else
|
70
|
+
@monthly = @monthly.order("educode_sales_recycles.created_at desc")
|
71
|
+
end
|
72
|
+
@monthly = @monthly.page(params[:page]).per(params[:limit])
|
73
|
+
end
|
74
|
+
|
75
|
+
def weekPlan
|
76
|
+
@weekPlans = Recycle.where(source_type:"EducodeSales::SalePlan")
|
77
|
+
if params[:sort].present? && params[:sort][:field]
|
78
|
+
@weekPlans = @weekPlans.order("created_at #{params[:sort][:order]}")
|
79
|
+
else
|
80
|
+
@weekPlans = @weekPlans.order("educode_sales_recycles.created_at desc")
|
81
|
+
end
|
82
|
+
@weekPlans = @weekPlans.page(params[:page]).per(params[:limit])
|
83
|
+
end
|
84
|
+
|
85
|
+
def monthPlan
|
86
|
+
@monthPlans = Recycle.where(source_type:"EducodeSales::SalePlan")
|
87
|
+
if params[:sort].present? && params[:sort][:field]
|
88
|
+
@monthPlans = @monthPlans.order("created_at #{params[:sort][:order]}")
|
89
|
+
else
|
90
|
+
@monthPlans = @monthPlans.order("educode_sales_recycles.created_at desc")
|
91
|
+
end
|
92
|
+
@monthPlans = @monthPlans.page(params[:page]).per(params[:limit])
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -24,13 +24,23 @@ module EducodeSales
|
|
24
24
|
def show
|
25
25
|
@sale_report = SaleReport.find(params[:id])
|
26
26
|
@name = @sale_report.staff.user.real_name
|
27
|
-
|
27
|
+
d = @sale_report.staff
|
28
|
+
area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
|
29
|
+
if d.areas.present?
|
30
|
+
if d.areas.ids.sort.to_s == area_ids
|
31
|
+
@area = '全国'
|
32
|
+
else
|
33
|
+
@area = d.areas.pluck(:name).join("、")
|
34
|
+
end
|
35
|
+
else
|
36
|
+
@area = ''
|
37
|
+
end
|
28
38
|
render layout: false
|
29
39
|
end
|
30
40
|
|
31
41
|
def destroy
|
32
42
|
sale_report = SaleReport.find(params[:id])
|
33
|
-
if sale_report.
|
43
|
+
if sale_report.soft_destroy(@current_admin.id)
|
34
44
|
render_success
|
35
45
|
else
|
36
46
|
render_failure sale_report
|
@@ -86,7 +96,17 @@ module EducodeSales
|
|
86
96
|
def edit
|
87
97
|
@sale_report = SaleReport.find(params[:id])
|
88
98
|
@name = @sale_report.staff.user.real_name
|
89
|
-
|
99
|
+
d = @sale_report.staff
|
100
|
+
area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
|
101
|
+
if d.areas.present?
|
102
|
+
if d.areas.ids.sort.to_s == area_ids
|
103
|
+
@area = '全国'
|
104
|
+
else
|
105
|
+
@area = d.areas.pluck(:name).join("、")
|
106
|
+
end
|
107
|
+
else
|
108
|
+
@area = ''
|
109
|
+
end
|
90
110
|
render layout: false
|
91
111
|
end
|
92
112
|
|
@@ -123,7 +143,17 @@ module EducodeSales
|
|
123
143
|
def audit
|
124
144
|
@sale_report = SaleReport.find(params[:id])
|
125
145
|
@name = @sale_report.staff.user.real_name
|
126
|
-
|
146
|
+
d = @sale_report.staff
|
147
|
+
area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
|
148
|
+
if d.areas.present?
|
149
|
+
if d.areas.ids.sort.to_s == area_ids
|
150
|
+
@area = '全国'
|
151
|
+
else
|
152
|
+
@area = d.areas.pluck(:name).join("、")
|
153
|
+
end
|
154
|
+
else
|
155
|
+
@area = ''
|
156
|
+
end
|
127
157
|
render layout: false
|
128
158
|
end
|
129
159
|
|