e9_crm 0.1.24 → 0.1.25

Sign up to get free protection for your applications and to get access to all the features.
@@ -38,7 +38,7 @@ class Campaign < ActiveRecord::Base
38
38
  scope :of_group, lambda {|val| joins(:campaign_group).where(:campaign_group_id => val.to_param) }
39
39
  scope :typed, lambda { where(arel_table[:type].not_eq('NoCampaign')) }
40
40
  scope :ordered, lambda { order(arel_table[:name].asc) }
41
-
41
+
42
42
  scope :reports, lambda {|*args|
43
43
  options = args.extract_options!
44
44
 
@@ -50,6 +50,7 @@ class Campaign < ActiveRecord::Base
50
50
  COUNT(deals.id) lead_count,
51
51
 
52
52
  SUM(IF(deals.status='won',1,0)) won_deal_count,
53
+ SUM(IF(deals.status IN('won','lost'),1,0)) closed_deal_count,
53
54
  SUM(IF(deals.status='won',deals.value,0)) total_value,
54
55
  AVG(IF(deals.status='won',deals.value,NULL)) average_value,
55
56
 
@@ -60,10 +61,13 @@ class Campaign < ActiveRecord::Base
60
61
  rv.count repeat_visits,
61
62
  nv.count new_visits,
62
63
 
63
- FLOOR(AVG(
64
- DATEDIFF(
65
- deals.closed_at,
66
- deals.created_at))) average_elapsed
64
+ SUM(DATEDIFF(
65
+ deals.closed_at,
66
+ deals.created_at)) total_elapsed,
67
+
68
+ AVG(DATEDIFF(
69
+ deals.closed_at,
70
+ deals.created_at)) average_elapsed
67
71
  SQL
68
72
 
69
73
  select(selects)
@@ -60,7 +60,10 @@
60
60
  = m record.average_cost
61
61
  %td.record-average-elapsed.num
62
62
  - dat[:average_elapsed] << record.average_elapsed
63
- = record.average_elapsed && "%s days" % record.average_elapsed || 'n/a'
63
+ = record.closed_deal_count > 0 ? record.average_elapsed && ("%i days" % record.average_elapsed) || 0 : 'n/a'
64
+
65
+ - dat[:closed_deal_count] << record.closed_deal_count
66
+ - dat[:total_elapsed] << record.total_elapsed
64
67
 
65
68
  %tfooter
66
69
  %tr{:class => 'record-totals'}
@@ -75,14 +78,18 @@
75
78
  %td.record-deal-count.num
76
79
  = dat[:deal_count].sum.to_i
77
80
  %td.record-won-deal-count.num
78
- = dat[:won_deal_count].sum.to_i
81
+ = won_deal_count = dat[:won_deal_count].sum.to_i
79
82
  %td.record-total-value.num
80
- = m dat[:total_value].compact.sum
83
+ - total_value = dat[:total_value].compact.sum
84
+ = m(total_value)
81
85
  %td.record-average-value.num
82
- = m dat[:average_value].compact.average
86
+ = m(total_value.to_f / won_deal_count)
83
87
  %td.record-total-cost.num
84
- = m dat[:total_cost].compact.sum
88
+ - total_cost = dat[:total_cost].compact.sum
89
+ = m(total_cost)
85
90
  %td.record-average-cost.num
86
- = m dat[:average_cost].compact.average
91
+ = m(total_cost.to_f / won_deal_count)
87
92
  %td.record-average-elapsed.num
88
- = "%s days" % dat[:average_elapsed].compact.average
93
+ - total_elapsed = dat[:total_elapsed].compact.sum.to_f
94
+ - closed_deal_count = dat[:closed_deal_count].sum.to_i
95
+ = "%i days" % (total_elapsed / closed_deal_count)
@@ -33,7 +33,7 @@ module E9Crm::Rack
33
33
  contacts = []
34
34
  end
35
35
 
36
- [200, {"Content-Type" => "application/json", "Cache-Control" => "max-age=3600, must-revalidate"}, [contacts.to_json]]
36
+ [200, {"Content-Type" => "application/json", "Cache-Control" => "no-cache"}, [contacts.to_json]]
37
37
  else
38
38
  [404, {"Content-Type" => "text/html", "X-Cascade" => "pass"}, ["Not Found"]]
39
39
  end
@@ -1,3 +1,3 @@
1
1
  module E9Crm
2
- VERSION = '0.1.24'
2
+ VERSION = '0.1.25'
3
3
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: e9_crm
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.24
5
+ version: 0.1.25
6
6
  platform: ruby
7
7
  authors:
8
8
  - Travis Cox
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-09-23 00:00:00 Z
13
+ date: 2011-09-26 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails