educode_sales 1.0.1 → 1.0.3

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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/educode_sales/businesses_controller.rb +3 -0
  3. data/app/controllers/educode_sales/contracts_controller.rb +19 -2
  4. data/app/controllers/educode_sales/follow_ups_controller.rb +13 -12
  5. data/app/controllers/educode_sales/home_controller.rb +14 -0
  6. data/app/controllers/educode_sales/key_person_controller.rb +1 -1
  7. data/app/controllers/educode_sales/money_plan_records_controller.rb +103 -0
  8. data/app/controllers/educode_sales/money_plans_controller.rb +32 -28
  9. data/app/controllers/educode_sales/sales_details_controller.rb +1 -1
  10. data/app/controllers/educode_sales/teachers_controller.rb +7 -2
  11. data/app/models/educode_sales/business.rb +3 -0
  12. data/app/models/educode_sales/key_person.rb +1 -1
  13. data/app/models/educode_sales/money_plan.rb +27 -0
  14. data/app/models/educode_sales/money_plan_claim.rb +7 -0
  15. data/app/models/educode_sales/money_plan_record.rb +7 -0
  16. data/app/views/educode_sales/businesses/edit_plan.html.erb +1 -1
  17. data/app/views/educode_sales/businesses/key_person.json.jbuilder +1 -1
  18. data/app/views/educode_sales/follow_ups/index.json.jbuilder +1 -1
  19. data/app/views/educode_sales/follow_ups/teachers.json.jbuilder +1 -1
  20. data/app/views/educode_sales/home/search_contracts.json.jbuilder +9 -0
  21. data/app/views/educode_sales/home/search_money_plans.json.jbuilder +9 -0
  22. data/app/views/educode_sales/money_plan_records/_index.html.erb +231 -0
  23. data/app/views/educode_sales/money_plan_records/add.html.erb +101 -0
  24. data/app/views/educode_sales/money_plan_records/confirm_plan.html.erb +167 -0
  25. data/app/views/educode_sales/money_plan_records/index.js.erb +1 -0
  26. data/app/views/educode_sales/money_plan_records/index.json.jbuilder +26 -0
  27. data/app/views/educode_sales/money_plans/{index.html.erb → _index.html.erb} +119 -65
  28. data/app/views/educode_sales/money_plans/add.html.erb +147 -0
  29. data/app/views/educode_sales/money_plans/index.json.jbuilder +41 -8
  30. data/app/views/educode_sales/money_plans/list.html.erb +55 -0
  31. data/app/views/educode_sales/sales_details/edit.html.erb +6 -0
  32. data/app/views/educode_sales/teachers/add_keys.html.erb +2 -2
  33. data/app/views/layouts/educode_sales/application.html.erb +1 -1
  34. data/config/routes.rb +16 -1
  35. data/db/migrate/20230527150102_add_category_to_educode_sales_money_plans.rb +7 -0
  36. data/db/migrate/20230528115654_create_educode_sales_money_plan_records.rb +13 -0
  37. data/db/migrate/20230529022020_create_educode_sales_money_plan_claims.rb +12 -0
  38. data/lib/educode_sales/version.rb +1 -1
  39. metadata +18 -3
@@ -1,36 +1,18 @@
1
- <div style="margin: 10px 10px 10px 10px">
2
- <form class="layui-form layui-form-pane" lay-filter="search_teachers">
1
+ <div style="margin: 10px 10px 10px 10px" id="money_plan_list">
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>
9
9
  </div>
10
10
  <div class="layui-inline">
11
- <label class="layui-form-label">单位</label>
11
+ <label class="layui-form-label">客户名称</label>
12
12
  <div class="layui-input-inline">
13
13
  <input type="text" name="school" class="layui-input">
14
14
  </div>
15
15
  </div>
16
- <div class="layui-inline">
17
- <label class="layui-form-label">负责人</label>
18
- <div class="layui-input-inline">
19
- <%= select_tag "staff_id", options_for_select(@staffs, params[:staff_id]), { 'lay-filter': 'staff_id', include_blank: true } %>
20
- </div>
21
- </div>
22
- <div class="layui-inline">
23
- <label class="layui-form-label">状态</label>
24
- <div class="layui-input-inline">
25
- <%= select_tag "clazz", options_for_select(['实际回款','计划回款']), { include_blank: true } %>
26
- </div>
27
- </div>
28
- <div class="layui-inline">
29
- <label class="layui-form-label">回款时间</label>
30
- <div class="layui-input-inline">
31
- <input type="text" class="layui-input" id="date" name="date" placeholder=" - " autocomplete="off">
32
- </div>
33
- </div>
34
16
  <div class="layui-inline">
35
17
  <button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
36
18
  </button>
@@ -40,45 +22,44 @@
40
22
  </div>
41
23
  </form>
42
24
  </div>
43
-
44
- <script type="text/html" id="toolbarDemo">
45
- <div class="layui-btn-container">
46
- <span class="table-label">回款计划</span>
47
- </div>
25
+ <script type="text/html" id="toolbar_money_plan">
26
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" style="margin-left: 20px;" lay-event="addMoney">添加回款计划</button>
48
27
  </script>
49
28
 
50
- <table class="layui-hide" id="place" lay-filter="place"></table>
29
+ <table class="layui-hide" id="money_plan_table" lay-filter="money_plan_table"></table>
30
+
51
31
 
52
- <script type="text/html" id="currentTableBar">
53
- </script>
54
- <script type="text/html" id="business">
55
- <a href="javascript:void(0);" lay-event="business" class="layui-table-link">{{ d.business }}</a>
56
- </script>
57
32
 
58
33
  <script type="text/html" id="school">
59
34
  <a href="<%= base_url%>/colleges/{{d.school_id}}/statistics" class="layui-table-link" target="_blank">{{ d.school }}</a>
60
35
  </script>
61
36
 
37
+ <script type="text/html" id="currentTableBarmoney_plan">
38
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="add">开票申请</a>
39
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">催款提醒</a>
40
+
41
+ </script>
42
+
62
43
  <script>
