created a very ugly report

This commit is contained in:
Senad Uka
2015-04-08 07:35:00 +02:00
parent 670f58fcff
commit 6da4e6c9fd
10 changed files with 186 additions and 17 deletions

View File

@@ -9,19 +9,48 @@ class Item < ActiveRecord::Base
validates_presence_of :name, :description, :list_price, :current_input_price, :tags, :unit_id, :code, :sub_category_id, :weight, :supplier_id
# todo build a front end in backoffice (rails)
def self.items_to_order
return Item.find_by_sql(%Q{
select s.name as supplier, i.name as item, sum(iic.count) amount, i.current_input_price
items_raw = Item.find_by_sql(%Q{
select s.id as supplier_id, i.code as code, i.name as name, sum(iic.count) amount, i.current_input_price
from carts c
join item_in_carts iic on iic.cart_id = c.id
join items i on i.id = iic.item_id
join suppliers s on i.supplier_id = s.id
left join item_in_carts iic on iic.cart_id = c.id
left join items i on i.id = iic.item_id
left join suppliers s on i.supplier_id = s.id
where c.confirmed and not (c.packed or c.delivered)
group by s.name, i.name, i.current_input_price
group by s.id, i.name, i.code, i.current_input_price
order by s.name, amount desc;
})
items_sorted = {}
suppliers_sorted = {}
items_raw.each do |item|
items_sorted[item.supplier_id] ||= []
suppliers_sorted[item.supplier_id] ||= item.supplier
items_sorted[item.supplier_id] << item
end
report_items = []
complete_sum = 0
suppliers_sorted.each_pair do |key, value|
rep_sec = OpenStruct.new # report section
rep_sec.supplier = value
rep_sec.items = items_sorted[key]
rep_sec.sum_amount = rep_sec.items.reduce(0) do |sum, item|
sum + (item.current_input_price * item.amount)
end
complete_sum += rep_sec.sum_amount
report_items << rep_sec
end
full_report = OpenStruct.new
full_report.sections = report_items
full_report.full_sum = complete_sum
return full_report
end

View File

@@ -7,6 +7,10 @@ class ItemInCart < ActiveRecord::Base
validates :cart_id, presence: true
def name
item.name + " " + count.to_s + " " + price.to_s
if item
item.name + " " + count.to_s + " " + price.to_s
else
" no item "
end
end
end