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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 51800df7e8c3e444188f0353c66757741c5a99e710426b47da2e9593c65f819f
4
- data.tar.gz: 89735f6378821ee46fc806198a24559015440a0047ee6fc4ca27f8d364b69755
3
+ metadata.gz: baf1f64ce29343ba494bc426661bff113268f32056597273f67fb103c6d4800d
4
+ data.tar.gz: 50630bc44ae41626f2d7a6fe62307c7a890366ff28dac4fb8cf9f42a3f9b9b03
5
5
  SHA512:
6
- metadata.gz: 6f967ae4f53c7819b02f3f006a9309434b41b5d22474504464b6e22f3a5469c810a24e221e82468b642240dd81e320b019cd45f0a018e9d94fda99fa646245c5
7
- data.tar.gz: 65c325fc5d46fcfdb7ec964881ab0fb832857d428a10241fced792709871c9092ce907c5f74cc23581e2f8776a972a7f3f32d17343a2d377a4b2597610d4f65c
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
- follow_up.clazz_changed = last_follow_up.clazz_id != follow_up.clazz_id if last_follow_up.present?
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
@@ -63,5 +63,9 @@ module EducodeSales
63
63
  nil
64
64
  end
65
65
  end
66
+
67
+ def is_enabled
68
+ expired_at.present? && enabled_at.present? && expired_at > Time.now && enabled_at < Time.now
69
+ end
66
70
  end
67
71
  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">
@@ -0,0 +1,6 @@
1
+ json.data do
2
+ json.array! @business do |d|
3
+ json.value d.id
4
+ json.name d.name
5
+ end
6
+ end
@@ -94,6 +94,11 @@
94
94
  title: '监管学校',
95
95
  templet:'<div><span title="{{d.schools}}">{{d.schools}}</span></div>'
96
96
  },
97
+ {
98
+ field: 'enabled',
99
+ width: 120,
100
+ title: '状态'
101
+ },
97
102
  {
98
103
  field: 'month',
99
104
  width: 120,
@@ -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
@@ -107,6 +107,7 @@ EducodeSales::Engine.routes.draw do
107
107
  get :following_businesses
108
108
  get :followed
109
109
  get :daily_paper
110
+ get :search
110
111
  end
111
112
 
112
113
  member do
@@ -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
 
@@ -0,0 +1,6 @@
1
+ class AddOriginBusinessIdToFollowUps < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :educode_sales_follow_ups, :origin_business_id, :integer
4
+ add_column :educode_sales_sale_plans, :origin_business_id, :integer
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ class CreateEducodeSalesBusinessClazzChanges < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :educode_sales_business_clazz_changes do |t|
4
+ t.references :business
5
+ t.string :clazz_changed
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '0.9.30'
2
+ VERSION = '0.9.32'
3
3
  end
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.30
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-12 00:00:00.000000000 Z
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