educode_sales 1.0.9 → 1.10.0

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: 06ac69aca1c84150d19b35dd21ed944d1bad8140bc09acb1c07ecfa76af6a955
4
- data.tar.gz: ccd9ef3f0774e1a45627f1e05ccac063f5e20ce35606ea4615706eaaa045be98
3
+ metadata.gz: 00f95a116861234dd0fca5a1714c085e1bec0bddc43a23eb887d52486ac72d16
4
+ data.tar.gz: 771c88244cbf37b3521d6ca60d9571d10bc22d90ae698ebf885608aeb4560a59
5
5
  SHA512:
6
- metadata.gz: 00b7d6f4308a10d6f7cbd7e901415c4548f3f12119b72d032f91f82fd0c6d24fd273141f0728439eacde51b1851d1f15ffc1b26ed9584c089d2491d10fe8ce13
7
- data.tar.gz: b896a8e71a2703ec4d177dc3c24c1853ec853fb9cd04560c26d3422121de6a2daa9254e6345fee19fe772dbd0c43c268c1cb6b40d03bf0d129d15a84abdb7d7c
6
+ metadata.gz: 9a81d2f314ed6071cf408581e4725e337fdfcca85873d90945b6fd2b26016437b497c91e34ddfc41deb0602898d150572b7f4a5cf13e4189fb50d9b7414863aa
7
+ data.tar.gz: 5dfc28b6e674a4241e2c2e717d84fc2b6cf3d3825794d96be7edbb771718cab0841ee055a87b6df43a40b6c97ba1b4d61b280d9184c1e8b4cee44d64c19dfb63
@@ -70,6 +70,8 @@ module EducodeSales
70
70
  gon.menus << { title: '添加年计划', event: 'year' }
71
71
  end
72
72
 
73
+ gon.menus << { title: '添加回款计划', event: 'money_plan' }
74
+
73
75
  gon.menus << { title: '关注', event: 'following' }
74
76
  gon.menus << { title: '跟进时间线', event: 'time_line' }
75
77
  if can?(:show_file, EducodeSales::Business)
@@ -80,7 +80,7 @@ module EducodeSales
80
80
  def search_contracts
81
81
  @data = Business
82
82
  if params[:q].present?
83
- @data = @data.where("name like :q ", q: "%#{params[:q]}%").limit(20)
83
+ @data = @data.joins(:school).where("educode_sales_businesses.name like :q OR educode_sales_businesses.number like :q OR schools.name like :q ", q: "%#{params[:q]}%").limit(20)
84
84
  end
85
85
  end
86
86
 
@@ -110,6 +110,7 @@ module EducodeSales
110
110
  claim.save
111
111
  business = claim.money_plan.business
112
112
  if business
113
+ money_plan_record.update(business_id: business.id)
113
114
  business.update(return_money: claim.money_plan.money_plan_claims.sum(:amount))
114
115
  end
115
116
  end
@@ -42,7 +42,7 @@ module EducodeSales
42
42
  end
43
43
 
44
44
  def list
45
- follow_up_ids = Business.pluck(:last_follow_up_id)
45
+ # follow_up_ids = Business.pluck(:last_follow_up_id)
46
46
  authorize! :read, MoneyPlan
47
47
  respond_to do |format|
48
48
  format.html do
@@ -54,6 +54,12 @@ module EducodeSales
54
54
  end
55
55
 
56
56
  def add
57
+ if params[:business_id].present?
58
+ @business = Business.find(params[:business_id])
59
+ gon.business_id_source = @business.id
60
+ else
61
+ gon.business_id_source = ""
62
+ end
57
63
  render layout: false
58
64
  end
59
65
 
@@ -82,6 +88,12 @@ module EducodeSales
82
88
  render_success
83
89
  end
84
90
 
91
+ def destroy
92
+ money_plan = MoneyPlan.find(params[:id])
93
+ money_plan.destroy
94
+ render_success
95
+ end
96
+
85
97
  private
86
98
  def money_plan_params
87
99
  params.permit(:category, :amount, :payment_clause, :date_at)
@@ -4,7 +4,7 @@ module EducodeSales
4
4
  belongs_to :business
5
5
  belongs_to :follow_up, counter_cache: true
