educode_sales 0.9.44 → 0.9.46

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: e3b8eeaf96172e79bdd5ecd470826d1b1509e27aa51650992fea9573124c03a8
4
- data.tar.gz: 448e73b86222666fa76163427cacf66d25dcb3afff0186dac870da2096f701ec
3
+ metadata.gz: 7444b7d61d8ff5a5677b765e4d0580a49a3b425de52ffec51e0f4bce62b5d125
4
+ data.tar.gz: 2752a018874ad957014ceff871ee1ef7cb77d8ea0300c0da9a1112344c579d51
5
5
  SHA512:
6
- metadata.gz: d33d493129ce919f40d3ba640312a2b32b8965e269f013c9fac9cd8972576fd5cae0ce6c3099c691ff5b993263f36f61ab2f2f5298c6051c51df74c4c4d6c5dd
7
- data.tar.gz: ab38c5526bec3b5eae9b4109b705298f8a5b8a2d932845bf70fc1b45b0d29ef9395b3d6865b840703bda9184b754ebc6411efee484d78160ea3b74dda998977b
6
+ metadata.gz: 5a4e87f3e97aa8604d7656e36e044943129e6ee19414bc5a2ba2d6d5d1f8150797d9a0cd0e254693f74535cde2d1f9aa9eb27027cdb2f6dfae548c3bd1276435
7
+ data.tar.gz: 05c6ce1070251dd40fb903ef901517228ebaddaa7690d84ac94f141768e6c065c0c31b7785d0eea71dc9aacba98ff548fb699b6a595a5877056c9b2a308c84d4
@@ -33,6 +33,25 @@ module EducodeSales
33
33
  render_success
34
34
  end
35
35
 
36
+ def majors
37
+ department = Department.find(params[:id])
38
+ @majors = department.department_majors
39
+ end
40
+
41
+ def major
42
+ department = Department.find(params[:id])
43
+ major = department.department_majors.new(name: params[:name])
44
+ if major.save
45
+ render_success
46
+ else
47
+ render_failure major
48
+ end
49
+ end
50
+
51
+ def new_major
52
+ render layout: false
53
+ end
54
+
36
55
  def index
37
56
  authorize! :read, Customer
38
57
  respond_to do |format|
@@ -128,11 +147,35 @@ module EducodeSales
128
147
  @customers = @customers.where(id: school_ids)
129
148
  end
130
149
 
131
- @customers = @customers.order(id: :desc).page(params[:page]).per(params[:limit])
150
+ if params[:page].present?
151
+ @customers = @customers.order(id: :desc).page(params[:page]).per(params[:limit])
152
+ else
153
+ @customers = @customers.order(id: :desc)
154
+ end
132
155
  end
133
156
  end
134
157
  end
135
158
 
159
+ def update_major
160
+ department = Department.find(params[:id])
161
+ major = department.department_majors.find(params[:major_id])
162
+ if major.update(name: params[:name])
163
+ render_success
164
+ else
165
+ render_failure major
166
+ end
167
+ end
168
+
169
+ def delete_major
170
+ department = Department.find(params[:id])
171
+ major = department.department_majors.find(params[:major_id])
172
+ if major.destroy
173
+ render_success
174
+ else
175
+ render_failure major
176
+ end
177
+ end
178
+
136
179
  def give
137
180
  common = Common.find_by(clazz: 'staff_type', name: '销售')
138
181
  @staffs = Staff.joins(:user).where(job_type: common.id).map { |d| [d.user.real_name, d.id] }
@@ -213,6 +256,36 @@ module EducodeSales
213
256
  render layout: false
214
257
  end
215
258
 
