educode_sales 0.4.9 → 0.5.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 (73) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/educode_sales//345/233/236/346/224/266/347/253/231.png +0 -0
  3. data/app/controllers/educode_sales/businesses_controller.rb +27 -13
  4. data/app/controllers/educode_sales/follow_ups_controller.rb +3 -2
  5. data/app/controllers/educode_sales/operation_plans_controller.rb +23 -2
  6. data/app/controllers/educode_sales/operation_reports_controller.rb +33 -3
  7. data/app/controllers/educode_sales/plans_controller.rb +28 -7
  8. data/app/controllers/educode_sales/recycles_controller.rb +95 -0
  9. data/app/controllers/educode_sales/roles_controller.rb +5 -0
  10. data/app/controllers/educode_sales/sale_reports_controller.rb +34 -4
  11. data/app/controllers/educode_sales/sale_trends_controller.rb +171 -0
  12. data/app/controllers/educode_sales/sales_controller.rb +4 -0
  13. data/app/controllers/educode_sales/staffs_controller.rb +4 -4
  14. data/app/controllers/educode_sales/upload_files_controller.rb +40 -27
  15. data/app/models/concerns/deletable.rb +8 -0
  16. data/app/models/educode_sales/application_record.rb +2 -0
  17. data/app/models/educode_sales/business.rb +15 -2
  18. data/app/models/educode_sales/common.rb +2 -1
  19. data/app/models/educode_sales/follow_up.rb +4 -2
  20. data/app/models/educode_sales/recycle.rb +5 -0
  21. data/app/models/educode_sales/sale_plan.rb +3 -0
  22. data/app/models/educode_sales/sale_report.rb +2 -0
  23. data/app/views/educode_sales/businesses/edit_plan.html.erb +2 -2
  24. data/app/views/educode_sales/businesses/file.html.erb +30 -15
  25. data/app/views/educode_sales/businesses/index.html.erb +20 -7
  26. data/app/views/educode_sales/businesses/new_follow_record.html.erb +5 -1
  27. data/app/views/educode_sales/businesses/show_follow.html.erb +8 -2
  28. data/app/views/educode_sales/businesses/show_follow.json.jbuilder +1 -0
  29. data/app/views/educode_sales/businesses/show_follow_record.html.erb +1 -1
  30. data/app/views/educode_sales/businesses/time_line.html.erb +5 -1
  31. data/app/views/educode_sales/businesses/upload_file.html.erb +4 -4
  32. data/app/views/educode_sales/operation_plans/index.html.erb +6 -1
  33. data/app/views/educode_sales/operation_plans/new_week.html.erb +1 -1
  34. data/app/views/educode_sales/operation_reports/audit.html.erb +14 -6
  35. data/app/views/educode_sales/operation_reports/show.html.erb +13 -10
  36. data/app/views/educode_sales/places/index.html.erb +6 -1
  37. data/app/views/educode_sales/places/index.json.jbuilder +11 -1
  38. data/app/views/educode_sales/plans/index.html.erb +6 -1
  39. data/app/views/educode_sales/plans/new_monthly.html.erb +6 -6
  40. data/app/views/educode_sales/plans/new_week.html.erb +1 -1
  41. data/app/views/educode_sales/plans/new_weekly.html.erb +7 -7
  42. data/app/views/educode_sales/recycles/_business.html.erb +122 -0
  43. data/app/views/educode_sales/recycles/_monthPlan.html.erb +123 -0
  44. data/app/views/educode_sales/recycles/_monthly.html.erb +121 -0
  45. data/app/views/educode_sales/recycles/_weekPlan.html.erb +128 -0
  46. data/app/views/educode_sales/recycles/_weekly.html.erb +122 -0
  47. data/app/views/educode_sales/recycles/business.json.jbuilder +16 -0
  48. data/app/views/educode_sales/recycles/index.html.erb +58 -0
  49. data/app/views/educode_sales/recycles/monthPlan.json.jbuilder +16 -0
  50. data/app/views/educode_sales/recycles/monthly.json.jbuilder +15 -0
  51. data/app/views/educode_sales/recycles/weekPlan.json.jbuilder +16 -0
  52. data/app/views/educode_sales/recycles/weekly.json.jbuilder +15 -0
  53. data/app/views/educode_sales/roles/index.html.erb +19 -1
  54. data/app/views/educode_sales/roles/rename.html.erb +50 -0
  55. data/app/views/educode_sales/sale_reports/audit.html.erb +17 -6
  56. data/app/views/educode_sales/sale_reports/show.html.erb +11 -8
  57. data/app/views/educode_sales/sale_trends/trends.html.erb +252 -8
  58. data/app/views/educode_sales/sale_trends/trends.json.jbuilder +14 -0
  59. data/app/views/educode_sales/sales/index.html.erb +75 -9
  60. data/app/views/educode_sales/sales/index.json.jbuilder +35 -1
  61. data/app/views/educode_sales/sales/operations.json.jbuilder +11 -1
  62. data/app/views/educode_sales/staffs/index.html.erb +6 -1
  63. data/app/views/educode_sales/staffs/index.json.jbuilder +11 -1
  64. data/app/views/educode_sales/teachers/add_keys.html.erb +3 -3
  65. data/app/views/educode_sales/teachers/index.html.erb +7 -2
  66. data/app/views/educode_sales/teachers/new.html.erb +1 -0
  67. data/app/views/educode_sales/upload_files/index.json.jbuilder +2 -2
  68. data/app/views/layouts/educode_sales/application.html.erb +3 -0
  69. data/config/routes.rb +18 -0
  70. data/db/migrate/20210902064109_create_educode_sales_role_permissions.rb +6 -0
  71. data/db/migrate/20211109015617_create_educode_sales_recycles.rb +25 -0
  72. data/lib/educode_sales/version.rb +1 -1
  73. metadata +20 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e75cbf87f4530e2665dd16d6fa56d82a14a0479ba0ce6f9f2cb39f5282ddb034
