educode_sales 0.9.86 → 0.9.89

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: 85457062bb8c20c8e1703353efcb1f958eb39d5e15ca0936efac9f58ca720184
4
- data.tar.gz: f115e02bf7cdfc392673bf27c533fd6d6cbb87a462936708eb3d1e8e093607f4
3
+ metadata.gz: 90a8a2173c7a406ab0cc7e93e394c7112394ad05e264004870d3a7bbe60754db
4
+ data.tar.gz: 1e51f78cda684acf4c051bbc75ced90b7927dd901a7c12466a1f7d68926c36b9
5
5
  SHA512:
6
- metadata.gz: 0d0b2b9d028276ee69d72a5e480772c4676c341c8390c6bdfad9880bb9b303f8ab004c9ca2b52f44a9b0bf20e6d259a5973bb0fa83f022b4fa23cb96f27ac581
7
- data.tar.gz: 2ee2104f1259feac76bc7d562616e266cce1488d5785e5383158dab5450799b7d3436822f29d57d3ae9f3c7044fb94815f3dec0450890ea6a1ef0db2451359af
6
+ metadata.gz: ef42ae93980e1cad1414a09e6c8a8213d759b1722396b2901839dad11a2a24aa30672e24cf7f2a1c196eac11e366958b75c1b6a4686a739d87722f0a887e4182
7
+ data.tar.gz: caa434156ad1796fdffdf59afccc406ed9723968b6f1bd7856f8df237436cf91a838efee688e7a5b452c73a2a1b33d2cfbb9369b58c92266fd98675d136904d5
@@ -243,6 +243,19 @@ module EducodeSales
243
243
  gon.department = []
244
244
  gon.value = ''
245
245
  end
246
+
247
+ @list = {}
248
+ EducodeSales::ContractDateList.clazzs.each do |d, i|
249
+ @list[d] = [EducodeSales::ContractDateList.new]
250
+ end
251
+
252
+ @last_follow_up.contract_date_lists.each do |d|
253
+ if @list[d.clazz][0].id == nil
254
+ @list[d.clazz][0] = d
255
+ else
256
+ @list[d.clazz] << d
257
+ end
258
+ end
246
259
 
247
260
  render layout: false
248
261
  end
@@ -312,6 +325,8 @@ module EducodeSales
312
325
  end
313
326
 
314
327
  def add_follow_ups
328
+ @business = Business.find(params[:business_id])
329
+ last_follow_up = @business.last_follow_up
315
330
  data = []
316
331
  6.times do |i|
317
332
  data[i] = []
@@ -326,14 +341,18 @@ module EducodeSales
326
341
  end
327
342
  params["#{i+1}_actual_date"].each do |d, v|
328
343
  data[i][d.to_i] << v
344
+ if i == 1 && last_follow_up
345
+ # 验收时间
346
+ last_follow_up.reception_at = v
347
+ end
329
348
  end
349
+
330
350
  end
331
351
  data.each do |d|
332
352
  d.select! { |d| d.delete_if{|f| f == ''}.present? }
333
353
  end
334
354
 
335
- @business = Business.find(params[:business_id])
336
- last_follow_up = @business.last_follow_up
355
+
337
356
 
338
357
  follow_up = last_follow_up.dup
339
358
  follow_up.assign_attributes(follow_up_params)
@@ -388,6 +388,7 @@ module EducodeSales
388
388
 
389
389
  end
390
390
  format.js do
391
+ property = params[:property] || nil
391
392
  staff_id = params[:staff_id] || nil
392
393
  @forecast_count_range = params[:forecast_count_range] || "month"
393
394
  forecast_default_dates = ("#{Time.now.year}-01-01".to_date.."#{Time.now.year}-#{Time.now.month}-01".to_date).map { |d| d.strftime("%Y-%m") }.uniq
@@ -398,10 +399,10 @@ module EducodeSales
398
399
  if params[:forecast_date_day].present?
399
400
  date = params[:forecast_date_day].split(" - ")
400
401
  dates = (date[0].to_date..date[1].to_date).map { |d| d.strftime("%Y-%W") }.uniq.select { |d| d.split("-")[1] != '00' }
401
- @forecast_count_data = goal_forecast_week(dates, sale_names, staff_id)
402
+ @forecast_count_data = goal_forecast_week(dates, sale_names, staff_id, property)
402
403
  else