6
6
 
7
- has_many :money_plan_claims
7
+ has_many :money_plan_claims, dependent: :destroy
8
8
 
9
9
  # todo 1 :实际回款 0:计划回款
10
10
  enum clazz: ['计划回款', '实际回款']
@@ -397,13 +397,7 @@
397
397
  totalRowText: '合计',
398
398
  fixed: "left"
399
399
  },
400
- {
401
- field: 'number',
402
- width: 120,
403
- title: '编号',
404
- fixed: 'left',
405
- hide: gon.filter.number
406
- },
400
+
407
401
  {
408
402
  field: 'name',
409
403
  width: 170,
@@ -522,48 +516,12 @@
522
516
  hide: gon.filter.invitation_at
523
517
  },
524
518
  {
525
- field: 'bidded_date',
526
- width: 105,
527
- title: '中标时间',
528
- sort: true,
529
- hide: gon.filter.bidded_date
530
- },
531
- {
532
- field: 'signed_date',
533
- width: 105,
534
- title: '签单时间',
535
- sort: true,
536
- hide: gon.filter.signed_date
537
- },
538
- {
539
- field: 'reception_at',
540
- width: 105,
541
- title: '验收时间',
542
- sort: true,
543
- hide: gon.filter.reception_at
544
- },
545
- {
546
- field: 'service_end_time',
547
- width: 200,
548
- title: '服务期',
549
- sort: true,
550
- hide: gon.filter.service_end_time
551
- },
552
- {
553
- field: 'o_business_deployment',
554
- width: 150,
555
- title: '部署类型',
556
- sort: true,
557
- hide: gon.filter.o_business_deployment
558
- },
559
- {
560
- field: 'p_deploy_time',
561
- width: 150,
562
- title: '部署时间',
563
- sort: true,
564
- hide: gon.filter.p_deploy_time
519
+ field: 'bidded_date',
520
+ width: 105,
521
+ title: '中标时间',
522
+ sort: true,
523
+ hide: gon.filter.bidded_date
565
524
  },
566
-
567
525
  {
568
526
  field: 'budget_amount',
569
527
  width: 105,
@@ -573,42 +531,12 @@
573
531
  hide: gon.filter.budget_amount
574
532
  },
575
533
  {
576
- field: 'total_amount',
577
- width: 100,
578
- title: '中标额',
579
- totalRow: true,
580
- sort: true,
581
- hide: gon.filter.total_amount
582
- },
583
- {
584
- field: 'actual_amount',
585
- width: 100,
586
- title: '合同额',
587
- totalRow: true,
588
- sort: true,
589
- hide: gon.filter.actual_amount
590
- },
591
- {
592
- field: 'return_money',
593
- width: 100,
594
- title: '回款',
595
- sort: true,
596
- totalRow: true,
597
- hide: gon.filter.return_money
598
- },
599
- {
600
- field: 'wait_return_money',
601
- width: 100,
602
- title: '待回款',
603
- sort: true,
604
- totalRow: true,
605
- hide: gon.filter.wait_return_money
606
- },
607
- {
608
- field: 'return_money_days',
609
- width: 150,
610
- title: '首次回款周期(天)',
611
- hide: gon.filter.return_money_days
534
+ field: 'total_amount',
535
+ width: 100,
536
+ title: '中标额',
537
+ totalRow: true,
538
+ sort: true,
539
+ hide: gon.filter.total_amount
612
540
  },
613
541
  {
614
542
  field: 'divide_rate',
@@ -617,13 +545,7 @@
617
545
  sort: true,
618
546
  hide: gon.filter.divide_rate
619
547
  },
620
- {
621
- field: 'divide_money',
622
- width: 160,
623
- title: '渠道分成金额',
624
- sort: true,
625
- hide: gon.filter.divide_money
626
- },
548
+
627
549
  {
628
550
  field: 'place',
629
551
  width: 160,
@@ -751,6 +673,9 @@
751
673
  case 'following':
752
674
  following(id);
753
675
  break;
676
+ case 'money_plan':
677
+ money_plan(id);
678
+ break;
754
679
  }
755
680
  }
756
681
  });
@@ -786,6 +711,9 @@
786
711
  case 'following':
787
712
  following(id);