4
- data.tar.gz: b4ab6a572903f23688eeb0441f66776f43ca4cabc70467cb013fff2f1c922473
3
+ metadata.gz: 87e480da43efa545f556407cb3aced122684a09ebba821cc1d5ba1b33013758c
4
+ data.tar.gz: f8a1d0d849c2f45fac61856394ebd61fa19c6993349393cf30c73061071e200b
5
5
  SHA512:
6
- metadata.gz: 05cac4d3624e3c08a12957400aef7a091ef51b7edd288e767a6f31f8f8bdfdab6af587335abac527005ed657d115d8a938ef6a8e62f0c6c33514041857335309
7
- data.tar.gz: d23d1bd4ce8bcb827e5423e01351eb5c661b95cb64f4c61076cf974752c360b35587c74263e69f6a6392255d08686edc77a4e5813032534f00663afe8724ca2b
6
+ metadata.gz: 2b9b85218c9ab2ba92752aaac23ed8329bd130c48f27c00488d4e8a484cdb8791b29b9be8bb9ccafa6828ba9bc4500c4365718d5c080cfd789960c5125c2da33
7
+ data.tar.gz: 8ae91d1a4d9337886c87067b69728cd93831e8d7a85bf524c6acef57915561726a574d6a3c5a1c2eb4cead28ea6aea1450dd94949920d0113856b7390f418445
@@ -4,7 +4,7 @@ module EducodeSales
4
4
  class BusinessesController < ApplicationController
5
5
 
6
6
  def file
7
- @root = Rails.root
7
+ gon.folder = edu_setting('attachment_folder') + '/'
8
8
  render layout: false
9
9
  end
10
10
  def upload_file
@@ -66,6 +66,10 @@ module EducodeSales
66
66
  end
67
67
  end
68
68
 
69
+ if params[:q].present? && params[:q][:name].present?
70
+ @year = params[:q][:name].split("-")[1].present? ? params[:q][:name].split("-")[1] : ''
71
+ end
72
+
69
73
  if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-现有商机)"
70
74
  a_id = Common.find_by(extras: EducodeSales::Common::ATYPE)&.id
71
75
  b_id = Common.find_by(extras: EducodeSales::Common::BTYPE)&.id
@@ -77,23 +81,28 @@ module EducodeSales
77
81
  ").where("educode_sales_follow_ups.clazz_id in (?)",ids)
78
82
  end
79
83
 