403
404
  forecast_default_dates = ("#{Time.now.year}-01-01".to_date.."#{Time.now.year}-#{Time.now.month}-01".to_date).map { |d| d.strftime("%Y-%W") }.uniq.select { |d| d.split("-")[1] != '00' }
404
- @forecast_count_data = goal_forecast_week(forecast_default_dates, sale_names, staff_id)
405
+ @forecast_count_data = goal_forecast_week(forecast_default_dates, sale_names, staff_id, property)
405
406
  end
406
407
  when "quarter"
407
408
  # 按年
@@ -409,11 +410,11 @@ module EducodeSales
409
410
  date = params[:forecast_date_year].split(" - ")
410
411
  dates = (date[0]..date[1]).to_a
411
412
  dates = dates.map { |d| [d.to_s + "-" + "1", d.to_s + "-" + "2", d.to_s + "-" + "3", d.to_s + "-" + "4"] }.flatten
412
- @forecast_count_data = goal_forecast_quarter(dates, sale_names, staff_id)
413
+ @forecast_count_data = goal_forecast_quarter(dates, sale_names, staff_id, property)
413
414
  else
414
415
  forecast_default_dates = ("#{Time.now.year}-01-01".to_date.."#{Time.now.year}-#{Time.now.month}-01".to_date).map { |d| d.strftime("%Y") }.uniq
415
416
  forecast_default_dates = forecast_default_dates.map { |d| [d.to_s + "-" + "1", d.to_s + "-" + "2", d.to_s + "-" + "3", d.to_s + "-" + "4"] }.flatten
416
- @forecast_count_data = goal_forecast_quarter(forecast_default_dates, sale_names, staff_id)
417
+ @forecast_count_data = goal_forecast_quarter(forecast_default_dates, sale_names, staff_id, property)
417
418
  end
418
419
  when "month" # 按月
419
420
  if params[:forecast_date_month].present?
@@ -421,21 +422,23 @@ module EducodeSales
421
422
  date[0] = (date[0] + "-01").to_date.to_s
422
423
  date[1] = (date[1] + "-01").to_date.end_of_month.to_s
423
424
  dates = ((date[0] + "-01").to_date..(date[1] + "-01").to_date).map { |d| d.strftime("%Y-%m") }.uniq
424
- @forecast_count_data = goal_forecast_month(dates, sale_names, staff_id)
425
+ @forecast_count_data = goal_forecast_month(dates, sale_names, staff_id, property)
425
426
  else
426
- @forecast_count_data = goal_forecast_month(forecast_default_dates, sale_names, staff_id)
427
+ @forecast_count_data = goal_forecast_month(forecast_default_dates, sale_names, staff_id, property)
427
428
  end
428
429
  else
429
430
  # 按年
430
431
  if params[:forecast_date_year].present?
431
432
  date = params[:forecast_date_year].split(" - ")
432
433
  dates = (date[0]..date[1]).to_a
433
- @forecast_count_data = goal_forecast_year(dates, sale_names, staff_id)
434
+ @forecast_count_data = goal_forecast_year(dates, sale_names, staff_id, property)
434
435
  else
435
436
  forecast_default_dates = ("#{Time.now.year}-01-01".to_date.."#{Time.now.year}-#{Time.now.month}-01".to_date).map { |d| d.strftime("%Y") }.uniq
436
- @forecast_count_data = goal_forecast_year(forecast_default_dates, sale_names, staff_id)
437
+ @forecast_count_data = goal_forecast_year(forecast_default_dates, sale_names, staff_id, property)
437
438
  end
438
439
  end
440
+ @forecast_count_data_0 = @forecast_count_data[0]
441
+ @forecast_count_data_1 = @forecast_count_data[1]
439
442
  end
440
443
  end
441
444
  end
@@ -5,7 +5,7 @@ module EducodeSales
5
5
 
6
6
  def index
7
7
  respond_to do |format|
8
- format.html do
8
+ format.js do
9
9
  common = Common.find_by(clazz: 'staff_type', name: '销售')
10
10
  staffs = Staff.joins(:user).where(job_type: common.id).where.not(role_id: 11)
11
11
  @staffs = staffs.map { |d| [d.user.real_name, d.id]}
@@ -1,9 +1,10 @@
1
1
  module EducodeSales
2
2
  module SaleTrendsHelper
3
3
  NAMES = %w[计划投标额 计划投标额累计 实际中标额 实际中标额累计]
