educode_sales 0.9.30 → 0.9.32
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 +20 -1
- data/app/controllers/educode_sales/follow_ups_controller.rb +8 -1
- data/app/models/educode_sales/business.rb +2 -1
- data/app/models/educode_sales/business_clazz_change.rb +21 -0
- data/app/models/educode_sales/staff.rb +4 -0
- data/app/views/educode_sales/businesses/edit.html.erb +29 -2
- data/app/views/educode_sales/businesses/index.html.erb +16 -0
- data/app/views/educode_sales/businesses/search.json.jbuilder +6 -0
- data/app/views/educode_sales/staffs/index.html.erb +5 -0
- data/app/views/educode_sales/staffs/index.json.jbuilder +1 -0
- data/config/routes.rb +1 -0
- data/db/migrate/20210902064109_create_educode_sales_role_permissions.rb +2 -0
- data/db/migrate/20230115080730_add_origin_business_id_to_follow_ups.rb +6 -0
- data/db/migrate/20230117144025_create_educode_sales_business_clazz_changes.rb +10 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: baf1f64ce29343ba494bc426661bff113268f32056597273f67fb103c6d4800d
|
4
|
+
data.tar.gz: 50630bc44ae41626f2d7a6fe62307c7a890366ff28dac4fb8cf9f42a3f9b9b03
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9321b37e3c51aaa2304ecf8b68b3b9c9e78317a08b506d4792792c8d90640ebe8b146038fe15f9163afdd688b670b09d10abc624602dc24ff45f8c27a3a5dbe0
|
7
|
+
data.tar.gz: c688c3e5c06fea4cb77ff221f8db5cb9f6cdb2118ef7da812fd264f7075da755ed24792799a18d51a684ad1b745619cd56990bdda5bc87ad0ed78059e271b3be
|
@@ -233,6 +233,12 @@ module EducodeSales
|
|
233
233
|
end
|
234
234
|
end
|
235
235
|
|
236
|
+
# 商机变化
|
237
|
+
if params[:q][:clazz_changes].present?
|
238
|
+
clazz_changes = EducodeSales::BusinessClazzChange.clazz_changes_value[params[:q][:clazz_changes].to_s]
|
239
|
+
@businesses = @businesses.joins("JOIN educode_sales_business_clazz_changes ON educode_sales_business_clazz_changes.business_id = educode_sales_businesses.id").where("educode_sales_business_clazz_changes.clazz_changed in (?)", clazz_changes)
|
240
|
+
end
|
241
|
+
|
236
242
|
if params[:sort].present? && params[:sort][:field]
|
237
243
|
if params[:sort][:field] == "service_end_time"
|
238
244
|
@businesses = @businesses.order("service_time_long #{params[:sort][:order]}")
|
@@ -243,9 +249,10 @@ module EducodeSales
|
|
243
249
|
@businesses = @businesses.order("educode_sales_businesses.created_at desc")
|
244
250
|
end
|
245
251
|
|
246
|
-
@business_count = @businesses.count
|
252
|
+
@business_count = @businesses.distinct.count
|
247
253
|
# mysql -select
|
248
254
|
@businesses = @businesses.select("
|
255
|
+
distinct
|
249
256
|
educode_sales_businesses.*,
|
250
257
|
last_follow.invitation_at,
|
251
258
|
last_follow.budget_amount,
|
@@ -321,6 +328,14 @@ module EducodeSales
|
|
321
328
|
business = Business.find(params[:id])
|
322
329
|
department = Department.find(params[:department_id])
|
323
330
|
if business.update(name: params[:name], department_id: department.id, source: params[:source], school_id: department.school_id)
|
331
|
+
if params[:merge_business_ids].present?
|
332
|
+
merge_business = Business.where(id: params[:merge_business_ids].split(","))
|
333
|
+
merge_business.each do |b|
|
334
|
+
b.follow_ups.update_all(origin_business_id: b.id, business_id: business.id)
|
335
|
+
b.update(deleted_at: Time.now)
|
336
|
+
end
|
337
|
+
business.update(follow_ups_count: EducodeSales::FollowUp.where(business_id: business.id).size)
|
338
|
+
end
|
324
339
|
render_success
|
325
340
|
else
|
326
341
|
render_failure business
|
@@ -691,6 +706,10 @@ module EducodeSales
|
|
691
706
|
end
|
692
707
|
end
|
693
708
|
|
709
|
+
def search
|
710
|
+
@business = Business.where.not(id: params[:id]).order("created_at desc")
|
711
|
+
@business = @business.where("educode_sales_businesses.name like ?", "%#{params[:q]}%").limit(30) if params[:q].present?
|
712
|
+
end
|
694
713
|
|
695
714
|
private
|
696
715
|
|
@@ -84,7 +84,14 @@ module EducodeSales
|
|
84
84
|
|
85
85
|
follow_up.profit_amount = follow_up.actual_amount - (follow_up.divide_amount.to_i) if follow_up.actual_amount
|
86
86
|
last_follow_up = @business.last_follow_up
|
87
|
-
|
87
|
+
if last_follow_up.present?
|
88
|
+
follow_up.clazz_changed = last_follow_up.clazz_id != follow_up.clazz_id
|
89
|
+
if follow_up.clazz_changed
|
90
|
+
clazz_changes = "#{last_follow_up.clazz.extras.split('_')[0]}-#{follow_up.clazz.extras.split('_')[0]}"
|
91
|
+
business_clazz_change = @business.business_clazz_changes.find_or_initialize_by clazz_changed: clazz_changes
|
92
|
+
business_clazz_change.save unless business_clazz_change.persisted?
|
93
|
+
end
|
94
|
+
end
|
88
95
|
if follow_up.save
|
89
96
|
if last_follow_up.present?
|
90
97
|
last_follow_up.key_person.each do |d|
|
@@ -9,11 +9,11 @@ module EducodeSales
|
|
9
9
|
|
10
10
|
has_many :sale_plans
|
11
11
|
has_many :follow_ups
|
12
|
+
has_many :business_clazz_changes
|
12
13
|
|
13
14
|
#关联关注
|
14
15
|
has_many :users,:class_name => 'EducodeSales::BusinessRelationShip',foreign_key: 'business_id',:dependent => :destroy
|
15
16
|
|
16
|
-
|
17
17
|
#每次查询时 默认的查询条件
|
18
18
|
default_scope -> {where(deleted_at: nil)}
|
19
19
|
|
@@ -43,4 +43,5 @@ module EducodeSales
|
|
43
43
|
}[type]
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
46
47
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module EducodeSales
|
2
|
+
class BusinessClazzChange < ApplicationRecord
|
3
|
+
belongs_to :business
|
4
|
+
validates :clazz_changed, uniqueness: { message: '已存在' }
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
def self.clazz_changes_value
|
9
|
+
{
|
10
|
+
'1' => ['a-x', 'b-x', 'c-x'],
|
11
|
+
'2' => ['b-a', 'c-a', 'd-a'],
|
12
|
+
'3' => ['a-x'],
|
13
|
+
'4' => ['a-x', 'b-x'],
|
14
|
+
'5' => ['a-x', 'b-x', 'c-x'],
|
15
|
+
'6' => ['b-a'],
|
16
|
+
'7' => ['b-a', 'c-a'],
|
17
|
+
'8' => ['b-a', 'c-a', 'd-a']
|
18
|
+
}
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -22,6 +22,17 @@
|
|
22
22
|
<div class="layui-inline" style="padding-top: 20px">
|
23
23
|
<p style="padding-left: 40px">请填写提供本商机的人名(如‘张明’);如果为非头歌用户,请增加单位信息(如‘张明,华为公司’)</p>
|
24
24
|
</div>
|
25
|
+
<% if can?(:merge_business, EducodeSales::Business) %>
|
26
|
+
<div class="layui-inline-block" style="padding-top: 20px">
|
27
|
+
<label class="layui-form-label ">合并商机</label>
|
28
|
+
<div class="layui-input-inline" style="width: 300px">
|
29
|
+
<div class="layui-input-block confirm-select" id="merge_business" style="width: 300px; margin-left: 0px"></div>
|
30
|
+
</div>
|
31
|
+
<div class="layui-inline" style="padding-top: 10px">
|
32
|
+
<p style="padding-left: 40px">选择的商机及其下的跟进记录将会合并到该编辑的商机中</p>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
<% end %>
|
25
36
|
<div class="layui-form-item m-t-20">
|
26
37
|
<div class="layui-input-block">
|
27
38
|
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="edit_business">提交</button>
|
@@ -30,12 +41,13 @@
|
|
30
41
|
</div>
|
31
42
|
</div>
|
32
43
|
<script>
|
33
|
-
layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'selectInput'], function () {
|
44
|
+
layui.use(['form', 'table', 'upload', 'layer', 'laytpl', 'request', 'selectInput', 'xmSelect'], function () {
|
34
45
|
var form = layui.form,
|
35
46
|
layer = layui.layer,
|
36
47
|
table = layui.table,
|
37
48
|
laytpl = layui.laytpl,
|
38
49
|
request = layui.request,
|
50
|
+
xmSelect = layui.xmSelect,
|
39
51
|
$ = layui.$;
|
40
52
|
selectInput = layui.selectInput;
|
41
53
|
|
@@ -64,6 +76,20 @@
|
|
64
76
|
}
|
65
77
|
});
|
66
78
|
|
79
|
+
var merge_business_select = xmSelect.render({
|
80
|
+
el: '#merge_business',
|
81
|
+
filterable: true,
|
82
|
+
name: 'merge_business_ids',
|
83
|
+
remoteSearch: true,
|
84
|
+
remoteMethod: function(val, cb, show){
|
85
|
+
request.get('missions/businesses/search?id=' + parent.id + "&q=" + val, {},
|
86
|
+
function(res) {
|
87
|
+
cb(res.data)
|
88
|
+
})
|
89
|
+
},
|
90
|
+
data: []
|
91
|
+
})
|
92
|
+
|
67
93
|
// 当前弹出层,防止ID被覆盖
|
68
94
|
var parentIndex = layer.index;
|
69
95
|
|
@@ -76,7 +102,8 @@
|
|
76
102
|
request.authPut("missions/businesses/" + parent.id, {
|
77
103
|
department_id: department.getValue() || department_id,
|
78
104
|
name: data.field.name,
|
79
|
-
source: data.field.source
|
105
|
+
source: data.field.source,
|
106
|
+
merge_business_ids: data.field.merge_business_ids,
|
80
107
|
}, function (res) {
|
81
108
|
if (res.success == false) {
|
82
109
|
layer.alert(res.msg)
|
@@ -33,6 +33,22 @@
|
|
33
33
|
<%= select_tag "staff_id", options_for_select(@staffs, params[:staff_id]), { 'lay-filter': 'staff_id', include_blank: true } %>
|
34
34
|
</div>
|
35
35
|
</div>
|
36
|
+
<div class="layui-inline">
|
37
|
+
<label class="layui-form-label">商机变化</label>
|
38
|
+
<div class="layui-input-inline">
|
39
|
+
<select name="clazz_changes">
|
40
|
+
<option value=""></option>
|
41
|
+
<option value="1">商机降级</option>
|
42
|
+
<option value="2">商机晋级</option>
|
43
|
+
<option value="3">商机降级 A-X</option>
|
44
|
+
<option value="4">商机降级 AB-X</option>
|
45
|
+
<option value="5">商机降级 ABC-X</option>
|
46
|
+
<option value="6">商机晋级 B-A</option>
|
47
|
+
<option value="7">商机晋级 BC-A</option>
|
48
|
+
<option value="8">商机晋级 BCD-A</option>
|
49
|
+
</select>
|
50
|
+
</div>
|
51
|
+
</div>
|
36
52
|
<div class="layui-inline show_item" style="<%= params[:name] || params[:type] ? '' : 'display:none;' %>">
|
37
53
|
<label class="layui-form-label">项目类型</label>
|
38
54
|
<div class="layui-input-inline">
|
@@ -9,6 +9,7 @@ json.data do
|
|
9
9
|
json.month d.month
|
10
10
|
json.enabled_at d.enabled_at ? d.enabled_at.to_s(:date) : ''
|
11
11
|
json.expired_at d.enabled_at ? "#{d.enabled_at.to_s(:date)}-#{d.expired_at.to_s(:date)}" : ''
|
12
|
+
json.enabled d.is_enabled ? '启用' : '禁用'
|
12
13
|
if d.areas.present?
|
13
14
|
if d.areas.ids.sort.to_s == area_ids
|
14
15
|
json.area '全国'
|
data/config/routes.rb
CHANGED
@@ -28,6 +28,8 @@ class CreateEducodeSalesRolePermissions < ActiveRecord::Migration[5.2]
|
|
28
28
|
EducodeSales::Permission.create(name: '添加跟进记录(本人商机)', subject: 'Business', action: 'self_add_follow', clazz: 'business', position: '8')
|
29
29
|
EducodeSales::Permission.create(name: '编辑跟进记录(本人创建)', subject: 'Business', action: 'self_edit_follow', clazz: 'business', position: '9')
|
30
30
|
EducodeSales::Permission.create(name: '删除跟进记录(本人创建)', subject: 'Business', action: 'self_delete_follow', clazz: 'business', position: '10')
|
31
|
+
|
32
|
+
EducodeSales::Permission.create(name: '合并商机', subject: 'Business', action: 'merge_business', clazz: 'business', position: '12')
|
31
33
|
#回款管理权限
|
32
34
|
EducodeSales::Permission.create(name: '查看回款列表', subject: 'MoneyPlan', action: 'read', clazz: 'money_plan', position: '15')
|
33
35
|
|
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: 0.9.
|
4
|
+
version: 0.9.32
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- anke1460
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-01-
|
11
|
+
date: 2023-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -186,6 +186,7 @@ files:
|
|
186
186
|
- app/models/educode_sales/assessments_setting.rb
|
187
187
|
- app/models/educode_sales/assign_follow_up.rb
|
188
188
|
- app/models/educode_sales/business.rb
|
189
|
+
- app/models/educode_sales/business_clazz_change.rb
|
189
190
|
- app/models/educode_sales/business_export_record.rb
|
190
191
|
- app/models/educode_sales/business_number_record.rb
|
191
192
|
- app/models/educode_sales/business_relation_ship.rb
|
@@ -249,6 +250,7 @@ files:
|
|
249
250
|
- app/views/educode_sales/businesses/index.json.jbuilder
|
250
251
|
- app/views/educode_sales/businesses/new.html.erb
|
251
252
|
- app/views/educode_sales/businesses/new_follow_record.html.erb
|
253
|
+
- app/views/educode_sales/businesses/search.json.jbuilder
|
252
254
|
- app/views/educode_sales/businesses/show_follow.html.erb
|
253
255
|
- app/views/educode_sales/businesses/show_follow.json.jbuilder
|
254
256
|
- app/views/educode_sales/businesses/show_follow_record.html.erb
|
@@ -482,6 +484,8 @@ files:
|
|
482
484
|
- db/migrate/20220923084102_create_table_to_busines_number_recoreds.rb
|
483
485
|
- db/migrate/20221025094655_delete_business_number.rb
|
484
486
|
- db/migrate/20221107122147_change_divide_rate_follow_ups.rb
|
487
|
+
- db/migrate/20230115080730_add_origin_business_id_to_follow_ups.rb
|
488
|
+
- db/migrate/20230117144025_create_educode_sales_business_clazz_changes.rb
|
485
489
|
- lib/educode_sales.rb
|
486
490
|
- lib/educode_sales/engine.rb
|
487
491
|
- lib/educode_sales/version.rb
|