63
44
  layui.use(['form', 'table', 'miniPage', 'element', 'request'], function () {
64
45
  var $ = layui.jquery,
65
46
  form = layui.form,
66
- table = layui.table,
67
47
  request = layui.request,
68
48
  miniPage = layui.miniPage;
69
49
  laydate = layui.laydate;
70
-
50
+ table = layui.table;
71
51
 
72
52
  laydate.render({
73
53
  elem: '#date',
74
54
  range: true
75
55
  });
76
56
 
57
+
58
+
77
59
  table.render({
78
- elem: '#place',
60
+ elem: '#money_plan_table',
79
61
  url: '/missions/money_plans',
80
- toolbar: '#toolbarDemo',
81
- totalRow: true,
62
+ toolbar: '#toolbar_money_plan',
82
63
  defaultToolbar: ['filter'],
83
64
  initSort: {
84
65
  field: 'date_at' //排序字段,对应 cols 设定的各字段名
@@ -90,42 +71,85 @@
90
71
  field: 'id',
91
72
  width: 80,
92
73
  title:'序号',type: 'numbers',
93
- totalRowText:'本页/总计'
94
74
  },
95
75
  {
96
- field: 'date_at',
76
+ field: 'number',
77
+ width: 120,
78
+ title: '合同编号'
79
+ },
80
+ {
81
+ field: 'business_name',
82
+ width: 150,
83
+ title: '合同名称'
84
+ },
85
+ {
86
+ field: 'school',
87
+ width: 180,
88
+ title: '客户名称'
89
+ },
90
+ {
91
+ field: 'staff_manages',
97
92
  width: 120,
98
- sort: true,
99
- title: '回款时间'
93
+ title: '销售经理'
94
+ },
95
+ {
96
+ field: 'category',
97
+ width: 120,
98
+ title: '回款类别',
100
99
  },
101
100
  {
102
101
  field: 'amount',
103
- width: 200,
102
+ width: 120,
104
103
  sort: true,
105
- totalRow:true,
106
- title: '回款金额',
104
+ title: '金额',
107
105
  },
108
106
  {
109
- field: 'clazz',
107
+ field: 'rate',
110
108
  width: 100,
111
- title: '状态',
109
+ title: '比例',
112
110
  },
113
111
  {
114
- field: 'business',
115
- title: '所属商机',
116
- templet: "#business",
117
-
112
+ field: 'payment_clause',
113
+ width: 200,
114
+ title: '付款条款',
118
115
  },
119
116
  {
120
- field: 'school',
121
- title: '单位',
122
- templet: "#school",
117
+ field: 'date_at',
118
+ width: 150,
119
+ title: '计划回款时间',
120
+ },
121
+ {
122
+ field: 'return_period',
123
+ width: 120,
124
+ title: '回款周期',
125
+ },
126
+ {
127
+ field: 'state',
128
+ width: 100,
129
+ title: '回款状态',
130
+ },
131
+ {
132
+ field: 'stage',
133
+ width: 100,
134
+ title: '阶段',
123
135
  },
124
136
  {
125
- field: 'staff',
126
- width: 90,
127
- title: '负责人',
137
+ field: 'accounts_state',
138
+ width: 150,
139
+ title: '应收款类型',
128
140
  },
141
+ {
142
+ field: 'busireceipt_state',
143
+ width: 120,
144
+ title: '开票状态',
145
+ },
146
+ {
147
+ title: '操作',
148
+ minWidth: 200,
149
+ toolbar: '#currentTableBarmoney_plan',
150
+ align: "center",
151
+ fixed: 'right'
152
+ }
129
153
  ]
130
154
  ],
131
155
  limit: 20,
@@ -134,10 +158,10 @@
134
158
  });
135
159
 
136
160
  var sort = {}, search = {};
