Import current_orders plugin from foodcoop-adam

This commit is contained in:
wvengen 2015-04-10 20:18:49 +02:00
parent ae4979a3f0
commit 5907ff11bb
43 changed files with 1031 additions and 0 deletions

View file

@ -0,0 +1,43 @@
# encoding: utf-8
class CurrentOrders::ArticlesController < ApplicationController
before_filter :authenticate_orders
before_filter :find_order_and_order_article, only: [:index, :show]
def index
# sometimes need to pass id as parameter for forms
show if @order_article
end
def show
respond_to do |format|
format.html { render :show }
format.js { render :show, layout: false }
end
end
def show_on_group_order_article_create
@goa = GroupOrderArticle.find(params[:group_order_article_id])
end
def show_on_group_order_article_update
#@goa = GroupOrderArticle.find(params[:group_order_article_id])
end
protected
def find_order_and_order_article
@current_orders = Order.finished_not_closed
unless params[:order_id].blank?
@order = Order.find(params[:order_id])
@order_articles = @order.order_articles
else
@order_articles = OrderArticle.where(order_id: @current_orders.all.map(&:id))
end
params[:q] ||= params[:search] # for meta_search instead of ransack
@q = OrderArticle.search(params[:q])
@order_articles = @order_articles.ordered.merge(@q.relation).includes(:article, :article_price)
@order_article = @order_articles.where(id: params[:id]).first
end
end

View file

@ -0,0 +1,26 @@
class CurrentOrders::GroupOrdersController < ApplicationController
# Security
before_filter :ensure_ordergroup_member
def index
# XXX code duplication lib/foodsoft_current_orders/app/controllers/current_orders/ordergroups_controller.rb
@order_ids = Order.where(state: ['open', 'finished']).all.map(&:id)
@goas = GroupOrderArticle.includes(:group_order => :ordergroup).includes(:order_article).
where(group_orders: {order_id: @order_ids, ordergroup_id: @ordergroup.id}).ordered
@articles_grouped_by_category = @goas.includes(:order_article => {:article => :article_category}).
order('articles.name').
group_by { |a| a.order_article.article.article_category.name }.
sort { |a, b| a[0] <=> b[0] }
end
private
# XXX code duplication from GroupOrdersController
def ensure_ordergroup_member
@ordergroup = @current_user.ordergroup
if @ordergroup.nil?
redirect_to root_url, :alert => I18n.t('group_orders.errors.no_member')
end
end
end

View file

@ -0,0 +1,43 @@
# encoding: utf-8
class CurrentOrders::OrdergroupsController < ApplicationController
before_filter :authenticate_orders
before_filter :find_group_orders, only: [:index, :show]
def index
# sometimes need to pass id as parameter for forms
render 'show' if @ordergroup
end
def show
respond_to do |format|
format.html { render :show }
format.js { render :show, layout: false }
end
end
def show_on_group_order_article_create
@goa = GroupOrderArticle.find(params[:group_order_article_id])
end
def show_on_group_order_article_update
#@goa = GroupOrderArticle.find(params[:group_order_article_id])
@group_order = GroupOrder.find(params[:group_order_id])
@ordergroup = @group_order.ordergroup
end
protected
def find_group_orders
@order_ids = Order.finished_not_closed.map(&:id)
@all_ordergroups = Ordergroup.undeleted.order(:name).all
@ordered_group_ids = GroupOrder.where(order_id: @order_ids).pluck('DISTINCT(ordergroup_id)')
@all_ordergroups.sort_by! {|o| @ordered_group_ids.include?(o.id) ? o.name : "ZZZZZ#{o.name}" }
@ordergroup = Ordergroup.find(params[:id]) unless params[:id].nil?
@goas = GroupOrderArticle.includes(:group_order, :order_article => [:article, :article_price]).
where(group_orders: {order_id: @order_ids, ordergroup_id: @ordergroup.id}).ordered.all unless @ordergroup.nil?
end
end

View file

@ -0,0 +1,40 @@
class CurrentOrders::OrdersController < ApplicationController
before_filter :authenticate_orders, except: :my
def show
@doc_options ||= {}
@order_ids = if params[:id]
params[:id].split('+').map(&:to_i)
else
Order.finished_not_closed.all.map(&:id)
end
@view = (params[:view] or 'default').gsub(/[^-_a-zA-Z0-9]/, '')
respond_to do |format|
format.pdf do
pdf = case params[:document]
when 'groups' then MultipleOrdersByGroups.new(@order_ids, @doc_options)
when 'articles' then MultipleOrdersByArticles.new(@order_ids, @doc_options)
end
send_data pdf.to_pdf, filename: pdf.filename, type: 'application/pdf'
end
end
end
def my
@doc_options ||= {}
@doc_options[:ordergroup] = @current_user.ordergroup.id
respond_to do |format|
format.pdf do
params[:document] = 'groups'
show
end
end
end
def receive
@orders = Order.finished_not_closed.includes(:supplier)
end
end

View file

@ -0,0 +1,6 @@
# encoding: utf-8
class CurrentOrdersController < ApplicationController
before_filter :authenticate_orders
end