80
- if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-已中标商机)"
84
+ if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-" + @year + "-已中标商机)"
85
+ stage_ids = Common.where(clazz: '商机阶段', name: ['已中标','已签单','已验收','回款中', '服务中','已结束']).pluck(:id)
81
86
  @businesses = @businesses.joins("
82
87
  JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
83
- ").where("educode_sales_follow_ups.bidded_date > ? AND educode_sales_follow_ups.bidded_date < ?", "#{Time.now.year}-01-01", "#{Time.now.year}-12-31")
88
+ ").where("educode_sales_follow_ups.bidded_date > ? AND educode_sales_follow_ups.bidded_date < ? AND educode_sales_follow_ups.stage_id IN (?)", "#{@year}-01-01", "#{@year}-12-31", stage_ids)
84
89
  end
85
90
 
86
- if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-已签单商机)"
91
+ if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-" + @year + "-已签单商机)"
92
+ s_stage_ids = Common.where(clazz: '商机阶段', name: ['已签单','已验收','回款中', '服务中','已结束']).pluck(:id)
87
93
  @businesses = @businesses.joins("
88
94
  JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
89
- ").where("educode_sales_follow_ups.signed_date > ? AND educode_sales_follow_ups.signed_date < ?", "#{Time.now.year}-01-01", "#{Time.now.year}-12-31")
95
+ ").where("educode_sales_follow_ups.signed_date > ? AND educode_sales_follow_ups.signed_date < ? AND educode_sales_follow_ups.stage_id IN (?)", "#{@year}-01-01", "#{@year}-12-31", s_stage_ids)
90
96
  end
91
97
 
92
- if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-已回款商机)"
98
+ if params[:q].present? && params[:q][:name].present? && params[:q][:name] == "(销售态势-" + @year + "-已回款商机)"
93
99
  x_id = Common.find_by(extras: EducodeSales::Common::XTYPE)&.id