137
- table.on('sort(place)', function (obj) {
161
+ table.on('sort(money_plan_table)', function (obj) {
138
162
  sort.field = obj.field;
139
163
  sort.order = obj.type;
140
- table.reload('place', {
164
+ table.reload('money_plan_table', {
141
165
  initSort: obj,
142
166
  where: {
143
167
  sort: sort,
@@ -149,7 +173,7 @@
149
173
  // 监听搜索操作
150
174
  form.on('submit(search_teachers)', function (data) {
151
175
  search = data.field
152
- table.reload('place', {
176
+ table.reload('money_plan_table', {
153
177
  page: {
154
178
  curr: 1
155
179
  },
@@ -172,10 +196,31 @@
172
196
  return false;
173
197
  });
174
198
 
175
- table.on('tool(place)', function (obj) {
199
+ table.on('toolbar(money_plan_table)', function ( obj) {
200
+ console.log(111)
201
+ if (obj.event == 'addMoney') {
202
+ var content = miniPage.getHrefContent('/missions/money_plans/add')
203
+ var openWH = miniPage.getOpenWidthHeight();
204
+ sindex = layer.open({
205
+ title: '添加回款计划',
206
+ type: 1,
207
+ shade: 0.2,
208
+ maxmin: true,
209
+ shadeClose: true,
210
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
211
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
212
+ content: content
213
+ });
214
+ $(window).on("resize", function () {
215
+ layer.full(sindex);
216
+ });
217
+ }
218
+ })
219
+
220
+ table.on('tool(money_plan_table)', function (obj) {
176
221
  var data = obj.data;
177
222
  id = data.id
178
- if (obj.event === 'add_event') { // 监听添加操作
223
+ if (obj.event === 'add_money_plan') { // 监听添加操作
179
224
  var content = miniPage.getHrefContent('/missions/businesses/show_follow_record?follow_up_id=' + data.id);
180
225
  var openWH = miniPage.getOpenWidthHeight();
181
226
  show_index = layer.open({
@@ -216,7 +261,16 @@
216
261
  });
217
262
  </script>
218
263
  <style>
219
- .layui-table-tool-temp{
220
- padding-right: 0px; !important;
221
- }
264
+ .layui-table-tool-temp {
265
+ padding-right: 30px;
266
+ !important;
267
+ }
268
+
269
+ .layui-table-fixed .layui-table-body {
270
+ height: auto!important;
271
+ }
272
+
273
+ .layui-table-fixed.layui-hide {
274
+ display: block!important;
275
+ }
222
276
  </style>
@@ -0,0 +1,147 @@
1
+ <div style="padding:10px">
2
+ <div class="layui-form layuimini-form" lay-filter="searchform">
3
+ <div class="layui-form-item">
4
+ <label class="layui-form-label required" style="width: 80px !important;">合同名称:</label>
5
+ <div class="layui-input-inline">
6
+ <div id="business" style="width:600px;"></div>
7
+ </div>
8
+ </div>
9
+ <div class="layui-form-item">
10
+ <div class="layui-inline">
11
+ <label class="layui-form-label required">回款类别:</label>
12
+ <div class="layui-input-inline">
13
+ <%= select_tag "category[0]", options_for_select(EducodeSales::MoneyPlan.categories.keys), { 'lay-filter': 'category', 'lay-verify': "required", include_blank: true, "lay-search": "" } %>
14
+ </div>
15
+ </div>
16
+ <div class="layui-inline">
17
+ <label class="layui-form-label required" style="width:50px;">金额:</label>
18
+ <div class="layui-input-inline">
19
+ <input type="text" name="amount[0]" value="" class="layui-input" lay-verify="required">
20
+ </div>
21
+ </div>
22
+ <div class="layui-inline">
23
+ <label class="layui-form-label required" style="width: 110px;">计划回款时间:</label>
24
+ <div class="layui-input-inline">
25
+ <input type="text" name="date_at[0]" value="" class="layui-input" lay-verify="required" id="date_at">
26
+ </div>
27
+ </div>
28
+ <div class="layui-inline">
29
+ <label class="layui-form-label">付款条件:</label>
30
+ <div class="layui-input-inline">
31
+ <input type="text" name="payment_clause[0]" value="" class="layui-input">
32
+ </div>
33
+ </div>
34
+ <div class="layui-inline">
35
+ <button class="layui-btn" id="addInput">+</button>
36
+ </div>
37
+ </div>
38
+ <div id="wraper"></div>
39
+ <div class="layui-form-item">
40
+ <div class="layui-input-block">
41
+ <button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">保存</button>
42
+ </div>
43
+ </div>
44
+ </div>
45
+ </div>
46
+ <script type="text/html" id="input_wraper">
47
+ <div class="layui-form-item">
48
+ <div class="layui-inline">
49
+ <label class="layui-form-label required">回款类别:</label>
50
+ <div class="layui-input-inline">
51
+ <%= select_tag "category[{{d.num}}]", options_for_select(EducodeSales::MoneyPlan.categories.keys), { 'lay-filter': 'category', 'lay-verify': "required", include_blank: true, "lay-search": "" } %>
52
+ </div>
53
+ </div>
54
+ <div class="layui-inline">
55
+ <label class="layui-form-label required" style="width:50px;">金额:</label>
56
+ <div class="layui-input-inline">
57
+ <input type="text" name="amount[{{d.num}}]" value="" class="layui-input" lay-verify="required">
58
+ </div>
59
+ </div>
60
+ <div class="layui-inline">
61
+ <label class="layui-form-label required" style="width: 110px;">计划回款时间:</label>
62
+ <div class="layui-input-inline">
63
+ <input type="text" name="date_at[{{d.num}}]" value="" class="layui-input date_{{d.num}}" lay-verify="required">
64
+ </div>
65
+ </div>
66
+ <div class="layui-inline">
67
+ <label class="layui-form-label">付款条件:</label>
68
+ <div class="layui-input-inline">
69
+ <input type="text" name="payment_clause[{{d.num}}]" value="" class="layui-input">
70
+ </div>
71
+ </div>
72
+ </div>
73
+ </script>
74
+
75
+ <script>
76
+
77
+ layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'laydate', 'selectInput'], function() {
78
+ var form = layui.form,
79
+ layer = layui.layer,
80
+ table = layui.table,
81
+ laydate = layui.laydate,
82
+ laytpl = layui.laytpl,
83
+ request = layui.request,
84
+ selectInput = layui.selectInput,
85
+ $ = layui.$;
86
+ form.render();
87
+
88
+ laydate.render({
89
+ elem: '#date_at',
90
+ });
91
+
92
+
93
+ var business_id = "";
94
+ var business_select = selectInput.render({
95
+ elem: '#business',
96
+ name: 'bussiness_name', // 渲染的input的name值
97
+ layFilter: 'test', //同layui form参数lay-filter
98
+ layVerType: 'tips', // 同layui form参数lay-verType
99
+ layReqText: '请填写文本', //同layui form参数lay-ReqText
100
+ hasSelectIcon: false,
101
+ placeholder: '请输入合同名称', // 渲染的inputplaceholder值
102
+ remoteSearch: true, // 是否启用远程搜索 默认是false,和远程搜索回调保存同步
103
+ remoteMethod: function (value, cb) { // 远程搜索的回调函数
104
+ if (!value) {
105
+ business_id = "";
106
+ return cb([]);
107
+ }
108
+ request.get('missions/search_contracts?q=' + value, {}, function (res) {
109
+ if (res.data.length == 0) {
110
+ business_select.emptyValue();
111
+ return cb([])
112
+ }
113
+ return cb(res)
114
+ })
115
+ }
116
+ });
117
+
118
+
119
+ var num = 0;
120
+ $("#addInput").on("click", function() {
121
+ num += 1;
122
+ var getTpl = input_wraper.innerHTML, view = document.getElementById('wraper');
123
+ laytpl(getTpl).render({num: num}, function(html){
124
+ $(view).append(html);
125
+ });
126
+ form.render();
127
+ laydate.render({
128
+ elem: '.date_' + num,
129
+ });
130
+ })
131
+
132
+
133
+ form.on('submit(saveBtn)', function(data) {
134
+ data.field.num = num;
135
+ data.field.business_id = business_select.getValue() || business_id;
136
+ if (data.field.business_id == '') {
137
+ layer.msg('请选择合同')
138
+ return false;
139
+ }
140
+ request.post("missions/money_plans/", data.field, function(res) {
141
+ layer.close(parent.sindex)
142
+ parent.table.reload('money_plan_table')
143
+ })
144
+ return false;
145
+ });
146
+ });
147
+ </script>
@@ -2,20 +2,53 @@ total_amount = 0
2
2
  json.data do
3
3
  json.array! @money_plans do |d|
4
4
  json.id d.id
5
+ json.business_name d.business.name
5
6
  json.date_at (d&.date_at&.to_s(:date) || "")
6
7
  json.amount d.amount
7
- total_amount += d.amount
8
8
  json.clazz d.clazz
9
- json.business d.follow_up.business.name
10
- json.business_id d.follow_up.business.id
11
- json.school School.find(d.follow_up.business.school_id).name
12
- json.school_id School.find(d.follow_up.business.school_id).id
9
+ json.business d.business.name
10
+ json.business_id d.business.id
11
+ json.school d.business.school.name
12
+ json.school_id d.business.school_id
13
13
  json.staff d.staff.user.real_name
14
+ json.number d.business.number
15
+ json.category d.category || ''
16
+ json.payment_clause d.payment_clause
17
+ json.stage d.business&.last_follow_up&.stage&.name || ''
18
+ json.return_period d.return_period
19
+ json.signed_date d.business&.last_follow_up&.signed_date
20
+ json.actual_amount d.business&.last_follow_up&.actual_amount
21
+ json.rate d.business&.last_follow_up&.actual_amount ? (d.amount / d.business.last_follow_up.actual_amount * 100.0).round(2) : ''
22
+ json.staff_manages d.business&.last_follow_up&.assign_follow_ups.present? ? (d.business.last_follow_up.assign_follow_ups.map{ |d| d.staff.user.real_name}.join("、")) : d.business.staff&.user&.real_name
23
+ if d['claim_num'] > 0
24
+ json.state '已回款'
25
+ elsif d['claim_num'] == 0 && d.date_at < Time.now
26
+ json.state '正常'
27
+ else
28
+ json.state '已逾期'
29
+ end
30
+ if d['claim_num'] > 0
31
+ json.accounts_state ''
32
+ else
33
+ case d.business&.last_follow_up&.stage&.name
34
+ when '已中标'
35
+ json.accounts_state '中标应收款'
36
+ when '已签单'
37
+ json.accounts_state '合同应收款'
38
+ when '已部署'
39
+ json.accounts_state '部署应收款'
40
+ when '已验收'
41
+ json.accounts_state '验收应收款'
42
+ when '已回款'
43
+ json.accounts_state '质保金'
44
+ when '已开票'
45
+ json.accounts_state '开票应收款'
46
+ end
47
+
48
+ end
49
+
14
50
  end
15
51
  end
16
52
 
17
- json.totalRow do
18
- json.amount total_amount.round(2).to_s + '/' + @total_amount.round(2).to_s
19
- end
20
53
  json.code 0
21
54
  json.count @money_plans.total_count
@@ -0,0 +1,55 @@
1
+ <%= Gon::Base.render_data %>
2
+ <div class="layui-tab" lay-filter="money_plan_tab">
3
+ <ul class="layui-tab-title">
4
+ <li class="layui-this">回款计划</li>
5
+ <li class="">回款记录</li>
6
+ <li class="">开票记录</li>
7
+ </ul>
8
+ <div class="layui-tab-content">
9
+ <div class="layui-tab-item layui-show">
10
+ <%=render 'index' %>
11
+ </div>
12
+ <div class="layui-tab-item">
13
+ <div id="monley_plan_record_wraper"></div>
14
+ </div>
15
+ <div class="layui-tab-item">
16
+ <div id="invoice_wraper"></div>
17
+ </div>
18
+ </div>
19
+ </div>
20
+
21
+ <script>
22
+ layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate', 'element'], function() {
23
+ var $ = layui.jquery,
24
+ form = layui.form,
25
+ request = layui.request,
26
+ dropdown = layui.dropdown,
27
+ miniPage = layui.miniPage,
28
+ element = layui.element,
29
+ laydate = layui.laydate;
30
+ var laydate = layui.laydate;
31
+
32
+
33
+
34
+ element.render();
35
+ element.on('tab(money_plan_tab)', function(data) {
36
+ if (data.index == 1 && $("#money_plan_record").length == 0) {
37
+ loadPage('/missions/money_plan_records')
38
+ } else if (data.index == 2 && $("#invoice_wraper").length == 0) {
39
+ }
40
+ });
41
+
42
+
43
+ function loadPage(url) {
44
+ var layer_index = layer.load(0, {shade: [0.1, '#fff']});
45
+ Rails.ajax({
46
+ url: url,
47
+ type: 'GET',
48
+ dataType: "script",
49
+ success: function (res) {
50
+ layer.close(layer_index);
51
+ }
52
+ });
53
+ }
54
+ })
55
+ </script>
@@ -45,6 +45,12 @@
45
45
  <input type="text" name="delivery_date" value="<%= @sale_detail.delivery_date %>" class="layui-input" lay-verify="required" id="delivery_date">
46
46
  </div>
47
47
  </div>
48
+ <div class="layui-inline">
49
+ <label class="layui-form-label required">知识产权归属:</label>
50
+ <div class="layui-input-inline">
51
+ <%= select_tag "proprietorship", options_for_select(EducodeSales::SalesDetail.proprietorships.keys, @sale_detail.proprietorship), { 'lay-filter': 'proprietorship', 'lay-verify': "required", include_blank: true, "lay-search": "" } %>
52
+ </div>
53
+ </div>
48
54
  </div>
49
55
  <div class="layui-form-item">
50
56
  <div class="layui-input-block">
@@ -160,7 +160,7 @@
160
160
  });
161
161
  });
162
162
 
163
- var user_input = selectInput.render({
163
+ user_input = selectInput.render({
164
164
  elem: '#teacher',
165
165
  name: 'name', // 渲染的input的name值
166
166
  layFilter: 'teacher',
@@ -201,7 +201,7 @@
201
201
  form.on('submit(add_keys)', function (data) {
202
202
  data.field.name = user_input.getValue()
203
203
  if (data.field.name == "") {
204
- data.field.name = gon.teacher;
204
+ data.field.name = $("#"+user_input._input).val() // gon.teacher;
205
205
  }
206
206
 
207
207
  request.authPost("missions/follow_ups/" + parent.follow_up_id + "/add_keys", data.field, function (res) {
@@ -72,7 +72,7 @@
72
72
  </dd>
73
73
  <% end %>
74
74
  <% if can? :read, EducodeSales::MoneyPlan %>
75
- <dd><a href="/missions/money_plans" class="<%= current?('layui-this', money_plans_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/money_plans.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>回款计划</a>
75
+ <dd><a href="/missions/money_plans/list" class="<%= current?('layui-this', list_money_plans_path) %>"><i style="padding-right: 35px"></i><%= image_tag "educode_sales/money_plans.png",size:"15"%><i style="font-size: 25px; padding-right: 15px"></i>回款管理</a>
76
76
  </dd>
77
77
  <% end %>
78
78
  <% if can? :read, EducodeSales::Customer %>
data/config/routes.rb CHANGED
@@ -19,7 +19,8 @@ EducodeSales::Engine.routes.draw do
19
19
  get :filter, to: "application#filter"
20
20
  get :search_activity, to: "home#search_activity"
21
21
  get :search_customer, to: "home#search_customer"
22
-
22
+ get :search_contracts, to: "home#search_contracts"
23
+ get :search_money_plans, to: "home#search_money_plans"
23
24
 
24
25
  resources :sessions do
25
26
  end
@@ -62,6 +63,20 @@ EducodeSales::Engine.routes.draw do
62
63
  resources :customer_follows do
63
64
  end
64
65
  resources :money_plans do
66
+ collection do
67
+ get :list
68
+ get :add
69
+ end
70
+ end
71
+
72
+ resources :money_plan_records do
73
+ collection do
74
+ get :add
75
+ get :confirm_plan
76
+ end
77
+ member do
78
+ post :confirm
79
+ end
65
80
  end
66
81
 
67
82
  resources :customers do
@@ -0,0 +1,7 @@
1
+ class AddCategoryToEducodeSalesMoneyPlans < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :educode_sales_money_plans, :category, :integer
4
+ add_column :educode_sales_money_plans, :payment_clause, :string
5
+ add_column :educode_sales_money_plans, :business_id, :integer
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ class CreateEducodeSalesMoneyPlanRecords < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :educode_sales_money_plan_records do |t|
4
+ t.references :business
5
+ t.date :date_at
6
+ t.float :amount
7
+ t.string :payer_name
8
+ t.references :staff
9
+
10
+ t.timestamps
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ class CreateEducodeSalesMoneyPlanClaims < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :educode_sales_money_plan_claims do |t|
4
+ t.references :money_plan
5
+ t.references :money_plan_record
6
+ t.references :staff
7
+ t.float :amount
8
+
9
+ t.timestamps
10
+ end
11
+ end
12
+ end
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '1.0.1'
2
+ VERSION = '1.0.3'
3
3
  end