259
+ def batch_update_school_tags
260
+ xlsx = Roo::Spreadsheet.open(params[:file])
261
+ ods = xlsx.sheet(0)
262
+ rows = ods.last_row - 1
263
+ i = 0
264
+ school_tag_hash = SchoolTag.where(for_missions: true).pluck(:name, :id).to_h
265
+ rows.times do |r| #行数
266
+ i += 1
267
+ next unless ods.row(r+1)[0]
268
+ school = School.find_by(name: ods.row(r+1)[0].to_s.strip)
269
+ school_list = EducodeSales::CustomerAdd::SCHOOL_LIST.invert
270
+ if school
271
+ property_names = ods.row(r+1)[2].to_s.strip
272
+ tags = []
273
+ if property_names
274
+ property_names.gsub("、", " ").gsub(",", " ").split(" ").each do |tag|
275
+ if school_tag_hash[tag]
276
+ tags << SchoolTagMiddle.find_or_initialize_by(school_id: school.id, school_tag_id: school_tag_hash[tag])
277
+ end
278
+ end
279
+ end
280
+ school.school_tag_middles = tags
281
+ end
282
+ end
283
+
284
+ SchoolTagMiddle.where(school_id: nil).delete_all
285
+
286
+ render json: { succcess: true}
287
+ end
288
+
216
289
  def update
217
290
  @school = School.find(params[:id])
218
291
  ActiveRecord::Base.transaction do
@@ -236,20 +309,11 @@ module EducodeSales
236
309
  #保存学校标签
237
310
 
238
311
  keys = %w[regular_college junior_college secondary_school military_school other mid_school ele_school enterprise]
239
- names = {
240
- "regular_college" => "本科院校",
241
- "junior_college" => "高职院校",
242
- "secondary_school" => "中职院校",
243
- "military_school" => "军事院校",
244
- "other" => "其他",
245
- "mid_school" => "中学",
246
- "ele_school" => "小学",
247
- "enterprise" => "企业"
248
- }
312
+ names = EducodeSales::CustomerAdd::SCHOOL_LIST
249
313
  property.attributes.each do |key, value|
250
314
  next unless key.in?(keys)
251
315
  next unless value.to_s == "true"
252
- school_tag = SchoolTag.find_by_name(names[key])
316
+ school_tag = SchoolTag.find_by(name: names[key], for_missions: true)
253
317
  if school_tag.present?
254
318
  SchoolTagMiddle.create(school_id: @school.id, school_tag_id: school_tag.id)
255
319
  end
@@ -1,4 +1,15 @@
1
1
  module EducodeSales
2
2
  class CustomerAdd < ApplicationRecord
3
+
4
+ SCHOOL_LIST = {
5
+ "regular_college" => "本科院校",
6
+ "junior_college" => "高职院校",
7
+ "secondary_school" => "中职院校",
8
+ "military_school" => "军事院校",
9
+ "other" => "其他",
10
+ "mid_school" => "中学",
11
+ "ele_school" => "小学",
12
+ "enterprise" => "企业"
13
+ }
3
14
  end
4
15
  end
@@ -16,7 +16,24 @@
16
16
  </div>
17
17
  </div>
18
18
  </form>
19
+ <div>
20
+ <table class="layui-hide" id="major_table" lay-filter="major_table"></table>
21
+ </div>
19
22
  </div>
23
+ <script type="text/html" id="add_major">
24
+ <div class="layui-btn-container">
25
+ <span class="table-label">专业列表</span>
26
+ <% if can? :create_department, EducodeSales::Customer %>
27
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add">添加专业</button>
28
+ <% end %>
29
+ </div>
30
+ </script>
31
+ <script type="text/html" id="tab_major">
32
+ <% if can? :update_department, EducodeSales::Customer %>
33
+ <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
34
+ <a class="layui-btn layui-btn-normal layui-btn-xs layui-btn-danger data-count-delete" lay-event="del">删除</a>
35
+ <% end %>
36
+ </script>
20
37
 
21
38
  <script>
22
39
 
@@ -50,5 +67,106 @@
50
67
  })
51
68
  return false;
52
69
  });