94
- @businesses = @businesses.where("educode_sales_businesses.created_at > ? AND educode_sales_businesses.created_at < ? AND educode_sales_businesses.return_money > 0", "#{Time.now.year}-01-01", "#{Time.now.year}-12-31").joins("
95
- JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
96
- ").where.not("educode_sales_follow_ups.clazz_id = ?",x_id)
100
+ # @businesses = @businesses.where("educode_sales_businesses.created_at > ? AND educode_sales_businesses.created_at < ? AND educode_sales_businesses.return_money > 0", "#{@year}-01-01", "#{@year}-12-31").joins("
101
+ # JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
102
+ # ").where.not("educode_sales_follow_ups.clazz_id = ?",x_id)
103
+ year_time = "#{@year}-01-01 00:00:00"
104
+ year_over_time = "#{@year}-12-31 23:59:59"
105
+ @businesses = @businesses.joins(follow_ups: :money_plans).where("educode_sales_follow_ups.clazz_id != ?", x_id).where.not("educode_sales_money_plans.clazz!= ?", 1).where("educode_sales_money_plans.date_at >= ? AND educode_sales_money_plans.date_at <= ? ", year_time, year_over_time).distinct
97
106
  end
98
107
 
99
108
  if params[:q].present? && params[:q][:all].present?
@@ -107,7 +116,7 @@ module EducodeSales
107
116
  end
108
117
 
109
118
  @businesses = @businesses
110
- if params[:q].present? && params[:q][:name].present? && params[:q][:name] != "(销售态势-已中标商机)" && params[:q][:name] != "(销售态势-已签单商机)" && params[:q][:name] != "(销售态势-已回款商机)" && params[:q][:name] != "(销售态势-现有商机)"
119
+ if params[:q].present? && params[:q][:name].present? && params[:q][:name] != "(销售态势-" + @year + "-已中标商机)" && params[:q][:name] != "(销售态势-" + @year + "-已签单商机)" && params[:q][:name] != "(销售态势-" + @year + "-已回款商机)" && params[:q][:name] != "(销售态势-现有商机)"
111
120
  @businesses = @businesses.where("educode_sales_businesses.name like ?", "%#{params[:q][:name]}%")
112
121
  end
113
122
  if params[:q].present? && params[:q][:department].present?
@@ -115,10 +124,10 @@ module EducodeSales
115
124
  @businesses = @businesses.joins(:department).where("departments.id in (?)", departments_ids)
116
125
  end
117
126
  if params[:q].present? && params[:q][:staff_id].present?
118
- part_a_ids = @businesses.where("educode_sales_businesses.last_follow_up_id is null AND staff_id = ?",params[:q][:staff_id]).ids
127
+ part_a_ids = @businesses.where("educode_sales_businesses.last_follow_up_id is null AND educode_sales_businesses.staff_id = ?",params[:q][:staff_id]).ids
119
128
  part_b_ids = @businesses.where("educode_sales_businesses.last_follow_up_id is not null").joins("
120
129
  JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
121
- ").where("educode_sales_follow_ups.staff_id = ?", params[:q][:staff_id]).pluck(:business_id)
130
+ ").where("educode_sales_follow_ups.staff_id = ?", params[:q][:staff_id]).ids
122
131
  business_ids = part_a_ids + part_b_ids
123
132
  @businesses = EducodeSales::Business.where(id:business_ids)
124
133
  end
@@ -165,6 +174,8 @@ module EducodeSales
165
174
  educode_sales_businesses.*,
166
175
  last_follow.invitation_at,
167
176
  last_follow.reception_at,
177
+ last_follow.bidded_date,
178
+ last_follow.signed_date,
168
179
  last_follow.total_amount").joins("
169
180
  LEFT JOIN educode_sales_follow_ups AS last_follow ON educode_sales_businesses.last_follow_up_id = last_follow.id
170
181
  ").page(params[:page]).per(params[:limit])
@@ -214,7 +225,7 @@ module EducodeSales
214
225
 
215
226
  def destroy
216
227
  business = Business.find(params[:id])
217
- business.destroy
228
+ business.soft_destroy(@current_admin.id)
218
229
  render_success
219
230
  rescue ActiveRecord::DeleteRestrictionError => e
220
231
  render_failure '该商机已其它关联数据产生,暂不能删除'
@@ -308,5 +319,8 @@ module EducodeSales
308
319
  params.permit(:clazz_id, :stage_id, :invitation_at, :reception_at, :total_amount, :actual_amount, :divide_amount, :description, :advise, :place_id)
309
320
  end
310
321
 
322
+ def edu_setting name
323
+ EduSetting.get(name)
324
+ end
311
325
  end
312
326
  end
@@ -36,7 +36,7 @@ module EducodeSales
36
36
  def destroy
37
37
  follow_up = FollowUp.find(params[:id])
38
38
  business = follow_up.business
39
- if follow_up.destroy
39
+ if follow_up.soft_destroy(@current_admin.id)
40
40
  if follow_up.id == business.last_follow_up_id
41
41
  business.update(last_follow_up: business.follow_ups.last, return_money: MoneyPlan.where(clazz: '已完成', follow_up_id: business.follow_ups.last&.id).sum(:amount))
42
42
  end
@@ -132,7 +132,8 @@ module EducodeSales
132
132
  )
133
133
  teacher.save
134
134
  key_peprson = KeyPerson.new(teacher_params)
135
- key_peprson.teacher = teacher
135
+ teacher_id = EducodeSales::Teacher.find_by(name: user.real_name, department_id: user.department_id).id
136
+ key_peprson.teacher_id = teacher_id
136
137
  end
137
138
 
138
139
  follow_up.key_person << key_peprson
@@ -52,6 +52,7 @@ module EducodeSales
52
52
  end
53
53
  def new_week
54
54
  @teacher = Teacher.find_by(id: params[:teacher_id])
55
+ @week = Time.now.strftime('%W').to_i
55
56
  week = Time.now.strftime('%W').to_i
56
57
  if week > 3
57
58
  @weeks = [[week+2,week+2], [week+1,week+1], [week.to_s + ' 本周',week], [week - 1,week - 1], [week - 2,week - 2]]
@@ -77,7 +78,17 @@ module EducodeSales
77
78
  end
78
79
 
79
80
  def new_weekly
80
- @area =@current_admin.areas.present? ? @current_admin.areas.pluck(:name).join("、") : ''
81
+ d = @current_admin
82
+ area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
83
+ if d.areas.present?
84
+ if d.areas.ids.sort.to_s == area_ids
85
+ @area = '全国'
86
+ else
87
+ @area = d.areas.pluck(:name).join("、")
88
+ end
89
+ else
90
+ @area = ''
91
+ end
81
92
  @name = @current_admin.user.real_name
82
93
  sale_plans = OperationPlan.where(month: Time.now.strftime("%Y-%m") + "-01 00:00:00", weekly: Time.now.strftime('%W').to_i, staff_id: @current_admin.id)
83
94
  @rate = sale_plans.present? ? (sale_plans.sum("finish_rate") / sale_plans.size) : 0
@@ -94,7 +105,17 @@ module EducodeSales
94
105
  end
95
106
 
96
107
  def new_monthly
97
- @area =@current_admin.areas.present? ? @current_admin.areas.pluck(:name).join("、") : ''
108
+ d = @current_admin
109
+ area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
110
+ if d.areas.present?
111
+ if d.areas.ids.sort.to_s == area_ids
112
+ @area = '全国'
113
+ else
114
+ @area = d.areas.pluck(:name).join("、")
115
+ end
116
+ else
117
+ @area = ''
118
+ end
98
119
  @name = @current_admin.user.real_name
99
120
  sale_plans = OperationPlan.where(month: Time.now.strftime("%Y-%m") + "-01 00:00:00", staff_id: @current_admin.id, weekly: nil)
100
121
  @rate = sale_plans.present? ? (sale_plans.sum("finish_rate") / sale_plans.size) : 0
@@ -68,7 +68,17 @@ module EducodeSales
68
68
  def show
69
69
  @sale_report = OperationReport.find(params[:id])
70
70
  @name = @sale_report.staff.user.real_name
71
- @area = @sale_report.staff.areas.present? ? @sale_report.staff.areas.pluck(:name).join("、") : ''
71
+ d = @sale_report.staff
72
+ area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
73
+ if d.areas.present?
74
+ if d.areas.ids.sort.to_s == area_ids
75
+ @area = '全国'
76
+ else
77
+ @area = d.areas.pluck(:name).join("、")
78
+ end
79
+ else
80
+ @area = ''
81
+ end
72
82
  render layout: false
73
83
  end
74
84
 
@@ -81,7 +91,17 @@ module EducodeSales
81
91
  def edit
82
92
  @sale_report = OperationReport.find(params[:id])
83
93
  @name = @sale_report.staff.user.real_name
84
- @area = @sale_report.staff.areas.present? ? @sale_report.staff.areas.pluck(:name).join("、") : ''
94
+ d = @sale_report.staff
95
+ area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
96
+ if d.areas.present?
97
+ if d.areas.ids.sort.to_s == area_ids
98
+ @area = '全国'
99
+ else
100
+ @area = d.areas.pluck(:name).join("、")
101
+ end
102
+ else
103
+ @area = ''
104
+ end
85
105
  render layout: false
86
106
  end
87
107
 
@@ -118,7 +138,17 @@ module EducodeSales
118
138
  def audit
119
139
  @sale_report = OperationReport.find(params[:id])
120
140
  @name = @sale_report.staff.user.real_name
121
- @area = @sale_report.staff.areas.present? ? @sale_report.staff.areas.pluck(:name).join("、") : ''
141
+ d = @sale_report.staff
142
+ area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
143
+ if d.areas.present?
144
+ if d.areas.ids.sort.to_s == area_ids
145
+ @area = '全国'
146
+ else
147
+ @area = d.areas.pluck(:name).join("、")
148
+ end
149
+ else
150
+ @area = ''
151
+ end
122
152
  render layout: false
123
153
  end
124
154
 
@@ -70,6 +70,7 @@ module EducodeSales
70
70
 
71
71
  def new_week
72
72
  @business = Business.find_by(id: params[:business_id])
73
+ @week = Time.now.strftime('%W').to_i
73
74
  week = Time.now.strftime('%W').to_i
74
75
  if week > 3
75
76
  @weeks = [[week+2,week+2], [week+1,week+1], [week.to_s + ' 本周',week], [week - 1,week - 1], [week - 2,week - 2]]
@@ -80,12 +81,22 @@ module EducodeSales
80
81
  end
81
82
  business_ids = EducodeSales::AssignFollowUp.joins(:follow_up).where(staff_id: @current_admin.id).pluck :business_id
82
83
  @businesses = Business.includes(:department, :last_follow_up).where("educode_sales_businesses.id in (?) or educode_sales_businesses.staff_id = ?", business_ids, @current_admin.id).order(created_at: :desc)
83
- @businesses = @businesses.map { |b| [b.name + "(" + b.department.school.name + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s : '无'), b.id] }
84
+ @businesses = @businesses.map { |b| [b.name + "(" + b.department.school.name + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s : b.created_at.to_s), b.id] }
84
85
  render layout: false
