From c78c80e41609e4aa138b4c34047eccaa92d8196a Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Fri, 14 Nov 2014 10:13:46 +0100 Subject: Report sales by shop. --- lib/reports/sales_by_shop.rb | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lib/reports/sales_by_shop.rb (limited to 'lib/reports/sales_by_shop.rb') diff --git a/lib/reports/sales_by_shop.rb b/lib/reports/sales_by_shop.rb new file mode 100644 index 0000000..7308b1d --- /dev/null +++ b/lib/reports/sales_by_shop.rb @@ -0,0 +1,37 @@ +module SalesReporter + module Reports + class SalesByShop + def self.render(sales) + sales_by_shop = {} + + sales.each do |s| + shop = s.shop + if sales_by_shop[shop] + sales_by_shop[shop][:count] += s.quantity + sales_by_shop[shop][:total] += s.amount + else + sales_by_shop[shop] = {:count => s.quantity, :total => s.amount} + end + end + + sorted = sales_by_shop.sort { |a,b| b[1][:count] <=> a[1][:count] } + + puts "Shop: Streams: Revenue:" + puts "------------------------------------------" + + total_rev = 0 + total_streams = 0 + + sorted.each do |key, row| + puts "#{key.slice(0, 19).ljust(20)}: #{row[:count].to_s.rjust(7)} #{row[:total].round(5).to_s.rjust(10)} EUR" + total_rev += row[:total] + total_streams += row[:count] + end + + puts "------------------------------------------" + puts "Total: #{total_streams.to_s.rjust(7)} #{total_rev.round(5).to_s.rjust(10)} EUR" + + end + end + end +end -- cgit v1.2.3