Class: Caboose::OrderReporter

Inherits:
Object
  • Object
show all
Defined in:
app/models/caboose/order_reporter.rb

Class Method Summary collapse

Class Method Details

.summary_report(site_id, d1, d2) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'app/models/caboose/order_reporter.rb', line 4

def OrderReporter.summary_report(site_id, d1, d2)
  q = ["select 
      concat(date_part('year', date_authorized), '-', date_part('month', date_authorized), '-', date_part('day', date_authorized)),
      count(*),
      sum(subtotal),
      sum(tax),
      sum(shipping),
      sum(handling),
      sum(discount),          
      sum(total)
    from store_orders
    where site_id = ?
    and (financial_status = ? or financial_status = ?)
    and date_authorized >= ?
    and date_authorized < ?
    group by concat(date_part('year', date_authorized), '-', date_part('month', date_authorized), '-', date_part('day', date_authorized))
    order by concat(date_part('year', date_authorized), '-', date_part('month', date_authorized), '-', date_part('day', date_authorized))",
    site_id, 'authorized', 'captured', d1, d2]
  rows = ActiveRecord::Base.connection.select_rows(ActiveRecord::Base.send(:sanitize_sql_array, q))
  
  days = []
  rows.each do |row|
    arr = row[0].split('-')
    days << Caboose::StdClass.new(
      :date     => Date.new(arr[0].to_i, arr[1].to_i, arr[2].to_i), 
      :count    => row[1].to_i,
      :subtotal => row[2].to_f,
      :tax      => row[3].to_f,
      :shipping => row[4].to_f,
      :handling => row[5].to_f,
      :discount => row[6].to_f,
      :total    => row[7].to_f
    )
  end      
  days.sort_by!{ |h| h.date }
        
  last_day = d1 - 1.day
  days2 = []
  days.each do |h|
    while (h.date - last_day) > 1          
      days2 << Caboose::StdClass.new(
        :date     => last_day + 1.day, 
        :count    => 0,
        :subtotal => 0.0,
        :tax      => 0.0,
        :shipping => 0.0,
        :handling => 0.0,
        :discount => 0.0,
        :total    => 0.0
      )
      last_day = last_day + 1.day
    end
    days2 << h
    last_day = h.date        
  end
  #days2.each do |h|
  #  puts "#{h.date} #{h.count} #{h.total}"
  #end
  return days2            
end