85
86
  end
86
87
 
87
88
  def new_weekly
88
- @area =@current_admin.areas.present? ? @current_admin.areas.pluck(:name).join("、") : ''
89
+ d = @current_admin
90
+ area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
91
+ if d.areas.present?
92
+ if d.areas.ids.sort.to_s == area_ids
93
+ @area = '全国'
94
+ else
95
+ @area = d.areas.pluck(:name).join("、")
96
+ end
97
+ else
98
+ @area = ''
99
+ end
89
100
  @name = @current_admin.user.real_name
90
101
  sale_plans = SalePlan.where(month: Time.now.strftime("%Y-%m") + "-01 00:00:00", weekly: Time.now.strftime('%W').to_i, staff_id: @current_admin.id)
91
102
  @rate = sale_plans.present? ? (sale_plans.sum("finish_rate") / sale_plans.size) : 0
@@ -98,12 +109,22 @@ module EducodeSales
98
109
  @business = Business.find_by(id: params[:business_id])
99
110
  business_ids = EducodeSales::AssignFollowUp.joins(:follow_up).where(staff_id: @current_admin.id).pluck :business_id
100
111
  @businesses =Business.includes(:department, :last_follow_up).where("educode_sales_businesses.id in (?) or educode_sales_businesses.staff_id = ?", business_ids, @current_admin.id).order(created_at: :desc)