4
- def goal_forecast_quarter(labels, selects, staff_id = nil)
5
- plan_get = plan_get(staff_id, labels, "quarter")
6
- actual_get = actual_get(staff_id, labels, "quarter")
4
+
5
+ def goal_forecast_quarter(labels, selects, staff_id = nil, property)
6
+ plan_get = plan_get(staff_id, labels, "quarter", property)
7
+ actual_get = actual_get(staff_id, labels, "quarter", property)
7
8
  datasets = selects.map.with_index do |select, i|
8
9
  data = if select == NAMES[0]
9
10
  labels.map do |d|
@@ -53,16 +54,21 @@ module EducodeSales
53
54
  borderWidth: 1
54
55
  }
55
56
  end
56
- {
57
+ hash_a = {
58
+ labels: labels,
59
+ datasets: [datasets[0], datasets[2]]
60
+ }
61
+ hash_b = {
57
62
  labels: labels,
58
- datasets: datasets
63
+ datasets: [datasets[1], datasets[3]]
59
64
  }
65
+ [hash_a, hash_b]
60
66
  end
61
67
 
62
- def goal_forecast_week(labels, selects, staff_id = nil)
68
+ def goal_forecast_week(labels, selects, staff_id = nil, property)
63
69
 
64
- plan_get = plan_get(staff_id, labels, "week")
65
- actual_get = actual_get(staff_id, labels, "week")
70
+ plan_get = plan_get(staff_id, labels, "week", property)
71
+ actual_get = actual_get(staff_id, labels, "week", property)
66
72
  datasets = selects.map.with_index do |select, i|
67
73
  data = if select == NAMES[0]
68
74
  labels.map do |d|
@@ -117,15 +123,20 @@ module EducodeSales
117
123
  }
118
124
  end
119
125
 
120
- {
126
+ hash_a = {
121
127
  labels: labels,
122
- datasets: datasets
128
+ datasets: [datasets[0], datasets[2]]
123
129
  }
130
+ hash_b = {
131
+ labels: labels,
132
+ datasets: [datasets[1], datasets[3]]
133
+ }
134
+ [hash_a, hash_b]
124
135
  end
125
136
 
126
- def goal_forecast_month(labels, selects, staff_id = nil)
127
- plan_get = plan_get(staff_id, labels, "month")
128
- actual_get = actual_get(staff_id, labels, "month")
137
+ def goal_forecast_month(labels, selects, staff_id = nil, property)
138
+ plan_get = plan_get(staff_id, labels, "month", property)
139
+ actual_get = actual_get(staff_id, labels, "month", property)
129
140
  datasets = selects.map.with_index do |select, i|
130
141
  data = if select == NAMES[0]
131
142
  labels.map do |d|
@@ -177,15 +188,20 @@ module EducodeSales
177
188
  }
178
189
  end
179
190
 
180
- {
191
+ hash_a = {
181
192
  labels: labels,
182
- datasets: datasets
193
+ datasets: [datasets[0], datasets[2]]
183
194
  }
195
+ hash_b = {
196
+ labels: labels,
197
+ datasets: [datasets[1], datasets[3]]
198
+ }
199
+ [hash_a, hash_b]
184
200
  end
185
201
 
186
- def goal_forecast_year(labels, selects, staff_id = nil)
187
- plan_get = plan_get(staff_id, labels, "year")
188
- actual_get = actual_get(staff_id, labels, "year")
202
+ def goal_forecast_year(labels, selects, staff_id = nil, property)
203
+ plan_get = plan_get(staff_id, labels, "year", property)
204
+ actual_get = actual_get(staff_id, labels, "year", property)
189
205
  datasets = selects.map.with_index do |select, i|
190
206
  data = if select == NAMES[0]
191
207
  labels.map { |d| plan_get[d.to_i] || 0 }
@@ -220,15 +236,20 @@ module EducodeSales
220
236
  borderWidth: 1
221
237
  }
222
238
  end
