created a very ugly report
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
class ReportsController < ApplicationController
|
||||
|
||||
def items_to_order
|
||||
@items = Item.items_to_order
|
||||
@report = Item.items_to_order
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
<style type="text/css">
|
||||
.tg {border-collapse:collapse;border-spacing:0;}
|
||||
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
|
||||
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
|
||||
</style>
|
||||
<div><%= "report is nil" if @report.nil? %></div>
|
||||
<table class="tg">
|
||||
<tr>
|
||||
<th class="tg-031e">Code</th>
|
||||
<th class="tg-031e">Item name</th>
|
||||
<th class="tg-031e">Amount</th>
|
||||
<th class="tg-031e">Price</th>
|
||||
<th class="tg-031e">Total</th>
|
||||
</tr>
|
||||
|
||||
<% unless @report.nil? %>
|
||||
<% @report.sections.each do |section| %>
|
||||
<tr><td><%= section.supplier.name %></td></tr>
|
||||
<% section.items.each do |item| %>
|
||||
<tr>
|
||||
<td class="tg-031e"><%= item.code %></td>
|
||||
<td class="tg-031e"><%= item.name %></td>
|
||||
<td class="tg-031e"><%= item.amount %></td>
|
||||
<td class="tg-031e"><%= item.current_input_price %></td>
|
||||
<td class="tg-031e"><%= item.current_input_price * item.amount %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<tr><td>Sub-total: <%= section.sum_amount %></td></tr>
|
||||
<% end %>
|
||||
<tr><td><strong>Total: <%= @report.full_sum %></strong> </td></tr>
|
||||
<% end %>
|
||||
</table>
|
||||
|
||||
Reference in New Issue
Block a user