101
- @businesses = @businesses.map { |b| [b.name + "(" + b.department.school.name + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s : '无'), b.id] }
112
+ @businesses = @businesses.map { |b| [b.name + "(" + b.department.school.name + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s : b.created_at.to_s), b.id] }
102
113
  render layout: false
103
114
  end
104
115
 
105
116
  def new_monthly
106
- @area =@current_admin.areas.present? ? @current_admin.areas.pluck(:name).join("、") : ''
117
+ d = @current_admin
118
+ area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
119
+ if d.areas.present?
120
+ if d.areas.ids.sort.to_s == area_ids
121
+ @area = '全国'
122
+ else
123
+ @area = d.areas.pluck(:name).join("、")
124
+ end
125
+ else
126
+ @area = ''
127
+ end
107
128
  @name = @current_admin.user.real_name
108
129
  sale_plans = SalePlan.where(month: Time.now.strftime("%Y-%m") + "-01 00:00:00", staff_id: @current_admin.id, weekly: nil)
109
130
  @rate = sale_plans.present? ? (sale_plans.sum("finish_rate") / sale_plans.size) : 0
@@ -133,7 +154,7 @@ module EducodeSales
133
154
  def edit_week
134
155
  business_ids = EducodeSales::AssignFollowUp.joins(:follow_up).where(staff_id: @current_admin.id).pluck :business_id
135
156
  @businesses = Business.includes(:department, :last_follow_up).where("educode_sales_businesses.id in (?) or educode_sales_businesses.staff_id = ?", business_ids, @current_admin.id).order(created_at: :desc)
136
- @businesses = @businesses.map { |b| [b.name + "(" + b.department.school.name + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s : '无'), b.id] }
157
+ @businesses = @businesses.map { |b| [b.name + "(" + b.department.school.name + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s : b.created_at.to_s), b.id] }
137
158
  @sale_plan = SalePlan.find(params[:id])
138
159
  if @sale_plan.weekly.present?
139
160
  week = Time.now.strftime('%W').to_i
@@ -174,7 +195,7 @@ module EducodeSales
174
195
 
175
196
  def destroy
176
197
  sale_plan = SalePlan.find(params[:id])