223
- {
239
+ hash_a = {
240
+ labels: labels,
241
+ datasets: [datasets[0], datasets[2]]
242
+ }
243
+ hash_b = {
224
244
  labels: labels,
225
- datasets: datasets
245
+ datasets: [datasets[1], datasets[3]]
226
246
  }
247
+ [hash_a, hash_b]
227
248
  end
228
249
 
229
250
  private
230
251
 
231
- def plan_get(staff_id, time_range, type)
252
+ def plan_get(staff_id, time_range, type, property)
232
253
  # budget_amount 预算额
233
254
  start_time = case type
234
255
  when "month"
@@ -253,6 +274,9 @@ module EducodeSales
253
274
  staff_id = staff_id.present? ? Array(staff_id) : nil
254
275
  data = Business.joins(:last_follow_up)
255
276
  .where("educode_sales_follow_ups.invitation_at >= ? and educode_sales_follow_ups.invitation_at <= ? #{staff_id.present? ? "AND educode_sales_follow_ups.staff_id in (#{staff_id.join(",")})" : ""}", start_time, end_time)
277
+ if property.present?
278
+ data = data.joins(department: [school: :school_tags]).where("school_tags.id = ?", property)
279
+ end
256
280
  case type
257
281
  when "week"
258
282
  data.select("educode_sales_follow_ups.*, yearweek(educode_sales_follow_ups.invitation_at) as week").group("yearweek(educode_sales_follow_ups.invitation_at)").sum(:budget_amount)
@@ -267,7 +291,7 @@ module EducodeSales
267
291
  end
268
292
  end
269
293
 
270
- def actual_get(staff_id, time_range, type)
294
+ def actual_get(staff_id, time_range, type, property)
271
295
  start_time = case type
272
296
  when "month"
273
297
  time_range.first + "-01"
@@ -292,6 +316,9 @@ module EducodeSales
292
316
  staff_id = staff_id.present? ? Array(staff_id) : nil
293
317
  data = Business.joins(:last_follow_up)
294
318
  .where("educode_sales_follow_ups.bidded_date >= ? and educode_sales_follow_ups.bidded_date <= ? #{staff_id.present? ? "AND educode_sales_follow_ups.staff_id in (#{staff_id.join(",")})" : ""}", start_time, end_time)
319
+ if property.present?
320
+ data = data.joins(department: [school: :school_tags]).where("school_tags.id = ?", property)
321
+ end
295
322
  case type
296
323
  when "week"
297
324
  data.select("educode_sales_follow_ups.*, yearweek(educode_sales_follow_ups.bidded_date) as week").group("yearweek(educode_sales_follow_ups.bidded_date)").sum(:actual_amount)
@@ -59,14 +59,7 @@
59
59
  placeholder="请选择日期">
60
60
  </div>
61
61
  </div>
62
- <div class="layui-inline">
63
- <label class="layui-form-label">验收时间</label>
64
- <div class="layui-input-inline">
65
- <input type="text" class="layui-input" name="reception_at" autocomplete="off" id="reception_at_add"
66
- value="<%= @last_follow_up&.reception_at %>"
67
- placeholder="请选择日期">
68
- </div>
69
- </div>
62
+ <input type="hidden" class="layui-input" name="reception_at" value="<%= @last_follow_up&.reception_at %>">
70
63
  <div class="layui-inline">
71
64
  <label class="layui-form-label">部署时间</label>
72
65
  <div class="layui-input-inline">
@@ -3,6 +3,9 @@
3
3
  <ul class="layui-tab-title">
4
4
  <li class="layui-this follows_li">跟进动态</li>
5
5
  <li class="contracts_list_li">合同列表</li>
6
+ <% if can? :read_sales_detail, EducodeSales::Business %>
7
+ <li class="sales_list_li">销售明细</li>
8
+ <% end %>
6
9
  </ul>
7
10
  <div class="layui-tab-content">
8
11
  <div class="layui-tab-item follows_div layui-show">
@@ -11,6 +14,11 @@
11
14
  <div class="layui-tab-item contracts_list_div">
12
15
  <div id="contract_list_wraper"></div>
13
16
  </div>
17
+ <% if can? :read_sales_detail, EducodeSales::Business %>
18
+ <div class="layui-tab-item sales_list_div">
19
+ <div id="sales_list_wraper"></div>
20
+ </div>
21
+ <% end %>
14
22
  </div>
15
23
  </div>
16
24
 
@@ -31,6 +39,8 @@
31
39
  element.on('tab(contract_tab)', function(data) {
32
40
  if (data.index == 1 && $("#contract_list").length == 0) {
33
41
  loadPage('/missions/contracts/list')
42
+ } else if (data.index == 2 && $("#sales_list").length == 0) {
43
+ loadPage('/missions/sales_details')
34
44
  }
35
45
  });
36
46