viehlieb
895589c03d
add custom_csv_collection to orders helper add rute and controller method to orders controller add custom csv to download dropdown add functionality to choose column headers + order for custom csv and append order.sum gross&net to custom csv
61 lines
1.9 KiB
Ruby
61 lines
1.9 KiB
Ruby
require 'csv'
|
|
|
|
class OrderCsv < RenderCsv
|
|
def header
|
|
params = @options[:custom_csv]
|
|
arr = if params.nil?
|
|
[
|
|
OrderArticle.human_attribute_name(:units_to_order),
|
|
Article.human_attribute_name(:order_number),
|
|
Article.human_attribute_name(:name),
|
|
Article.human_attribute_name(:unit),
|
|
Article.human_attribute_name(:unit_quantity_short),
|
|
ArticlePrice.human_attribute_name(:price),
|
|
OrderArticle.human_attribute_name(:total_price)
|
|
]
|
|
else
|
|
[
|
|
params[:first],
|
|
params[:second],
|
|
params[:third],
|
|
params[:fourth],
|
|
params[:fifth],
|
|
params[:sixth],
|
|
params[:seventh]
|
|
]
|
|
end
|
|
end
|
|
|
|
def data
|
|
@object.order_articles.ordered.includes(%i[article article_price]).all.map do |oa|
|
|
yield [
|
|
match_params(oa, header[0]),
|
|
match_params(oa, header[1]),
|
|
match_params(oa, header[2]),
|
|
match_params(oa, header[3]),
|
|
match_params(oa, header[4]),
|
|
match_params(oa, header[5]),
|
|
match_params(oa, header[6])
|
|
]
|
|
end
|
|
end
|
|
|
|
def match_params(object, attribute)
|
|
case attribute
|
|
when OrderArticle.human_attribute_name(:units_to_order)
|
|
object.units_to_order
|
|
when Article.human_attribute_name(:order_number)
|
|
object.article.order_number
|
|
when Article.human_attribute_name(:name)
|
|
object.article.name
|
|
when Article.human_attribute_name(:unit)
|
|
object.article.unit
|
|
when Article.human_attribute_name(:unit_quantity_short)
|
|
object.price.unit_quantity > 1 ? object.price.unit_quantity : nil
|
|
when ArticlePrice.human_attribute_name(:price)
|
|
number_to_currency(object.price.price * object.price.unit_quantity)
|
|
when OrderArticle.human_attribute_name(:total_price)
|
|
number_to_currency(object.total_price)
|
|
end
|
|
end
|
|
end
|