70
+
71
+ table.render({
72
+ elem: '#major_table',
73
+ url: '/missions/customers/majors?id=' + parent.department_id ,
74
+ toolbar: '#add_major',
75
+ defaultToolbar: [],
76
+ cols: [
77
+ [
78
+ {
79
+ field: 'id',
80
+ width: 100,
81
+ title:'序号',type: 'numbers',
82
+ },
83
+ {
84
+ field: 'name',
85
+ title: '专业',
86
+ },
87
+ {
88
+ title: '操作',
89
+ width: 190,
90
+ toolbar: '#tab_major',
91
+ align: "center",
92
+ fixed: 'right'
93
+ }
94
+ ]
95
+ ],
96
+ });
97
+
98
+ table.on('toolbar(major_table)', function (obj) {
99
+ if (obj.event === 'add') {
100
+ department_id = parent.department_id;
101
+ var content = miniPage.getHrefContent('/missions/customers/new_major?id=' + parent.department_id);
102
+ var openWH = miniPage.getOpenWidthHeight();
103
+ new_major_index = layer.open({
104
+ title: '添加专业',
105
+ type: 1,
106
+ shade: 0.2,
107
+ maxmin: true,
108
+ shadeClose: true,
109
+ area: [openWH[0] + 'px', openWH[1] + 'px'],
110
+ offset: [openWH[2] + 'px', openWH[3] + 'px'],
111
+ content: content,
112
+ success: function (layero, index) {
113
+ form.render('select');
114
+ }
115
+ });
116
+ $(window).on("resize", function () {
117
+ layer.full(index);
118
+ });
119
+ }
53
120
  });
121
+ table.on('tool(major_table)', function (obj) {
122
+ if (obj.event == 'edit') {
123
+ var index = layer.open({
124
+ title: '修改专业名称',
125
+ closeBtn: 0,
126
+ type: 1,
127
+ area: '400px;',
128
+ id: 'LAY_layuipro',
129
+ content: '<div class="layui-form" lay-filter="edit_data" style="padding: 20px;"><input autocomplete="off" type="text" name="name" lay-verify="required" class="layui-input" value="' + obj.data.name +'"/></div>' ,
130
+ btn: ['保存', '取消'],
131
+ btn1: function(index, l) {
132
+ if (l.find("input").val().trim() == '') {
133
+ layer.msg('名称不能为空')
134
+ return false;
135
+ } else {
136
+ request.authPut("missions/customers/" + parent.department_id + "/update_major", {name: l.find("input").val().trim(), major_id: obj.data.id}, function(res) {
137
+ if (res.success == false) {
138
+ layer.alert(res.msg);
139
+ } else {
140
+ table.reload('major_table');
141
+ parent.table.reload('sale_plan_follow_table');
142
+ layer.close(index);
143
+ }
144
+ })
145
+ }
146
+
147
+ return false
148
+ },
149
+ btn2: function(index, l) {
150
+ layer.close(index)
151
+ }
152
+ });
153
+ } else if (obj.event == 'del') {
154
+ var index = layer.open({
155
+ content: '确定删除该专业 ' + obj.data.name + ' 吗',
156
+ yes: function(index, layero){
157
+ request.authDelete("missions/customers/" + parent.department_id + "/delete_major?major_id=" + obj.data.id, {}, function(res) {
158
+ if (res.success == false) {
159
+ layer.alert(res.msg)
160
+ } else {
161
+ table.reload('major_table');
162
+ parent.table.reload('sale_plan_follow_table');
163
+ layer.close(index);
164
+ }
165
+ })
166
+ }
167
+ });
168
+ }
169
+ })
170
+
171
+ });
54
172
  </script>
@@ -45,6 +45,12 @@
45
45
  <script type="text/html" id="toolbarDemo">
46
46
  <div class="layui-btn-container">
47
47
  <span class="table-label">客户列表</span>
48
+ <% if can? :export, EducodeSales::Customer %>
49
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="export">导出</button>
50
+ <% end %>
51
+ <% if can? :modify_school_tag, EducodeSales::Customer %>
52
+ <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" id="modify_customer">批量修改客户类型</button>
53
+ <% end %>
48
54
  <% if can? :create, EducodeSales::Customer %>
49
55
  <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" lay-event="add">添加客户</button>
50
56
  <% end %>
@@ -83,10 +89,11 @@
83
89
 
84
90
 
85
91
  <script>
86
- layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate'], function () {
92
+ layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate', 'upload'], function () {
87
93
  var $ = layui.jquery,
88
94
  form = layui.form,
