Skip to content

Instantly share code, notes, and snippets.

@airspeed
Last active May 15, 2017 09:03
Show Gist options
  • Save airspeed/5c93849edefc0412fa99b11704016fd5 to your computer and use it in GitHub Desktop.
Save airspeed/5c93849edefc0412fa99b11704016fd5 to your computer and use it in GitHub Desktop.
=begin
Hey Francesco,
wir würden gerne für den Muttertag ein kleines Reporting machen.
Hättest du Montag oder Anfang nächster Woche ein wenig Zeit dafür.
Uns würde interessieren wie viele Orders waren Neukunden/Erstbestellung und wie viele Wiederkäufer
Einmal zu den Vouchern und einmal gesamt über den Zeitraum alle Fotobuch Orders vom 21.04.2017 - 14.05.2017
Voucher
Fine
Marry
Eva
Ines
Andrea
Resi
Isabell
Anna
Annanas
Shopaholic
Lena
thanksmom
Muttertag17
Mum17
Mum2017
=end
def fb144
out = []
out_csv = []
# A) gesamt über den Zeitraum alle Fotobuch Orders vom 21.04.2017 - 14.05.2017
out << "===================================================================================================="
out << "A) gesamt über den Zeitraum alle Fotobuch Orders vom 21.04.2017 - 14.05.2017"
out << "===================================================================================================="
# 1. wie viele Orders waren Neukunden
out << "----------------------------------------"
out << "1. wie viele Orders waren Neukunden"
out << "----------------------------------------"
out << Order.where( :created_at => Date.parse( '2017-04-21' ) .. Date.parse( '2017-05-14' ), :state => :printed.to_s )
.select{ | w | w.user.orders.where( :state => :printed.to_s ).first.id == w.id if w.user }.count
# 2. wie viele Orders waren Wiederkäufer
out << "----------------------------------------"
out << "2. wie viele Orders waren Wiederkäufer"
out << "----------------------------------------"
out << Order.where( :created_at => Date.parse( '2017-04-21' ) .. Date.parse( '2017-05-14' ), :state => :printed.to_s )
.select{ | w | w.user.orders.where( :state => :printed.to_s ).first.id != w.id if w.user }.count
# B) zu den Vouchern
out << "===================================================================================================="
out << "B) zu den Vouchern"
out << "===================================================================================================="
voucher_codes = [
'Fine',
'Marry',
'Eva',
'Ines',
'Andrea',
'Resi',
'Isabell',
'Anna',
'Annanas',
'Shopaholic',
'Lena',
'thanksmom',
'Muttertag17',
'Mum17',
'Mum2017'
]
gs = Voucher.where( :code => voucher_codes )
gs.each do | g |
out << "*************************"
out << "Voucher code #{ g.code }:"
out << "*************************"
# 1. wie viele Orders waren Neukunden
out << "----------------------------------------"
out << "1. wie viele Orders waren Neukunden"
out << "----------------------------------------"
v1 = Order.where( :voucher_id => g.id, :state => :printed.to_s )
.select{ | w | w.user.orders.where( :state => :printed.to_s ).first.id == w.id if w.user }.count
out << v1
# 2. wie viele Orders waren Wiederkäufer
out << "----------------------------------------"
out << "2. wie viele Orders waren Wiederkäufer"
out << "----------------------------------------"
v2 = Order.where( :voucher_id => g.id, :state => :printed.to_s )
.select{ | w | w.user.orders.where( :state => :printed.to_s ).first.id != w.id if w.user }.count
out << v2
out_csv << [ g.code, v1, v2 ]
end
out << ""
print_result( out )
out << ""
print_csv( out_csv )
out << ""
0
end
def print_result( result )
result.each do | s |
puts s
end
0
end
def print_csv( result_csv )
out = []
result_csv.each do | row |
out << row.join( ',' )
end
puts 'Code,Erstbesteller,Wiederkäufer'
out.each do | row |
puts row
end
0
end
# fb144
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment