foodsoft/app/documents/order_by_groups.rb

67 lines
2.4 KiB
Ruby

class OrderByGroups < OrderPdf
def filename
I18n.t('documents.order_by_groups.filename', :name => order.name, :date => order.ends.to_date) + '.pdf'
end
def title
I18n.t('documents.order_by_groups.title', :name => order.name,
:date => order.ends.strftime(I18n.t('date.formats.default')))
end
def body
each_ordergroup do |oa_name, oa_total, oa_id, oa_transport|
has_transport = !oa_transport.nil? && oa_transport > 0
dimrows = []
rows = [[
OrderArticle.human_attribute_name(:article),
Article.human_attribute_name(:supplier),
GroupOrderArticle.human_attribute_name(:ordered),
GroupOrderArticle.human_attribute_name(:received),
GroupOrderArticle.human_attribute_name(:unit_price),
GroupOrderArticle.human_attribute_name(:total_price)
]]
each_group_order_article_for_ordergroup(oa_id) do |goa|
dimrows << rows.length if goa.result == 0
rows << [goa.order_article.article.name,
goa.group_order.order.name,
group_order_article_quantity_with_tolerance(goa),
group_order_article_result(goa),
order_article_price_per_unit(goa.order_article),
number_to_currency(goa.total_price)]
end
next unless rows.length > 1
rows << [nil, nil, nil, nil, nil, number_to_currency(oa_total)]
if has_transport
rows << [GroupOrder.human_attribute_name(:transport), nil, nil, nil, nil, number_to_currency(oa_transport)]
rows << [nil, nil, nil, nil, nil, number_to_currency(oa_total + oa_transport)]
end
rows.each { |row| row.delete_at 1 } unless @options[:show_supplier]
nice_table oa_name || stock_ordergroup_name, rows, dimrows do |table|
if has_transport
table.row(-4).border_width = 1
table.row(-4).border_color = '666666'
end
table.row(-2).border_width = 1
table.row(-2).border_color = '666666'
table.row(-1).borders = []
if @options[:show_supplier]
table.column(0).width = bounds.width / 3
table.column(1).width = bounds.width / 4
else
table.column(0).width = bounds.width / 2
end
table.columns(-4..-1).align = :right
table.column(-3).font_style = :bold
table.column(-1).font_style = :bold
end
end
end
end