89
95
  request = layui.request,
96
+ upload = layui.upload,
90
97
  dropdown = layui.dropdown,
91
98
  miniPage = layui.miniPage,
92
99
  laydate = layui.laydate;
@@ -114,12 +121,13 @@
114
121
  });
115
122
 
116
123
  table = layui.table;
117
- table.render({
124
+ var customer_table = table.render({
118
125
  elem: '#customers_table',
119
126
  url: '/missions/customers',
120
127
  where: {q: form.val('search_teachers')},
121
128
  toolbar: '#toolbarDemo',
122
129
  // totalRow:true,
130
+ title: '客户列表',
123
131
  defaultToolbar: ['filter'],
124
132
  cols: [
125
133
  [
@@ -186,6 +194,11 @@
186
194
  limit: 20,
187
195
  limits: [10, 15, 20, 30, 40, 50, 60, 70, 80, 90],
188
196
  page: true,
197
+ done: function() {
198
+ if ($('#modify_customer').length > 0) {
199
+ uploadCustomer();
200
+ }
201
+ }
189
202
  });
190
203
 
191
204
  //监听表格复选框选择
@@ -349,6 +362,22 @@
349
362
  $(window).on("resize", function () {
350
363
  layer.full(index);
351
364
  });
365
+ } else if (obj.event == 'export') {
366
+ layer.load(0, {});
367
+ var data = form.val("search_teachers");
368
+ var property = [];
369
+ property_list.getValue().forEach(function (d) {
370
+ property.push(d.value);
371
+ })
372
+ data.property = property.toString();
373
+ request.authGet("/missions/customers?=" + $.param({q:data}), {
374
+ }, function (res) {
375
+ data = res.data
376
+ table.exportFile(customer_table.config.id, data, 'xls');
377
+ layer.closeAll('loading');
378
+ })
379
+ } else if (obj.event == 'modify_customer') {
380
+
352
381
  }
353
382
  });
354
383
 
@@ -503,11 +532,53 @@
503
532
  }
504
533
  });
505
534
 
535
+ function uploadCustomer() {
536
+ upload.render({
537
+ elem: '#modify_customer'
538
+ ,url: '/missions/customers/batch_update_school_tags'
539
+ ,accept: 'file' //普通文件
540
+ ,acceptMime: 'application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel,application/vnd.ms-excel'
541
+ ,headers: {
542
+ 'X-CSRF-Token': $('meta[name=csrf-token]').attr('content')
543
+ }
544
+ ,before: function(obj){
545
+ layer.load();
546
+ }
547
+ ,done: function(res){
548
+ layer.msg('导入成功');
549
+ table.reload('customers_table');
550
+ layer.closeAll('loading'); //关闭loading
551
+ }
552
+ ,error: function(index, upload){
553
+ table.reload('file');
554
+ layer.closeAll('loading'); //关闭loading
555
+ layer.alert('导入失败,请检查文件格式')
556
+ layer.close(parent.import_index)
557
+ }
558
+ });
559
+ }
560
+ if ($('#modify_customer').length > 0) {
561
+ var uploadTip;
562
+ $(document).on('mouseenter', '#modify_customer', function() {
563
+ uploadTip = layer.tips("<p style='color:#000;'>" + "导入Excel文件可批量修改客户性质。表格格式:客户名称 区域 性质。格式按导出的客户列表格式导入" + "</p>",
564
+ this,
565
+ {
566
+ tips:[1,'#f2f2f2'],
567
+ time:0,
568
+ area: 'auto',
569
+ maxWidth:500
570
+ });
571
+ })
572
+
573
+ $(document).on('mouseleave', '#modify_customer', function() {
574
+ layer.close(uploadTip);
575
+ })
576
+ }
577
+
506
578
  });
507
579
  </script>
508
580
  <style>
509
581
  .layui-table-tool-temp {
510
- padding-right: 30px;
511
- !important;
582
+ padding-right: 30px; !important;
512
583
  }
513
584
  </style>
@@ -37,4 +37,6 @@ json.data do
37
37
  end
38
38
 
39
39
  json.code 0
40
- json.count @customers.total_count
40
+ if params[:page].present?
41
+ json.count @customers.total_count
42
+ end
@@ -0,0 +1,10 @@
1
+ json.data do
2
+ i = 0
3
+ json.array! @majors do |d|
4
+ json.num i + 1
5
+ json.id d.id
6
+ json.name d.name
7
+ end
8
+ end
9
+ json.code 0
10
+ json.count @majors.size
@@ -0,0 +1,40 @@
1
+ <div class="layuimini-main">
2
+ <form class="layui-form layuimini-form">
3
+ <div class="layui-form-item" style="padding: 25px">
4
+ <div class="layui-form-item" style="padding: 25px">
5
+ <div class="layui-inline">
6
+ <label class="layui-form-label required">专业名称</label>
7
+ <div class="layui-input-block" style="width: 300px;">
8
+ <input type="text" name="name" required lay-verify="required" autocomplete="off" placeholder="请输入" class="layui-input" >
9
+ </div>
10
+ </div>
11
+ </div>
12
+ <div class="layui-form-item" style="padding-left: 130px">
13
+ <button type="submit" class="layui-btn layui-btn-normal" lay-submit lay-filter="add_major_btn">提交</button>
14
+ </div>
15
+ </div>
16
+ </form>
17
+ </div>
18
+
19
+ <script>
20
+ layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'selectInput', 'transfer'], function () {
21
+ var form = layui.form,
22
+ request = layui.request,
23
+ $ = layui.$;
24
+
25
+ form.on('submit(add_major_btn)', function (data) {
26
+ data.field.school_id = parent.school_id
27
+ request.authPost("missions/customers/"+ parent.department_id +"/major", data.field, function (res) {
28
+ if (res.success === false) {
29
+ layer.alert(res.msg)
30
+ } else {
31
+ layer.close(parent.new_department_index); //关闭所有层
32
+ parent.table.reload('major_table');
33
+ parent.table.reload('sale_plan_follow_table');
34
+ layer.close(parent.new_major_index);
35
+ }
36
+ })
37
+ return false;
38
+ });
39
+ });
40
+ </script>
@@ -4,6 +4,7 @@ json.data do
4
4
  # json.created_at d.created_at.to_s
5
5
  # json.staff d.staff.user.real_name
6
6
  json.department d.name
7
+ json.department_major d.department_majors.pluck(:name).join("、")
7
8
  # json.content d.content
8
9
  # json.is_latest d.id == @latest.id
9
10
  end
@@ -51,6 +51,11 @@
51
51
  {
52
52
  field: 'department',
53
53
  title: '学院/部门',
54
+ width: 200,
55
+ },
56
+ {
57
+ field: 'department_major',
58
+ title: '专业',
54
59
  },
55
60
  {
56
61
  title: '操作',
@@ -131,7 +136,7 @@
131
136
  layer.full(index);
132
137
  });
