Class: EducodeSales::PlansController
Instance Method Summary
collapse
#authenticate_admin, #authenticate_request, #current_user, #render_failure, #render_success
Instance Method Details
#create ⇒ Object
59
60
61
62
63
64
65
66
67
68
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 59
def create
plan = @current_admin.sale_plans.build(plan_params)
plan.month = params["month"] + "-1"
plan.business_id = @current_admin.businesses.find(params[:business_id]).id
if plan.save
render_success
else
render_failure plan
end
end
|
#destroy ⇒ Object
158
159
160
161
162
163
164
165
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 158
def destroy
sale_plan = SalePlan.find(params[:id])
if sale_plan.destroy
render_success
else
render_failure sale_plan
end
end
|
#edit_month ⇒ Object
171
172
173
174
175
176
177
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 171
def edit_month
@businesses = @current_admin.businesses.pluck(:name, :id)
@sale_plan = SalePlan.find(params[:id])
@finish_rates = []
11.times { |d| @finish_rates << ["#{d*10}%", d * 10]}
render layout: false
end
|
#edit_monthly ⇒ Object
179
180
181
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 179
def edit_monthly
render layout: false
end
|
#edit_week ⇒ Object
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 125
def edit_week
@businesses = @current_admin.businesses.pluck(:name, :id)
@sale_plan = SalePlan.find(params[:id])
if @sale_plan.weekly.present?
week = Time.now.strftime('%W').to_i
if week > 3
@weeks = [week, week - 1, week - 2]
elsif week == 2
@weeks = [week, week - 1]
else
@weeks = [week]
end
@weeks << @sale_plan.weekly
@weeks = @weeks.uniq.sort
end
@months = [Time.now.strftime("%Y-%m"), Time.now.months_ago(1).strftime("%Y-%m")]
@months << @sale_plan.month.strftime("%Y-%m")
@months = @months.uniq.sort
@finish_rates = []
11.times { |d| @finish_rates << ["#{d * 10}%", d * 10] }
render layout: false
end
|
#edit_weekly ⇒ Object
167
168
169
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 167
def edit_weekly
render layout: false
end
|
#index ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 6
def index
respond_to do |format|
format.html do
common = Common.find_by(clazz: 'staff_type', name: '销售')
@staffs = Staff.includes(:user).where(job_type: common.id).map { |d| [d.user.real_name, d.id] }
@years = (1..(Time.now.year - 2020)).map { |d| 2020 + d }
@months = (1..12).map { |d| d }
end
format.json do
if @current_admin.is_admin?
@sale_plans = SalePlan
else
level = @current_admin.role.role_areas.find_by(clazz: '销售计划').level
case level
when '自己'
@sale_plans = SalePlan.where(staff_id: @current_admin.id)
when '区域'
staff_ids = Staff.joins(department: :school).where("school.province in ?", staff.areas.pluck(:name)).pluck(:id)
@sale_plans = SalePlan.where("staff_id in ?", staff_ids)
else
@sale_plans = SalePlan
end
end
if params[:clazz] == 'week'
@sale_plans = @sale_plans.where.not(weekly: nil)
else
@sale_plans = @sale_plans.where(weekly: nil)
end
if params[:q].present? && params[:q][:staff_id].present?
@sale_plans = @sale_plans.where(staff_id: params[:q][:staff_id])
end
if params[:q].present? && params[:q][:year].present?
@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)
end
if params[:q].present? && params[:q][:month].present?
@sale_plans = @sale_plans.where("month = ?", "#{params[:q][:month]}-01 00:00:00".to_date)
end
if params[:sort].present? && params[:sort][:field]
@sale_plans = @sale_plans.order("#{params[:sort][:field]} #{params[:sort][:order]}")
else
@sale_plans = @sale_plans.order("updated_at desc")
end
@sale_plans = @sale_plans.page(params[:page]).per(params[:limit])
end
end
end
|
#my_month ⇒ Object
193
194
195
196
197
198
199
200
201
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 193
def my_month
@sale_plans = SalePlan.where(staff_id: @current_admin.id, month: Time.now.strftime("%Y-%m") + "-01 00:00:00", weekly: nil)
if params[:sort].present? && params[:sort][:field]
@sale_plans = @sale_plans.order("#{params[:sort][:field]} #{params[:sort][:order]}")
else
@sale_plans = @sale_plans.order("updated_at desc")
end
@sale_plans = @sale_plans.page(params[:page]).per(params[:limit])
end
|
#my_week ⇒ Object
183
184
185
186
187
188
189
190
191
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 183
def my_week
@sale_plans = SalePlan.where(staff_id: @current_admin.id, month: Time.now.strftime("%Y-%m") + "-01 00:00:00", weekly: Time.now.strftime('%W').to_i)
if params[:sort].present? && params[:sort][:field]
@sale_plans = @sale_plans.order("#{params[:sort][:field]} #{params[:sort][:order]}")
else
@sale_plans = @sale_plans.order("updated_at desc")
end
@sale_plans = @sale_plans.page(params[:page]).per(params[:limit])
end
|
#new ⇒ Object
55
56
57
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 55
def new
render layout: false
end
|
#new_month ⇒ Object
93
94
95
96
97
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 93
def new_month
@business = Business.find_by(id: params[:business_id])
@businesses = @current_admin.businesses.pluck(:name, :id)
render layout: false
end
|
#new_monthly ⇒ Object
99
100
101
102
103
104
105
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 99
def new_monthly
sale_plans = SalePlan.where(month: Time.now.strftime("%Y-%m") + "-01 00:00:00", staff_id: @current_admin.id, weekly: nil)
@rate = sale_plans.present? ? (sale_plans.sum("finish_rate") / sale_plans.size) : 0
@departments_count = sale_plans.joins(:business).count("distinct(department_id)")
@total_amount = sale_plans.joins(business: :last_follow_up).distinct.sum("total_amount")
render layout: false
end
|
#new_week ⇒ Object
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 71
def new_week
@business = Business.find_by(id: params[:business_id])
week = Time.now.strftime('%W').to_i
if week > 3
@weeks = [week, week - 1, week - 2]
elsif week == 2
@weeks = [week, week - 1]
else
@weeks = [week]
end
@businesses = @current_admin.businesses.pluck(:name, :id)
render layout: false
end
|
#new_weekly ⇒ Object
85
86
87
88
89
90
91
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 85
def new_weekly
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)
@rate = sale_plans.present? ? (sale_plans.sum("finish_rate") / sale_plans.size) : 0
@departments_count = sale_plans.joins(:business).count("distinct(department_id)")
@total_amount = sale_plans.joins(business: :last_follow_up).distinct.sum("total_amount")
render layout: false
end
|
#show_month ⇒ Object
116
117
118
119
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 116
def show_month
@sale_plan = SalePlan.find(params[:id])
render layout: false
end
|
#show_monthly ⇒ Object
121
122
123
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 121
def show_monthly
render layout: false
end
|
#show_week ⇒ Object
107
108
109
110
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 107
def show_week
@sale_plan = SalePlan.find(params[:id])
render layout: false
end
|
#show_weekly ⇒ Object
112
113
114
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 112
def show_weekly
render layout: false
end
|
#update ⇒ Object
148
149
150
151
152
153
154
155
156
|
# File 'app/controllers/educode_sales/plans_controller.rb', line 148
def update
sale_plan = SalePlan.find(params[:id])
params["month"] = params["month"] + "-1"
if sale_plan.update(plan_params)
render_success
else
render_failure sale_plan
end
end
|