177
- if sale_plan.destroy
198
+ if sale_plan.soft_destroy(@current_admin.id)
178
199
  render_success
179
200
  else
180
201
  render_failure sale_plan
@@ -188,7 +209,7 @@ module EducodeSales
188
209
  def edit_month
189
210
  business_ids = EducodeSales::AssignFollowUp.joins(:follow_up).where(staff_id: @current_admin.id).pluck :business_id
190
211
  @businesses = Business.includes(:department, :last_follow_up).where("educode_sales_businesses.id in (?) or educode_sales_businesses.staff_id = ?", business_ids, @current_admin.id).order(created_at: :desc)
191
- @businesses = @businesses.map { |b| [b.name + "(" + b.department.school.name + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s : '无'), b.id] }
212
+ @businesses = @businesses.map { |b| [b.name + "(" + b.department.school.name + ")" + "---" + "最新跟进:" + (b.last_follow_up.present? ? b.last_follow_up.created_at.to_s : b.created_at.to_s), b.id] }
192
213
  @sale_plan = SalePlan.find(params[:id])
193
214
  @finish_rates = []
194
215
  11.times { |d| @finish_rates << ["#{d*10}%", d * 10]}
@@ -0,0 +1,95 @@
1
+ require_dependency "educode_sales/application_controller"
2
+
3
+ module EducodeSales
4
+ class RecyclesController < ApplicationController
5
+
6
+ def destroy
7
+ @recycle = Recycle.find(params[:id])
8
+ @recycle.destroy
9
+ render_success
10
+ end
11
+
12
+
13
+
14
+ def restore_reports
15
+ @recycle = Recycle.find(params[:id])
16
+ report_id = @recycle.source_id
17
+ EducodeSales::SaleReport.unscoped.find(report_id).update(deleted_at: nil)
18
+ @recycle.destroy
19
+ render_success
20
+ end
21
+
22
+ def restore_plans
23
+ @recycle = Recycle.find(params[:id])
24
+ plan = EducodeSales::SalePlan.unscoped.find(@recycle.source_id)
25
+ business = EducodeSales::Business.unscoped.find(plan.business_id)
26
+ Recycle.find_by(source_id: business.id).destroy if Recycle.find_by(source_id: business.id).present?
27
+ business.update(deleted_at: nil)
28
+ follow_ups = EducodeSales::FollowUp.unscoped.where(business_id: business.id)
29
+ follow_ups.update_all(deleted_at: nil)
30
+ plan.update(deleted_at: nil)
31
+ @recycle.destroy
32
+ render_success
33
+ end
34
+
35
+ def restore_businesses
36
+ @recycle = Recycle.find(params[:id])
37
+ business_id = @recycle.source_id
38
+ EducodeSales::Business.unscoped.find(business_id).update(deleted_at: nil)
39
+ follow_ups = EducodeSales::FollowUp.unscoped.where(business_id: business_id)
40
+ follow_ups.update_all(deleted_at: nil)
41
+ @recycle.destroy
42
+ render_success
43
+ end
44
+
45
+ def business
46
+ @businesses = Recycle.where(source_type:"EducodeSales::Business")
47
+ if params[:sort].present? && params[:sort][:field]
48
+ @businesses = @businesses.order("created_at #{params[:sort][:order]}")
49
+ else
50
+ @businesses = @businesses.order("educode_sales_recycles.created_at desc")
51
+ end
52
+ @businesses = @businesses.page(params[:page]).per(params[:limit])
53
+ end
54
+
55
+ def weekly
56
+ @weekly = Recycle.where(source_type:"EducodeSales::SaleReport").order(created_at: :desc).page(params[:page]).per(params[:limit])
57
+ if params[:sort].present? && params[:sort][:field]
58
+ @weekly = @weekly.order("created_at #{params[:sort][:order]}")
59
+ else
60
+ @weekly = @weekly.order("educode_sales_recycles.created_at desc")
61
+ end
62
+ @weekly = @weekly.page(params[:page]).per(params[:limit])
63
+ end
64
+
65
+ def monthly
66
+ @monthly = Recycle.where(source_type:"EducodeSales::SaleReport")
67
+ if params[:sort].present? && params[:sort][:field]
68
+ @monthly = @monthly.order("created_at #{params[:sort][:order]}")
69
+ else
70
+ @monthly = @monthly.order("educode_sales_recycles.created_at desc")
71
+ end
72
+ @monthly = @monthly.page(params[:page]).per(params[:limit])
73
+ end
74
+
75
+ def weekPlan
76
+ @weekPlans = Recycle.where(source_type:"EducodeSales::SalePlan")
77
+ if params[:sort].present? && params[:sort][:field]
78
+ @weekPlans = @weekPlans.order("created_at #{params[:sort][:order]}")
79
+ else
80
+ @weekPlans = @weekPlans.order("educode_sales_recycles.created_at desc")
81
+ end
82
+ @weekPlans = @weekPlans.page(params[:page]).per(params[:limit])
83
+ end
84
+
85
+ def monthPlan
86
+ @monthPlans = Recycle.where(source_type:"EducodeSales::SalePlan")
87
+ if params[:sort].present? && params[:sort][:field]
88
+ @monthPlans = @monthPlans.order("created_at #{params[:sort][:order]}")
89
+ else
90
+ @monthPlans = @monthPlans.order("educode_sales_recycles.created_at desc")
91
+ end
92
+ @monthPlans = @monthPlans.page(params[:page]).per(params[:limit])
93
+ end
94
+ end
95
+ end
@@ -35,6 +35,11 @@ module EducodeSales
35
35
  render layout: false