133
138
  } else if (obj.event === 'edit') {
134
- department_id = obj.data.id
139
+ department_id = obj.data.id;
135
140
  content = miniPage.getHrefContent('/missions/customers/edit_department?id='+ obj.data.id);
136
141
  openWH = miniPage.getOpenWidthHeight();
137
142
  edit_index1 = layer.open({
@@ -13,7 +13,7 @@
13
13
  <div class="layui-input-block">
14
14
  <%= select_tag "role_id",
15
15
  options_for_select(EducodeSales::Role.pluck(:name, :id),
16
- @staff.role_id), { 'lay-filter': 'role_id' } %>
16
+ @staff.role_id), { 'lay-filter': 'role_id', include_blank: true } %>
17
17
  </div>
18
18
  </div>
19
19
  <div class="layui-form-item">
@@ -21,7 +21,7 @@
21
21
  <div class="layui-input-block">
22
22
  <%= select_tag "job_type",
23
23
  options_for_select(@staff_types,
24
- @staff.job_type), { 'lay-filter': 'job_type' } %>
24
+ @staff.job_type), { 'lay-filter': 'job_type', include_blank: true } %>
25
25
  </div>
26
26
  </div>
27
27
  <div class="layui-form-item">
data/config/routes.rb CHANGED
@@ -37,6 +37,9 @@ EducodeSales::Engine.routes.draw do
37
37
  get :new_department
38
38
  get :edit_department
39
39
  get :give
40
+ post :batch_update_school_tags
41
+ get :majors
42
+ get :new_major
40
43
  end
41
44
 
42
45
  member do
@@ -44,6 +47,9 @@ EducodeSales::Engine.routes.draw do
44
47
  put :update_follow_up
45
48
  post :create_department
46
49
  put :update_department
50
+ post :major
51
+ put :update_major
52
+ delete :delete_major
47
53
  end
48
54
  end
49
55
 
@@ -49,6 +49,9 @@ class CreateEducodeSalesRolePermissions < ActiveRecord::Migration[5.2]
49
49
  EducodeSales::Permission.create(name: '编辑跟进记录', subject: 'Customer', action: 'update_follow', clazz: 'customer')
50
50
  EducodeSales::Permission.create(name: '删除跟进记录', subject: 'Customer', action: 'destroy_follow', clazz: 'customer')
51
51
 
52
+ EducodeSales::Permission.create(name: '导出', subject: 'Customer', action: 'export', clazz: 'customer')
53
+ EducodeSales::Permission.create(name: '批量导入修改客户类型', subject: 'Customer', action: 'modify_school_tag', clazz: 'customer')
54
+
52
55
 
53
56
  EducodeSales::Permission.create(name: '查看数据', subject: 'SaleTrend', action: 'trends', clazz: 'market')
54
57
  EducodeSales::Permission.create(name: '编辑目标', subject: 'SaleTrend', action: 'sale_trends', clazz: 'market')
@@ -0,0 +1,5 @@
1
+ class AddMobileToTeachers < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :educode_sales_teachers, :mobile, :string
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module EducodeSales
2
- VERSION = '0.9.44'
2
+ VERSION = '0.9.46'
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.44
4
+ version: 0.9.46
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-02-11 00:00:00.000000000 Z
11
+ date: 2023-02-17 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
@@ -275,9 +274,11 @@ files:
275
274
  - app/views/educode_sales/customers/give.html.erb
276
275
  - app/views/educode_sales/customers/index.html.erb
277
276
  - app/views/educode_sales/customers/index.json.jbuilder
277
+ - app/views/educode_sales/customers/majors.json.jbuilder
278
278
  - app/views/educode_sales/customers/new.html.erb
279
279
  - app/views/educode_sales/customers/new_department.html.erb
280
280
  - app/views/educode_sales/customers/new_follow_record.html.erb
281
+ - app/views/educode_sales/customers/new_major.html.erb
281
282
  - app/views/educode_sales/customers/show_department.json.jbuilder
282
283
  - app/views/educode_sales/customers/show_follow.html.erb
283
284
  - app/views/educode_sales/customers/show_follow.json.jbuilder
@@ -494,6 +495,7 @@ files:
494
495
  - db/migrate/20230117144025_create_educode_sales_business_clazz_changes.rb
495
496
  - db/migrate/20230206080303_create_educode_sales_staff_school_tags.rb
496
497
  - db/migrate/20230209102302_create_educode_sales_staff_permissions.rb
498
+ - db/migrate/20230215141612_add_mobile_to_teachers.rb
497
499
  - lib/educode_sales.rb
498
500
  - lib/educode_sales/engine.rb
499
501
  - lib/educode_sales/version.rb
@@ -502,7 +504,7 @@ homepage: https://www.educoder.net
502
504
  licenses:
503
505
  - MIT
504
506
  metadata: {}
505
- post_install_message:
507
+ post_install_message:
506
508
  rdoc_options: []
507
509
  require_paths:
508
510
  - lib
@@ -517,8 +519,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
517
519
  - !ruby/object:Gem::Version
518
520
  version: '0'
519
521
  requirements: []
520
- rubygems_version: 3.0.9
521
- signing_key:
522
+ rubygems_version: 3.0.0
523
+ signing_key:
522
524
  specification_version: 4
523
525
  summary: Summary of EducodeSales.
524
526
  test_files: []