educode_sales 1.10.23 → 1.10.24
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/controllers/educode_sales/businesses_controller.rb +13 -0
- data/app/controllers/educode_sales/contracts_controller.rb +55 -0
- data/app/controllers/educode_sales/follow_ups_controller.rb +29 -0
- data/app/controllers/educode_sales/money_plan_records_controller.rb +14 -10
- data/app/controllers/educode_sales/money_plans_controller.rb +5 -3
- data/app/controllers/educode_sales/plans_controller.rb +28 -5
- data/app/helpers/educode_sales/sale_trends_helper.rb +11 -1
- data/app/models/educode_sales/common.rb +3 -1
- data/app/models/educode_sales/money_plan_claim.rb +1 -1
- data/app/models/educode_sales/permission.rb +2 -1
- data/app/models/educode_sales/sale_plan.rb +2 -0
- data/app/views/educode_sales/businesses/index.html.erb +123 -80
- data/app/views/educode_sales/ideas/_index.html.erb +2 -2
- data/app/views/educode_sales/ideas/follow_ups.json.jbuilder +2 -1
- data/app/views/educode_sales/money_plans/index.json.jbuilder +4 -4
- data/app/views/educode_sales/plans/_monthPlan.html.erb +5 -0
- data/app/views/educode_sales/plans/_weekPlan.html.erb +5 -0
- data/app/views/educode_sales/plans/_yearPlan.html.erb +4 -4
- data/app/views/educode_sales/plans/edit_month.html.erb +6 -0
- data/app/views/educode_sales/plans/edit_week.html.erb +6 -0
- data/app/views/educode_sales/plans/index.json.jbuilder +1 -0
- data/app/views/educode_sales/plans/new_month.html.erb +14 -0
- data/app/views/educode_sales/plans/new_week.html.erb +14 -0
- data/db/migrate/20230629130033_add_clazz_to_money_plans.rb +6 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +7 -7
- data/app/assets/images/educode_sales/indexlogo.png +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b89143c3577e56b16967098a24f73fe1b7d3b1a0906047bb1b70a5f403442d2
|
4
|
+
data.tar.gz: 75cfa41097af3a67fc4e74d0a64203cc34d2e551bee15097a5c310b5e78382d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14a3554944e927b9536e035ddd17906aa836f48c5715cf8f6966a986af517cd8fb9e37847d26fae97ffd2b2f7e596ecf3104f1ac43069ff7290c2561ed9dbae1
|
7
|
+
data.tar.gz: 125797df83bf24579f5c5100649aa47659580c84968bc9d06edb309c6ae2274095c809142905f065f856370afa6112920a5a6eff12dcf62eca52c7b09f0d4bf5
|
@@ -15,6 +15,7 @@ module EducodeSales
|
|
15
15
|
# @more = can?(:create, EducodeSales::SalePlan) || can?(:update, EducodeSales::Business) || can?(:destroy, EducodeSales::Business) || can?(:show_file, EducodeSales::Business)
|
16
16
|
@more = true
|
17
17
|
gon.menus = []
|
18
|
+
gon.assign_menus = []
|
18
19
|
gon.export_menus = []
|
19
20
|
gon.place = params[:place_id].present? ? [{ value: params[:place_id], name: EducodeSales::Place.find(params[:place_id]).name }] : []
|
20
21
|
|
@@ -70,18 +71,30 @@ module EducodeSales
|
|
70
71
|
gon.menus << { title: '添加年计划', event: 'year' }
|
71
72
|
end
|
72
73
|
|
74
|
+
if can?(:assign, EducodeSales::SalePlan)
|
75
|
+
gon.assign_menus << { title: '指派周计划', event: 'week' }
|
76
|
+
gon.assign_menus << { title: '指派月计划', event: 'month' }
|
77
|
+
gon.assign_menus << { title: '指派年计划', event: 'year' }
|
78
|
+
end
|
79
|
+
|
73
80
|
gon.menus << { title: '添加回款计划', event: 'money_plan' }
|
81
|
+
gon.assign_menus << { title: '添加回款计划', event: 'money_plan' }
|
74
82
|
|
75
83
|
gon.menus << { title: '关注', event: 'following' }
|
76
84
|
gon.menus << { title: '跟进时间线', event: 'time_line' }
|
85
|
+
|
86
|
+
gon.assign_menus << { title: '关注', event: 'following' }
|
87
|
+
gon.assign_menus << { title: '跟进时间线', event: 'time_line' }
|
77
88
|
if can?(:show_file, EducodeSales::Business)
|
78
89
|
gon.menus << { title: '附件管理', event: 'file' }
|
90
|
+
gon.assign_menus << { title: '附件管理', event: 'file' }
|
79
91
|
end
|
80
92
|
if can?(:update, EducodeSales::Business)
|
81
93
|
# gon.menus << { title: '编辑', event: 'edit' }
|
82
94
|
end
|
83
95
|
if can?(:destroy, EducodeSales::Business)
|
84
96
|
gon.menus << { title: '删除', event: 'delete' }
|
97
|
+
gon.assign_menus << { title: '删除', event: 'delete' }
|
85
98
|
end
|
86
99
|
if can?(:export_business, EducodeSales::Business)
|
87
100
|
gon.export_menus << { title: '导出到Csv文件', event: 'export_csv' }
|
@@ -328,6 +328,17 @@ module EducodeSales
|
|
328
328
|
def add_follow_ups
|
329
329
|
@business = Business.find(params[:business_id])
|
330
330
|
last_follow_up = @business.last_follow_up
|
331
|
+
|
332
|
+
# 计划交货时间
|
333
|
+
current_1_plan = nil
|
334
|
+
# 计划验收时间
|
335
|
+
current_2_plan = nil
|
336
|
+
# 实际交货时间
|
337
|
+
current_1_actual = nil
|
338
|
+
# 实际验收时间
|
339
|
+
current_2_actual = nil
|
340
|
+
|
341
|
+
|
331
342
|
|
332
343
|
data = []
|
333
344
|
6.times do |i|
|
@@ -340,9 +351,20 @@ module EducodeSales
|
|
340
351
|
end
|
341
352
|
params["#{i+1}_plan_date"].each do |d, v|
|
342
353
|
data[i][d.to_i] << v
|
354
|
+
if i == 0 && v.present?
|
355
|
+
current_1_plan = v.to_date
|
356
|
+
elsif i == 1 && v.present?
|
357
|
+
current_2_plan = v
|
358
|
+
end
|
343
359
|
end
|
344
360
|
params["#{i+1}_actual_date"].each do |d, v|
|
345
361
|
data[i][d.to_i] << v
|
362
|
+
if i == 0 && v.present?
|
363
|
+
current_1_actual = v.to_date
|
364
|
+
elsif i == 1 && v.present?
|
365
|
+
current_2_actual = v
|
366
|
+
end
|
367
|
+
|
346
368
|
if i == 1 && last_follow_up
|
347
369
|
# 验收时间
|
348
370
|
last_follow_up.reception_at = v
|
@@ -357,6 +379,39 @@ module EducodeSales
|
|
357
379
|
# data.each do |d|
|
358
380
|
# d.select! { |d| d.delete_if{|f| f == ''}.present? }
|
359
381
|
# end
|
382
|
+
current_week = Time.now.strftime('%W')
|
383
|
+
staff_manage_ids = @business&.last_follow_up&.assign_follow_ups.present? ? @business.last_follow_up.assign_follow_ups.pluck(:staff_id) : [@business.staff_id]
|
384
|
+
if current_1_plan && current_1_plan.to_date.strftime('%W') == current_week
|
385
|
+
unless EducodeSales::SalePlan.where(weekly: current_week, content: "提醒:请补充交付计划内容!", business: @business, staff_id: staff_manage_ids, finish_rate: 0).exists?
|
386
|
+
common_id = EducodeSales::Common.find_by(clazz: '计划类型', name: '交付计划')&.id
|
387
|
+
staff_manage_ids.each do |staff_id|
|
388
|
+
EducodeSales::SalePlan.create(month: Time.now.beginning_of_month, weekly: current_week, content: "提醒:请补充交付计划内容!", business: @business, staff_id: staff_id, finish_rate: '0', common_id: common_id )
|
389
|
+
EducodeSales::SalePlan.create(month: Time.now.beginning_of_month, content: "提醒:请补充交付计划内容!", business: @business, staff_id: staff_id, finish_rate: '0', common_id: common_id )
|
390
|
+
end
|
391
|
+
end
|
392
|
+
end
|
393
|
+
|
394
|
+
if current_2_plan && current_2_plan.to_date.strftime('%W') == current_week
|
395
|
+
unless EducodeSales::SalePlan.where(weekly: current_week, content: "提醒:请补充验收计划内容!", business: @business, staff_id: staff_manage_ids, finish_rate: 0).exists?
|
396
|
+
common_id = EducodeSales::Common.find_by(clazz: '计划类型', name: '验收计划')&.id
|
397
|
+
staff_manage_ids.each do |staff_id|
|
398
|
+
EducodeSales::SalePlan.create(month: Time.now.beginning_of_month, weekly: current_week, content: "提醒:请补充验收计划内容!", business: @business, staff_id: staff_id, finish_rate: '0', common_id: common_id )
|
399
|
+
EducodeSales::SalePlan.create(month: Time.now.beginning_of_month, content: "提醒:请补充验收计划内容!", business: @business, staff_id: staff_id, finish_rate: '0', common_id: common_id )
|
400
|
+
end
|
401
|
+
end
|
402
|
+
end
|
403
|
+
|
404
|
+
# 更新对应的计划完成度
|
405
|
+
if current_2_plan.present? && current_2_plan.to_date.strftime('%W') == current_week
|
406
|
+
common_id = EducodeSales::Common.find_by(clazz: '计划类型', name: '交付计划')&.id
|
407
|
+
EducodeSales::SalePlan.where(month: Time.now.beginning_of_month, business: @business, staff_id: staff_manage_ids, finish_rate: 0, common_id: common_id).update_all(finish_rate: 100)
|
408
|
+
end
|
409
|
+
|
410
|
+
if current_2_actual.present? && current_2_actual.to_date.strftime('%W') == current_week
|
411
|
+
common_id = EducodeSales::Common.find_by(clazz: '计划类型', name: '验收计划')&.id
|
412
|
+
EducodeSales::SalePlan.where(month: Time.now.beginning_of_month, business: @business, staff_id: staff_manage_ids, finish_rate: 0, common_id: common_id).update_all(finish_rate: 100)
|
413
|
+
end
|
414
|
+
|
360
415
|
|
361
416
|
follow_up = last_follow_up.dup
|
362
417
|
|
@@ -119,6 +119,17 @@ module EducodeSales
|
|
119
119
|
business_clazz_change.save unless business_clazz_change.persisted?
|
120
120
|
end
|
121
121
|
end
|
122
|
+
|
123
|
+
# 计划投标时间有变化且是当前周的话,添加当周/当月的销售计划
|
124
|
+
current_week = Time.now.strftime('%W').to_i
|
125
|
+
if follow_up.invitation_at&.strftime('%W').to_i == current_week
|
126
|
+
if last_follow_up && last_follow_up.invitation_at&.strftime('%W').to_i == current_week
|
127
|
+
current_week = nil
|
128
|
+
end
|
129
|
+
else
|
130
|
+
current_week = nil
|
131
|
+
end
|
132
|
+
|
122
133
|
if follow_up.save
|
123
134
|
if last_follow_up.present?
|
124
135
|
last_follow_up.key_person.each do |d|
|
@@ -136,6 +147,24 @@ module EducodeSales
|
|
136
147
|
last_follow_up.contract_date_lists.update_all(follow_up_id: follow_up.id)
|
137
148
|
end
|
138
149
|
@business.update(last_follow_up_id: follow_up.id, clazz_id: follow_up.clazz_id, p_deploy_time: params[:deploy_time])
|
150
|
+
|
151
|
+
if current_week.present?
|
152
|
+
staff_manage_ids = @business&.last_follow_up&.assign_follow_ups.present? ? @business.last_follow_up.assign_follow_ups.pluck(:staff_id) : [@business.staff_id]
|
153
|
+
common_id = EducodeSales::Common.find_by(clazz: '计划类型', name: '中标计划')&.id
|
154
|
+
staff_manage_ids.each do |staff_id|
|
155
|
+
EducodeSales::SalePlan.create(month: Time.now.beginning_of_month, weekly: current_week, content: "提醒:请补充中标计划内容!", business: @business, staff_id: staff_id, finish_rate: '0', common_id: common_id )
|
156
|
+
EducodeSales::SalePlan.create(month: Time.now.beginning_of_month, content: "提醒:请补充中标计划内容!", business: @business, staff_id: staff_id, finish_rate: '0', common_id: common_id )
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
# 更新对应的计划完成度
|
161
|
+
if follow_up.bidded_date.present? && follow_up.bidded_date.strftime('%W') == Time.now.strftime('%W')
|
162
|
+
staff_manage_ids = @business&.last_follow_up&.assign_follow_ups.present? ? @business.last_follow_up.assign_follow_ups.pluck(:staff_id) : [@business.staff_id]
|
163
|
+
common_id = EducodeSales::Common.find_by(clazz: '计划类型', name: '中标计划')&.id
|
164
|
+
EducodeSales::SalePlan.where(month: Time.now.beginning_of_month, business: @business, staff_id: staff_manage_ids, finish_rate: 0, common_id: common_id).update_all(finish_rate: 100)
|
165
|
+
end
|
166
|
+
|
167
|
+
|
139
168
|
# 增加o商机编号
|
140
169
|
add_business_number
|
141
170
|
update_department
|
@@ -6,7 +6,7 @@ module EducodeSales
|
|
6
6
|
def index
|
7
7
|
respond_to do |format|
|
8
8
|
format.html do
|
9
|
-
|
9
|
+
|
10
10
|
end
|
11
11
|
format.js do
|
12
12
|
gon.edit_record = can?(:update_record, EducodeSales::MoneyPlan)
|
@@ -50,7 +50,7 @@ module EducodeSales
|
|
50
50
|
elsif params[:q][:state] == '无对应合同'
|
51
51
|
@money_plan_records = @money_plan_records.having("claim_num = 0 AND business_id IS NULL")
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
end
|
55
55
|
|
56
56
|
if params[:q].present? && params[:q][:staff_manages].present?
|
@@ -60,7 +60,7 @@ module EducodeSales
|
|
60
60
|
LEFT JOIN educode_sales_assign_follow_ups ON educode_sales_assign_follow_ups.follow_up_id = last_follow_up.id").
|
61
61
|
where("(educode_sales_assign_follow_ups.id IS NOT NULL AND educode_sales_assign_follow_ups.staff_id = ?) OR (educode_sales_assign_follow_ups.id IS NULL AND educode_sales_businesses.staff_id = ?)", params[:q][:staff_manages], params[:q][:staff_manages])
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
if params[:q].present? && params[:q][:amount].present?
|
65
65
|
@money_plan_records = @money_plan_records.where(amount: params[:q][:amount])
|
66
66
|
end
|
@@ -119,7 +119,7 @@ module EducodeSales
|
|
119
119
|
business_id = Business.find_by(number: ods.row(r+2)[3].to_s.strip)&.id
|
120
120
|
EducodeSales::MoneyPlanRecord.create(payer_name: ods.row(r+2)[0].to_s.strip, amount: ods.row(r+2)[1].to_s.strip, date_at: ods.row(r+2)[2].to_s.strip, business_id: business_id, staff_id: @current_admin.id) if business_id
|
121
121
|
end
|
122
|
-
|
122
|
+
|
123
123
|
render json: { succcess: true}
|
124
124
|
end
|
125
125
|
|
@@ -163,15 +163,15 @@ module EducodeSales
|
|
163
163
|
# last_follow_up = business.last_follow_up
|
164
164
|
# if last_follow_up.present?
|
165
165
|
# follow_up = last_follow_up.dup
|
166
|
-
|
166
|
+
|
167
167
|
# follow_up.description = "认领了回款记录"
|
168
|
-
|
168
|
+
|
169
169
|
# follow_up.staff = @current_admin
|
170
|
-
|
170
|
+
|
171
171
|
# last_follow_up.assign_follow_ups.each do |d|
|
172
172
|
# follow_up.assign_follow_ups.build(staff_id: d.staff_id)
|
173
173
|
# end
|
174
|
-
|
174
|
+
|
175
175
|
# if follow_up.save!
|
176
176
|
# last_follow_up.key_person.each do |d|
|
177
177
|
# key_person = d.dup
|
@@ -187,9 +187,13 @@ module EducodeSales
|
|
187
187
|
# end
|
188
188
|
end
|
189
189
|
end
|
190
|
-
|
191
190
|
businesses.uniq.each do |d|
|
192
|
-
d.update(return_money: d.money_plans.joins(:money_plan_claims).sum("educode_sales_money_plan_claims.amount") )
|
191
|
+
d.update(return_money: d.money_plans.joins(:money_plan_claims).sum("educode_sales_money_plan_claims.amount").round(6) )
|
192
|
+
|
193
|
+
# 更新对应的计划完成度
|
194
|
+
staff_manage_ids = d&.last_follow_up&.assign_follow_ups.present? ? d.last_follow_up.assign_follow_ups.pluck(:staff_id) : [d.staff_id]
|
195
|
+
common_id = EducodeSales::Common.find_by(clazz: '计划类型', name: '回款计划')&.id
|
196
|
+
EducodeSales::SalePlan.where(month: Time.now.beginning_of_month, business: d, staff_id: staff_manage_ids, common_id: common_id).update_all(finish_rate: 100)
|
193
197
|
end
|
194
198
|
render_success
|
195
199
|
end
|
@@ -92,16 +92,18 @@ module EducodeSales
|
|
92
92
|
data = []
|
93
93
|
week = Time.now.strftime('%W').to_i
|
94
94
|
current_week = ""
|
95
|
-
|
95
|
+
|
96
96
|
(params[:num].to_i+1).times do |i|
|
97
97
|
_week = params["date_at[#{i}]"].to_date.strftime('%W').to_i
|
98
98
|
current_week = _week if _week == week
|
99
99
|
business.money_plans.create(category: params["category[#{i}]"], amount: params["amount[#{i}]"], payment_clause: params["payment_clause[#{i}]"], date_at: params["date_at[#{i}]"], follow_up_id: business.last_follow_up_id, staff_id: @current_admin.id )
|
100
100
|
end
|
101
101
|
if current_week.present?
|
102
|
+
staff_manage_ids = business&.last_follow_up&.assign_follow_ups.present? ? business.last_follow_up.assign_follow_ups.pluck(:staff_id) : [business.staff_id]
|
103
|
+
common_id = EducodeSales::Common.find_by(clazz: '计划类型', name: '回款计划')&.id
|
102
104
|
staff_manage_ids.each do |staff_id|
|
103
|
-
EducodeSales::SalePlan.create(month: Time.now.beginning_of_month, weekly: week, content: "提醒:请补充回款计划内容!", business: business, staff_id: staff_id, finish_rate: '0' )
|
104
|
-
EducodeSales::SalePlan.create(month: Time.now.beginning_of_month, content: "提醒:请补充回款计划内容!", business: business, staff_id: staff_id, finish_rate: '0' )
|
105
|
+
EducodeSales::SalePlan.create(month: Time.now.beginning_of_month, weekly: week, content: "提醒:请补充回款计划内容!", business: business, staff_id: staff_id, finish_rate: '0', common_id: common_id )
|
106
|
+
EducodeSales::SalePlan.create(month: Time.now.beginning_of_month, content: "提醒:请补充回款计划内容!", business: business, staff_id: staff_id, finish_rate: '0', common_id: common_id )
|
105
107
|
end
|
106
108
|
end
|
107
109
|
render_success
|
@@ -61,7 +61,11 @@ module EducodeSales
|
|
61
61
|
def create
|
62
62
|
if params["year"].present?
|
63
63
|
business = Business.find_by(id: params[:business_id])
|
64
|
-
plan = @current_admin.sale_plans.build(year: params[:year], business_id: business.id, clazz: params[:clazz])
|
64
|
+
plan = @current_admin.sale_plans.build(year: params[:year], business_id: business.id, clazz: params[:clazz], common_id: params[:common_id] )
|
65
|
+
if params[:assign_id].present?
|
66
|
+
plan.staff_id = params[:assign_id]
|
67
|
+
plan.assign_id = @current_admin.id
|
68
|
+
end
|
65
69
|
if plan.save
|
66
70
|
render_success
|
67
71
|
else
|
@@ -71,6 +75,11 @@ module EducodeSales
|
|
71
75
|
plan = @current_admin.sale_plans.build(plan_params)
|
72
76
|
plan.month = params["month"] + "-1"
|
73
77
|
plan.business = Business.find_by(id: params[:business_id])
|
78
|
+
|
79
|
+
if params[:assign_id].present?
|
80
|
+
plan.staff_id = params[:assign_id]
|
81
|
+
plan.assign_id = @current_admin.id
|
82
|
+
end
|
74
83
|
if plan.save
|
75
84
|
render_success
|
76
85
|
else
|
@@ -93,6 +102,10 @@ module EducodeSales
|
|
93
102
|
|
94
103
|
def new_week
|
95
104
|
@business = Business.find_by(id: params[:business_id])
|
105
|
+
common = Common.find_by(clazz: 'staff_type', name: '销售')
|
106
|
+
@staffs = Staff.includes(:user).where(job_type: common.id).map { |d| [d.user.real_name, d.id] }
|
107
|
+
|
108
|
+
|
96
109
|
@week = Time.now.strftime('%W').to_i
|
97
110
|
week = Time.now.strftime('%W').to_i
|
98
111
|
if week > 3
|
@@ -102,6 +115,7 @@ module EducodeSales
|
|
102
115
|
else
|
103
116
|
@weeks = [[week.to_s + ' 本周',week]]
|
104
117
|
end
|
118
|
+
@commons = Common.where(clazz: '计划类型').pluck(:name, :id)
|
105
119
|
business_ids = EducodeSales::AssignFollowUp.joins(:follow_up).where(staff_id: @current_admin.id).pluck :business_id
|
106
120
|
@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)
|
107
121
|
@businesses = @businesses.map { |b| [b.name + "(#{b.department&.school&.name} #{b.department&.name})" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s : b.created_at.to_s), b.id] }
|
@@ -129,6 +143,10 @@ module EducodeSales
|
|
129
143
|
end
|
130
144
|
|
131
145
|
def new_month
|
146
|
+
@commons = Common.where(clazz: '计划类型').pluck(:name, :id)
|
147
|
+
common = Common.find_by(clazz: 'staff_type', name: '销售')
|
148
|
+
@staffs = Staff.includes(:user).where(job_type: common.id).map { |d| [d.user.real_name, d.id] }
|
149
|
+
|
132
150
|
@business = Business.find_by(id: params[:business_id])
|
133
151
|
business_ids = EducodeSales::AssignFollowUp.joins(:follow_up).where(staff_id: @current_admin.id).pluck :business_id
|
134
152
|
@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)
|
@@ -201,10 +219,14 @@ module EducodeSales
|
|
201
219
|
end
|
202
220
|
|
203
221
|
def edit_week
|
222
|
+
@commons = Common.where(clazz: '计划类型').pluck(:name, :id)
|
204
223
|
business_ids = EducodeSales::AssignFollowUp.joins(:follow_up).where(staff_id: @current_admin.id).pluck :business_id
|
205
|
-
@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)
|
206
|
-
@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] }
|
207
224
|
@sale_plan = SalePlan.find(params[:id])
|
225
|
+
# 加入指派的商机id
|
226
|
+
business_ids << @sale_plan.business_id
|
227
|
+
@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)
|
228
|
+
@businesses = @businesses.map { |b| [b.name + "(" + b.department&.school&.name.to_s + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s : b.created_at.to_s), b.id] }
|
229
|
+
|
208
230
|
if @sale_plan.weekly.present?
|
209
231
|
week = Time.now.strftime('%W').to_i
|
210
232
|
if week > 3
|
@@ -267,9 +289,10 @@ module EducodeSales
|
|
267
289
|
end
|
268
290
|
|
269
291
|
def edit_month
|
292
|
+
@commons = Common.where(clazz: '计划类型').pluck(:name, :id)
|
270
293
|
business_ids = EducodeSales::AssignFollowUp.joins(:follow_up).where(staff_id: @current_admin.id).pluck :business_id
|
271
294
|
@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)
|
272
|
-
@businesses = @businesses.map { |b| [b.name + "(" + b.department
|
295
|
+
@businesses = @businesses.map { |b| [b.name + "(" + b.department&.school&.name.to_s + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s : b.created_at.to_s), b.id] }
|
273
296
|
@sale_plan = SalePlan.find(params[:id])
|
274
297
|
@finish_rates = []
|
275
298
|
11.times { |d| @finish_rates << ["#{d*10}%", d * 10]}
|
@@ -448,7 +471,7 @@ module EducodeSales
|
|
448
471
|
private
|
449
472
|
|
450
473
|
def plan_params
|
451
|
-
params.permit(:month, :weekly, :content, :finish_rate, :business_id)
|
474
|
+
params.permit(:month, :weekly, :content, :finish_rate, :business_id, :common_id, :assign_id)
|
452
475
|
end
|
453
476
|
|
454
477
|
def business_info_params
|
@@ -248,7 +248,17 @@ module EducodeSales
|
|
248
248
|
end
|
249
249
|
|
250
250
|
def visit_analysis_charts(visit_count_year, visit_count_season, visit_count_month, visit_count_week, visit_type, title_names)
|
251
|
-
|
251
|
+
if visit_type.present? && visit_type.include?("1")
|
252
|
+
names = visit_count_year.map{|d| d[0]}
|
253
|
+
elsif visit_type.present? && visit_type.include?("2")
|
254
|
+
names = visit_count_season.map{|d| d[0]}
|
255
|
+
elsif visit_type.present? && visit_type.include?("3")
|
256
|
+
names = visit_count_month.map{|d| d[0]}
|
257
|
+
elsif visit_type.present? && visit_type.include?("4")
|
258
|
+
names = visit_count_week.map{|d| d[0]}
|
259
|
+
else
|
260
|
+
names = visit_count_year.map{|d| d[0]}
|
261
|
+
end
|
252
262
|
|
253
263
|
visit_count_season_data = []
|
254
264
|
names.each do |name|
|
@@ -3,6 +3,7 @@ module EducodeSales
|
|
3
3
|
acts_as_list scope: [:clazz]
|
4
4
|
|
5
5
|
has_many :market_areas, class_name: 'MarketArea', foreign_key: 'area_id'
|
6
|
+
has_many :sale_plans, dependent: :nullify
|
6
7
|
|
7
8
|
XTYPE = "x_class"
|
8
9
|
OTYPE = 'o_class'
|
@@ -24,7 +25,8 @@ module EducodeSales
|
|
24
25
|
'跟进手段': 'contact',
|
25
26
|
'人员类型': 'staff_type',
|
26
27
|
'开课计划': 'course_plan',
|
27
|
-
'区域': 'area'
|
28
|
+
'区域': 'area',
|
29
|
+
'计划类型': 'plan_type'
|
28
30
|
}
|
29
31
|
|
30
32
|
def self.job_type_name
|
@@ -11,7 +11,7 @@ module EducodeSales
|
|
11
11
|
|
12
12
|
def update_return_money
|
13
13
|
amount = self.money_plan.business.money_plans.joins(:money_plan_claims).sum("educode_sales_money_plan_claims.amount")
|
14
|
-
self.money_plan.business.update(return_money: amount)
|
14
|
+
self.money_plan.business.update(return_money: amount.round(6))
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
@@ -218,9 +218,9 @@
|
|
218
218
|
<% end %>
|
219
219
|
<% if @more %>
|
220
220
|
{{# if(d.followed==0){}}
|
221
|
-
<a class="layui-btn-xs data-count-edit more-btn more-btn1" data-name={{d.name}} data-id={{d.id}} data-clazz="{{d.extras_clazz}}">更多<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
|
221
|
+
<a class="layui-btn-xs data-count-edit more-btn more-btn1" data-name={{d.name}} lay-event="more" data-id={{d.id}} data-clazz="{{d.extras_clazz}}">更多<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
|
222
222
|
{{# }else{}}
|
223
|
-
<a class="layui-btn-xs data-count-edit more-btn more-btn2" data-name={{d.name}} data-id={{d.id}} data-clazz="{{d.extras_clazz}}">更多<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
|
223
|
+
<a class="layui-btn-xs data-count-edit more-btn more-btn2" data-name={{d.name}} lay-event="more" data-id={{d.id}} data-clazz="{{d.extras_clazz}}">更多<i class="layui-icon layui-icon-down layui-nav-more"></i></a>
|
224
224
|
{{# }}}
|
225
225
|
<% end %>
|
226
226
|
|
@@ -635,7 +635,7 @@
|
|
635
635
|
skin: 'line',
|
636
636
|
done: function (res, curr, coun) {
|
637
637
|
exportData=res.data;
|
638
|
-
drowpdwonRender();
|
638
|
+
// drowpdwonRender();
|
639
639
|
export_drowpdwonRender();
|
640
640
|
// let headerTop = $('.layui-table-header').offset().top; //获取表格头到文档顶部的距离
|
641
641
|
// $(".layuimini-content-page").scroll(function () {
|
@@ -654,84 +654,85 @@
|
|
654
654
|
dropmenu2[dropmenu2.findIndex(function (elem)
|
655
655
|
{return elem.title.includes("关注")})].title="取消关注";
|
656
656
|
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
657
|
+
// 删除,不需要重复定义两次一样的下拉菜单
|
658
|
+
// drowpdwonRender = function(is) {
|
659
|
+
// dropdown.render({
|
660
|
+
// elem: '.more-btn1',
|
661
|
+
// data: dropmenu,
|
662
|
+
// click: function(data, othis){
|
663
|
+
// var elem = $(this.elem);
|
664
|
+
// id = elem.data('id');
|
664
665
|
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
666
|
+
// switch (data.event) {
|
667
|
+
// case 'week':
|
668
|
+
// week(id);
|
669
|
+
// break;
|
670
|
+
// case 'month':
|
671
|
+
// month(id);
|
672
|
+
// break;
|
673
|
+
// case 'year':
|
674
|
+
// year(id);
|
675
|
+
// break;
|
676
|
+
// case 'edit':
|
677
|
+
// edit(id);
|
678
|
+
// break;
|
679
|
+
// case 'file':
|
680
|
+
// file(id, elem.data('name'));
|
681
|
+
// break;
|
682
|
+
// case 'time_line':
|
683
|
+
// time_line(id, elem.data('name'));
|
684
|
+
// break;
|
685
|
+
// case 'delete':
|
686
|
+
// deleteBusiness(id, elem.data('name'), elem.data('clazz'));
|
687
|
+
// break;
|
688
|
+
// case 'following':
|
689
|
+
// following(id);
|
690
|
+
// break;
|
691
|
+
// case 'money_plan':
|
692
|
+
// money_plan(id);
|
693
|
+
// break;
|
694
|
+
// }
|
695
|
+
// }
|
696
|
+
// });
|
697
|
+
// dropdown.render({
|
698
|
+
// elem: '.more-btn2',
|
699
|
+
// data: dropmenu2,//dropmenu,
|
700
|
+
// click: function(data, othis){
|
701
|
+
// var elem = $(this.elem);
|
702
|
+
// id = elem.data('id');
|
702
703
|
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
}
|
704
|
+
// switch (data.event) {
|
705
|
+
// case 'week':
|
706
|
+
// week(id);
|
707
|
+
// break;
|
708
|
+
// case 'month':
|
709
|
+
// month(id);
|
710
|
+
// break;
|
711
|
+
// case 'year':
|
712
|
+
// year(id);
|
713
|
+
// break;
|
714
|
+
// case 'edit':
|
715
|
+
// edit(id);
|
716
|
+
// break;
|
717
|
+
// case 'file':
|
718
|
+
// file(id, elem.data('name'));
|
719
|
+
// break;
|
720
|
+
// case 'time_line':
|
721
|
+
// time_line(id, elem.data('name'));
|
722
|
+
// break;
|
723
|
+
// case 'delete':
|
724
|
+
// deleteBusiness(id, elem.data('name'), elem.data('clazz'));
|
725
|
+
// break;
|
726
|
+
// case 'following':
|
727
|
+
// following(id);
|
728
|
+
// break;
|
729
|
+
// case 'money_plan':
|
730
|
+
// money_plan(id);
|
731
|
+
// break;
|
732
|
+
// }
|
733
|
+
// }
|
734
|
+
// });
|
735
|
+
// }
|
735
736
|
|
736
737
|
export_drowpdwonRender = function() {
|
737
738
|
dropdown.render({
|
@@ -1257,6 +1258,7 @@
|
|
1257
1258
|
|
1258
1259
|
table.on('tool(businesses_table)', function (obj) {
|
1259
1260
|
var data = obj.data;
|
1261
|
+
var that = this;
|
1260
1262
|
id = data.id
|
1261
1263
|
if (obj.event === 'add_event') { // 监听添加操作
|
1262
1264
|
business_id = data.id
|
@@ -1454,8 +1456,49 @@
|
|
1454
1456
|
layer.close(index)
|
1455
1457
|
}
|
1456
1458
|
});
|
1459
|
+
} else if (obj.event == 'more') {
|
1460
|
+
dropdown.render({
|
1461
|
+
elem: that,
|
1462
|
+
show: true,
|
1463
|
+
data: data.staff_id == data.current_staff_id ? dropmenu2 : gon.assign_menus,//dropmenu,
|
1464
|
+
click: function(data, othis){
|
1465
|
+
var elem = $(this.elem);
|
1466
|
+
id = elem.data('id');
|
1467
|
+
|
1468
|
+
switch (data.event) {
|
1469
|
+
case 'week':
|
1470
|
+
week(id);
|
1471
|
+
break;
|
1472
|
+
case 'month':
|
1473
|
+
month(id);
|
1474
|
+
break;
|
1475
|
+
case 'year':
|
1476
|
+
year(id);
|
1477
|
+
break;
|
1478
|
+
case 'edit':
|
1479
|
+
edit(id);
|
1480
|
+
break;
|
1481
|
+
case 'file':
|
1482
|
+
file(id, elem.data('name'));
|
1483
|
+
break;
|
1484
|
+
case 'time_line':
|
1485
|
+
time_line(id, elem.data('name'));
|
1486
|
+
break;
|
1487
|
+
case 'delete':
|
1488
|
+
deleteBusiness(id, elem.data('name'), elem.data('clazz'));
|
1489
|
+
break;
|
1490
|
+
case 'following':
|
1491
|
+
following(id);
|
1492
|
+
break;
|
1493
|
+
case 'money_plan':
|
1494
|
+
money_plan(id);
|
1495
|
+
break;
|
1496
|
+
}
|
1497
|
+
}
|
1498
|
+
});
|
1499
|
+
// drowpdwonRender(data.staff_id == data.current_staff_id)
|
1457
1500
|
}
|
1458
|
-
|
1501
|
+
|
1459
1502
|
});
|
1460
1503
|
});
|
1461
1504
|
</script>
|
@@ -97,7 +97,7 @@
|
|
97
97
|
</div>
|
98
98
|
<script type="text/html" id="currentTableBar">
|
99
99
|
{{# if(d.is_deleted){}}
|
100
|
-
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edita" lay-event="add_event">详情</a
|
100
|
+
<!-- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edita" lay-event="add_event">详情</a>-->
|
101
101
|
<% if can? :recycle, EducodeSales::Idea %>
|
102
102
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="idea_recycle_s">恢复</a>
|
103
103
|
<% end %>
|
@@ -107,7 +107,7 @@
|
|
107
107
|
<% if can? :add_follow, EducodeSales::Idea %>
|
108
108
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-add_follow" lay-event="add_follows">添加跟进</a>
|
109
109
|
<% end %>
|
110
|
-
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edita" lay-event="add_event">详情</a
|
110
|
+
<!-- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edita" lay-event="add_event">详情</a>-->
|
111
111
|
<% if can? :update, EducodeSales::Idea %>
|
112
112
|
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="idea_edit">编辑</a>
|
113
113
|
<% end %>
|
@@ -1,12 +1,13 @@
|
|
1
1
|
json.data do
|
2
2
|
json.array! @data do |d|
|
3
3
|
json.(d, *d.attributes.keys)
|
4
|
+
json.status d.idea&.status
|
4
5
|
json.name d.idea&.business&.name || d.idea&.name
|
5
6
|
json.school_name d.idea&.business&.department&.school&.name
|
6
7
|
json.created_at d.created_at.strftime("%Y-%m-%d %H:%M:%S")
|
7
8
|
json.staff d.staff&.user&.real_name
|
8
9
|
json.sale_staff d.sale_staff&.user&.real_name
|
9
|
-
json.idea_staff d.
|
10
|
+
json.idea_staff d.idea&.staff&.user&.real_name
|
10
11
|
end
|
11
12
|
end
|
12
13
|
|
@@ -34,8 +34,8 @@ json.data do
|
|
34
34
|
end
|
35
35
|
json.claim_num d['claim_num']
|
36
36
|
|
37
|
-
json.return_money d['return_money'] || 0
|
38
|
-
json.residue_money (d.amount - d['return_money'].to_f) > 0 ? d.amount - d['return_money'].to_f : 0
|
37
|
+
json.return_money (d['return_money'] || 0).round(6)
|
38
|
+
json.residue_money ((d.amount - d['return_money'].to_f) > 0 ? d.amount - d['return_money'].to_f : 0).round(6)
|
39
39
|
if d['claim_num'] > 0
|
40
40
|
json.accounts_state ''
|
41
41
|
else
|
@@ -53,10 +53,10 @@ json.data do
|
|
53
53
|
when '已开票'
|
54
54
|
json.accounts_state '开票应收款'
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
end
|
58
58
|
json.created_at d.created_at.to_s
|
59
|
-
|
59
|
+
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
@@ -23,9 +23,9 @@
|
|
23
23
|
</div>
|
24
24
|
</div>
|
25
25
|
<div class="layui-inline">
|
26
|
-
<button type="reseet" class="layui-btn layui-btn-primary" lay-submit lay-filter="
|
26
|
+
<button type="reseet" class="layui-btn layui-btn-primary" lay-submit lay-filter="year_plan_reset_btn">重置
|
27
27
|
</button>
|
28
|
-
<button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="
|
28
|
+
<button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="year_plan_seach_btn">检索
|
29
29
|
</button>
|
30
30
|
</div>
|
31
31
|
</div>
|
@@ -149,7 +149,7 @@
|
|
149
149
|
})
|
150
150
|
|
151
151
|
// 监听搜索操作
|
152
|
-
form.on('submit(
|
152
|
+
form.on('submit(year_plan_seach_btn)', function (data) {
|
153
153
|
search = data.field
|
154
154
|
table.reload('yearPlanTable', {
|
155
155
|
page: {
|
@@ -161,7 +161,7 @@
|
|
161
161
|
return false;
|
162
162
|
});
|
163
163
|
|
164
|
-
form.on('submit(
|
164
|
+
form.on('submit(year_plan_reset_btn)', function(data){
|
165
165
|
var field = data.field;
|
166
166
|
form.val('month_plan_search_form', { staff_id: '', year: '', month: '', year: ''})
|
167
167
|
return false;
|
@@ -6,6 +6,12 @@
|
|
6
6
|
<input type="text" class="layui-input" id="edit_month_plan_month" autocomplete="off" name="month">
|
7
7
|
</div>
|
8
8
|
</div>
|
9
|
+
<div class="layui-inline">
|
10
|
+
<label class="layui-form-label required">计划类型</label>
|
11
|
+
<div class="layui-input-inline">
|
12
|
+
<%= select_tag "common_id", options_for_select(@commons, @sale_plan.common_id), class: 'required' %>
|
13
|
+
</div>
|
14
|
+
</div>
|
9
15
|
<div class="layui-inline">
|
10
16
|
<label class="layui-form-label required">商机</label>
|
11
17
|
<div class="layui-input-inline" style="width: 500px">
|
@@ -14,6 +14,12 @@
|
|
14
14
|
</div>
|
15
15
|
</div>
|
16
16
|
<% end %>
|
17
|
+
<div class="layui-inline">
|
18
|
+
<label class="layui-form-label required">计划类型</label>
|
19
|
+
<div class="layui-input-inline">
|
20
|
+
<%= select_tag "common_id", options_for_select(@commons, @sale_plan.common_id), class: 'required' %>
|
21
|
+
</div>
|
22
|
+
</div>
|
17
23
|
<div class="layui-inline">
|
18
24
|
<label class="layui-form-label required">商机</label>
|
19
25
|
<div class="layui-input-inline" style="width: 500px">
|
@@ -6,6 +6,20 @@
|
|
6
6
|
<input type="text" lay-verify="required" class="layui-input" id="new_month_month" autocomplete="off" name="month">
|
7
7
|
</div>
|
8
8
|
</div>
|
9
|
+
<div class="layui-inline">
|
10
|
+
<label class="layui-form-label required">计划类型</label>
|
11
|
+
<div class="layui-input-inline">
|
12
|
+
<%= select_tag "common_id", options_for_select(@commons), include_blank: true, class: 'required' %>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
<% if can?(:assign, EducodeSales::SalePlan) && @business && @business.staff_id != @current_admin.id %>
|
16
|
+
<div class="layui-inline">
|
17
|
+
<label class="layui-form-label required">指派给</label>
|
18
|
+
<div class="layui-input-inline">
|
19
|
+
<%= select_tag "assign_id", options_for_select(@staffs), include_blank: true, class: 'required' %>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
9
23
|
<div class="layui-inline">
|
10
24
|
<label class="layui-form-label required">商机</label>
|
11
25
|
<div class="layui-input-inline" style="width: 500px">
|
@@ -12,6 +12,20 @@
|
|
12
12
|
<%= select_tag "weekly", options_for_select(@weeks,@week), class: 'required' %>
|
13
13
|
</div>
|
14
14
|
</div>
|
15
|
+
<div class="layui-inline">
|
16
|
+
<label class="layui-form-label required">计划类型</label>
|
17
|
+
<div class="layui-input-inline">
|
18
|
+
<%= select_tag "common_id", options_for_select(@commons),include_blank: true, class: 'required' %>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
<% if can?(:assign, EducodeSales::SalePlan) && @business && @business.staff_id != @current_admin.id %>
|
22
|
+
<div class="layui-inline">
|
23
|
+
<label class="layui-form-label required">指派给</label>
|
24
|
+
<div class="layui-input-inline">
|
25
|
+
<%= select_tag "assign_id", options_for_select(@staffs), include_blank: true, class: 'required' %>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
<% end %>
|
15
29
|
<div class="layui-inline">
|
16
30
|
<label class="layui-form-label required">商机</label>
|
17
31
|
<div class="layui-input-inline" style="width: 500px">
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: educode_sales
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.10.
|
4
|
+
version: 1.10.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- anke1460
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-06-
|
11
|
+
date: 2023-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -105,7 +105,6 @@ files:
|
|
105
105
|
- app/assets/images/educode_sales/icon-login.png
|
106
106
|
- app/assets/images/educode_sales/icon.png
|
107
107
|
- app/assets/images/educode_sales/indexLogo.png
|
108
|
-
- app/assets/images/educode_sales/indexlogo.png
|
109
108
|
- app/assets/images/educode_sales/loading-0.gif
|
110
109
|
- app/assets/images/educode_sales/loading-1.gif
|
111
110
|
- app/assets/images/educode_sales/loading-2.gif
|
@@ -741,6 +740,7 @@ files:
|
|
741
740
|
- db/migrate/20230614141225_create_educode_sales_tags.rb
|
742
741
|
- db/migrate/20230614141628_create_educode_sales_follow_up_tags.rb
|
743
742
|
- db/migrate/20230614142145_create_educode_sales_watch_follow_ups.rb
|
743
|
+
- db/migrate/20230629130033_add_clazz_to_money_plans.rb
|
744
744
|
- lib/educode_sales.rb
|
745
745
|
- lib/educode_sales/engine.rb
|
746
746
|
- lib/educode_sales/version.rb
|
@@ -749,7 +749,7 @@ homepage: https://www.educoder.net
|
|
749
749
|
licenses:
|
750
750
|
- MIT
|
751
751
|
metadata: {}
|
752
|
-
post_install_message:
|
752
|
+
post_install_message:
|
753
753
|
rdoc_options: []
|
754
754
|
require_paths:
|
755
755
|
- lib
|
@@ -764,8 +764,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
764
764
|
- !ruby/object:Gem::Version
|
765
765
|
version: '0'
|
766
766
|
requirements: []
|
767
|
-
rubygems_version: 3.0.
|
768
|
-
signing_key:
|
767
|
+
rubygems_version: 3.0.0
|
768
|
+
signing_key:
|
769
769
|
specification_version: 4
|
770
770
|
summary: Summary of EducodeSales.
|
771
771
|
test_files: []
|
Binary file
|