36
36
  end
37
37
 
38
+ def rename
39
+ @name = Role.find(params[:id]).name
40
+ render layout: false
41
+ end
42
+
38
43
  def update_role
39
44
  role = Role.find(params[:id])
40
45
  if role.update(name: params[:name])
@@ -24,13 +24,23 @@ module EducodeSales
24
24
  def show
25
25
  @sale_report = SaleReport.find(params[:id])
26
26
  @name = @sale_report.staff.user.real_name
27
- @area = @sale_report.staff.areas.present? ? @sale_report.staff.areas.pluck(:name).join("、") : ''
27
+ d = @sale_report.staff
28
+ area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
29
+ if d.areas.present?
30
+ if d.areas.ids.sort.to_s == area_ids
31
+ @area = '全国'
32
+ else
33
+ @area = d.areas.pluck(:name).join("、")
34
+ end
35
+ else
36
+ @area = ''
37
+ end
28
38
  render layout: false
29
39
  end
30
40
 
31
41
  def destroy
32
42
  sale_report = SaleReport.find(params[:id])
33
- if sale_report.destroy
43
+ if sale_report.soft_destroy(@current_admin.id)
34
44
  render_success
35
45
  else
36
46
  render_failure sale_report
@@ -86,7 +96,17 @@ module EducodeSales
86
96
  def edit
87
97
  @sale_report = SaleReport.find(params[:id])
88
98
  @name = @sale_report.staff.user.real_name
89
- @area = @sale_report.staff.areas.present? ? @sale_report.staff.areas.pluck(:name).join("、") : ''
99
+ d = @sale_report.staff
100
+ area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
101
+ if d.areas.present?
102
+ if d.areas.ids.sort.to_s == area_ids
103
+ @area = '全国'
104
+ else
105
+ @area = d.areas.pluck(:name).join("、")
106
+ end
107
+ else
108
+ @area = ''
109
+ end
90
110
  render layout: false
91
111
  end
92
112
 
@@ -123,7 +143,17 @@ module EducodeSales
123
143
  def audit
124
144
  @sale_report = SaleReport.find(params[:id])
125
145
  @name = @sale_report.staff.user.real_name
126
- @area = @sale_report.staff.areas.present? ? @sale_report.staff.areas.pluck(:name).join("、") : ''
146
+ d = @sale_report.staff
147
+ area_ids = EducodeSales::Common.where(clazz: 'area').ids.sort.to_s
148
+ if d.areas.present?
149
+ if d.areas.ids.sort.to_s == area_ids
150
+ @area = '全国'
151
+ else
152
+ @area = d.areas.pluck(:name).join("、")
153
+ end
154
+ else
155
+ @area = ''
156
+ end
127
157
  render layout: false
128
158
  end
129
159