788
713
  break;
714
+ case 'money_plan':
715
+ money_plan(id);
716
+ break;
789
717
  }
790
718
  }
791
719
  });
@@ -808,7 +736,9 @@
808
736
  case 'export_records':
809
737
  export_records();
810
738
  break;
739
+
811
740
  }
741
+
812
742
  }
813
743
  });
814
744
  }
@@ -1005,6 +935,24 @@
1005
935
  });
1006
936
  }
1007
937
 
938
+ function money_plan(business_id) {
939
+ var content = miniPage.getHrefContent('/missions/money_plans/add?business_id=' + business_id);
940
+ var openWH = miniPage.getOpenWidthHeight();
941
+ sindex = layer.open({
942
+ title: '添加回款计划',
943
+ type: 1,
944
+ shade: 0.2,
945
+ maxmin: true,
946
+ shadeClose: true,
947
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
948
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
949
+ content: content,
950
+ });
951
+ $(window).on("resize", function () {
952
+ layer.full(sindex);
953
+ });
954
+ }
955
+
1008
956
  function month(id) {
1009
957
  var content = miniPage.getHrefContent('/missions/plans/new_month?business_id=' + id);
1010
958
  var openWH = miniPage.getOpenWidthHeight();
@@ -1,7 +1,7 @@
1
1
  json.data do
2
2
  json.array! @data do |d|
3
3
  json.value d.id
4
- json.name "#{d.business.number} / #{d.business.department&.school&.name.to_s}#{d.business.department&.name.to_s} / #{d.business.name} / #{d.business.last_follow_up&.actual_amount}万 / #{d.date_at.to_s(:date)}"
4
+ json.name "#{d.business.number} / #{d.business.department&.school&.name.to_s}#{d.business.department&.name.to_s} / #{d.business.name} / #{d.business.last_follow_up&.actual_amount}万 / #{d.business.last_follow_up&.return_money}万 /#{d.date_at.to_s(:date)}"
5
5
  end
6
6
  end
7
7
  json.count @data.size
@@ -2,7 +2,7 @@
2
2
  <form class="layui-form layui-form-pane" lay-filter="search_plans">
3
3
  <div class="layui-form-item">
4
4
  <div class="layui-inline">
5
- <label class="layui-form-label">合同名称</label>
5
+ <label class="layui-form-label">商机名称</label>
6
6
  <div class="layui-input-inline">
7
7
  <input type="text" name="business" class="layui-input">
8
8
  </div>
@@ -33,6 +33,7 @@
33
33
  </script>
34
34
  <script type="text/html" id="currentTableBarmoney_plan">
35
35
  <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
36
+ <a class="layui-btn layui-btn-danger layui-btn-xs data-count-edit" lay-event="delete">删除</a>
36
37
  <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="apply">开票申请</a>
37
38
  <!-- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">催款提醒</a> -->
38
39
 
@@ -76,7 +77,7 @@
76
77
  }, {
77
78
  field: 'business_name',
78
79
  width: 150,
79
- title: '合同名称'
80
+ title: '商机名称'
80
81
  }, {
81
82
  field: 'school',
82
83
  width: 180,
@@ -130,6 +131,7 @@
130
131
  field: 'created_at',
131
132
  width: 170,
132
133
  title: '添加计划时间',
134
+ sort: true,
133
135
  }, {
134
136
  title: '操作',
135
137
  minWidth: 200,
@@ -174,12 +176,7 @@
174
176
 
175
177
  form.on('submit(reset_business_search)', function(data) {
176
178
  var field = data.field;
177
- form.val('search_teachers', {
178
- area: "",
179
- date: "",
180
- staff_id: "",
181
- clazz: "",
182
- professional_title: "",
179
+ form.val('search_plans', {
183
180
  school: "",
184
181
  business: ""
185
182
  });
@@ -245,6 +242,13 @@
245
242
  $(window).on("resize", function() {
246
243
  layer.full(sindex);
247
244
  });
245
+ } else if (obj.event == 'delete') {
246
+ layer.confirm('确定删除商机' + data.business_name + "的回款计划", function (index) {
247
+ request.delete('missions/money_plans/' + data.id, {}, function (res) {
248
+ layer.close(index);
249
+ table.reload("money_plan_table");
250
+ })
251
+ });
248
252
  }
249
253
  });
250
254
 
@@ -1,10 +1,18 @@
1
+ <%= Gon::Base.render_data %>
1
2
  <div style="padding:10px">
2
3
  <div class="layui-form layuimini-form" lay-filter="searchform">
3
4
  <div class="layui-form-item">
4
- <label class="layui-form-label required" style="width: 80px !important;">合同名称:</label>
5
+ <label class="layui-form-label required" style="width: 80px !important;">商机名称:</label>
6
+ <% if @business.present? %>
7
+ <div class="layui-input-inline" style="line-height: 38px;">
8
+ <%= @business.name %>
9
+ </div>
10
+ <% else %>
5
11
  <div class="layui-input-inline">
6
12
  <div id="business" style="width:600px;"></div>
7
13
  </div>
14
+ <% end %>
15
+
8
16
  </div>
9
17
  <div class="layui-form-item">
10
18
  <div class="layui-inline">
@@ -22,7 +30,7 @@
22
30
  <div class="layui-inline">
23
31
  <label class="layui-form-label required" style="width: 110px;">计划回款时间:</label>
24
32
  <div class="layui-input-inline">
25
- <input type="text" name="date_at[0]" value="" class="layui-input" lay-verify="required" id="date_at">
33
+ <input type="text" name="date_at[0]" value="" class="layui-input" lay-verify="required" id="money_plan_date_at">
26
34
  </div>
27
35
  </div>
28
36
  <div class="layui-inline">
@@ -86,19 +94,22 @@
86
94
  form.render();
87
95
 
88
96
  laydate.render({
89
- elem: '#date_at',
97
+ elem: '#money_plan_date_at',
90
98
  });
91
99
 
92
-
93
- var business_id = "";
94
- var business_select = selectInput.render({
100
+
101
+ if (gon.business_id_source) {
102
+ var business_id = gon.business_id_source;
103
+ } else {
104
+ var business_id = "";
105
+ var business_select = selectInput.render({
95
106
  elem: '#business',
96
107
  name: 'bussiness_name', // 渲染的input的name值
97
108
  layFilter: 'test', //同layui form参数lay-filter
98
109
  layVerType: 'tips', // 同layui form参数lay-verType
99
110
  layReqText: '请填写文本', //同layui form参数lay-ReqText
100
111
  hasSelectIcon: false,
101
- placeholder: '请输入合同名称', // 渲染的inputplaceholder值
112
+ placeholder: '请输入商机名称、客户名称或合同编号', // 渲染的inputplaceholder值
102
113
  remoteSearch: true, // 是否启用远程搜索 默认是false,和远程搜索回调保存同步
103
114
  remoteMethod: function (value, cb) { // 远程搜索的回调函数
104
115
  if (!value) {
@@ -114,7 +125,7 @@
114
125
  })
115
126
  }
116
127
  });
117
-
128
+ }
118
129
 
119
130
  var num = 0;
120
131
  $("#addInput").on("click", function() {
@@ -132,7 +143,12 @@
132
143
 
133
144
  form.on('submit(saveBtn)', function(data) {
134
145
  data.field.num = num;
135
- data.field.business_id = business_select.getValue() || business_id;
146
+ if (gon.business_id_source == "") {
147
+ data.field.business_id = business_select.getValue() || business_id;
148
+ } else {
149
+ data.field.business_id = business_id;
150
+ }
151
+
136
152
  if (data.field.business_id == '') {
137
153
  layer.msg('请选择合同')
138
154
  return false;
@@ -2,7 +2,7 @@
2
2
  <div style="padding:10px">
3
3
  <div class="layui-form layuimini-form" lay-filter="searchform">
4
4
  <div class="layui-form-item">
5
- <label class="layui-form-label required" style="width: 80px !important;">合同名称:</label>
5
+ <label class="layui-form-label required" style="width: 80px !important;">商机名称:</label>
6
6
  <div class="layui-input-inline">
7
7
  <%= hidden_field_tag :id, @money_plan.id %>
8
8
  <div id="business" style="line-height:38px;">
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '1.0.9'
2
+ VERSION = '1.10.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: educode_sales
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - anke1460