Import current_orders plugin from foodcoop-adam
This commit is contained in:
parent
ae4979a3f0
commit
5907ff11bb
43 changed files with 1031 additions and 0 deletions
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# encoding: utf-8
|
||||
class CurrentOrdersController < ApplicationController
|
||||
|
||||
before_filter :authenticate_orders
|
||||
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue