Last part of order refactoring. Now order_article create/update is possible.

This commit is contained in:
Benjamin Meichsner 2009-02-09 20:12:56 +01:00
parent 4d796b8e73
commit 6202e05841
14 changed files with 161 additions and 97 deletions

View file

@ -42,70 +42,86 @@ class Finance::BalancingController < ApplicationController
end
end
#TODO: Implement create/update of articles/article_prices...
# def new_order_article
# @order = Order.find(params[:id])
# order_article = @order.order_articles.build(:tax => 7, :deposit => 0)
# render :update do |page|
# page["edit_box"].replace_html :partial => "new_order_article", :locals => {:order_article => order_article}
# page["edit_box"].show
# end
# end
#
# def create_order_article
# @order = Order.find(params[:order_article][:order_id])
# order_article = OrderArticle.new(params[:order_article])
#
# render :update do |page|
# if order_article.save
# page["edit_box"].hide
# page["summary"].replace_html :partial => 'summary'
# page.insert_html :bottom, "result_table", :partial => "order_article_result", :locals => {:order_article => order_article}
# page["order_article_#{order_article.id}"].visual_effect :highlight, :duration => 2
# page["group_order_articles_#{order_article.id}"].show
# else
# page["edit_box"].replace_html :partial => "new_order_article", :locals => {:order_article => order_article}
# end
# end
# end
#
# def editArticleResult
# @article = OrderArticleResult.find(params[:id])
# render :update do |page|
# page["edit_box"].replace_html :partial => 'editArticleResult'
# page["edit_box"].show
# end
# end
#
# def updateArticleResult
# @article = OrderArticleResult.find(params[:id])
# @article.attributes=(params[:order_article_result]) # update attributes but doesn't save
# @article.make_gross
# @order = @article.order
# @ordered_articles = @order.order_article_results
# @group_orders = @order.group_order_results
# render :update do |page|
# if @article.save
# page["edit_box"].hide
# page["summary"].replace_html :partial => 'summary'
# page["summary"].visual_effect :highlight, :duration => 2
# page["order_article_result_#{@article.id}"].replace_html :partial => 'articleResult'
# page['order_article_result_'+@article.id.to_s].visual_effect :highlight, :delay => 0.5, :duration => 2
# page["group_order_article_results_#{@article.id}"].replace_html :partial => "groupOrderArticleResults"
# else
# page['edit_box'].replace_html :partial => 'editArticleResult'
# end
# end
# end
def new_order_article
@order = Order.find(params[:id])
render :update do |page|
page["edit_box"].replace_html :partial => "new_order_article"
page["edit_box"].show
end
end
def auto_complete_for_article_name
order = Order.find(params[:order_id])
type = order.stockit? ? "type = 'StockArticle'" : "type IS NULL"
@articles = Article.find(:all,
:conditions => [ "supplier_id = ? AND #{type} AND LOWER(name) LIKE ?",
order.supplier_id,
'%' + params[:article][:name].downcase + '%' ],
:order => 'name ASC',
:limit => 8)
render :partial => 'shared/auto_complete_articles'
end
def create_order_article
@order = Order.find(params[:order_id])
order_article = @order.order_articles.find_by_article_id(params[:order_article][:article_id])
unless order_article
# Article wasn't already assigned with this order, lets create a new one
order_article = @order.order_articles.build(params[:order_article])
order_article.article_price = order_article.article.article_prices.first
end
# Set units to order to 1, so the article is visible on page
order_article.units_to_order = 1
render :update do |page|
if order_article.save
page["edit_box"].hide
page.insert_html :top, "result_table", :partial => "order_article_result", :locals => {:order_article => order_article}
page["order_article_#{order_article.id}"].visual_effect :highlight, :duration => 2
page["group_order_articles_#{order_article.id}"].show
else
page["edit_box"].replace_html :partial => "new_order_article"
end
end
end
def edit_order_article
@order_article = OrderArticle.find(params[:id])
render :update do |page|
page["edit_box"].replace_html :partial => 'edit_order_article'
page["edit_box"].show
end
end
# Update this article and creates a new articleprice if neccessary
def update_order_article
@order_article = OrderArticle.find(params[:id])
begin
@order_article.update_article_and_price!(params[:article], params[:price], params[:order_article])
render :update do |page|
page["edit_box"].hide
page["summary"].replace_html :partial => 'summary', :locals => {:order => @order_article.order}
page["summary"].visual_effect :highlight, :duration => 2
page["order_article_#{@order_article.id}"].replace_html :partial => 'order_article', :locals => {:order_article => @order_article}
page["order_article_#{@order_article.id}"].visual_effect :highlight, :delay => 0.5, :duration => 2
page["group_order_articles_#{@order_article.id}"].replace_html :partial => "group_order_articles", :locals => {:order_article => @order_article}
end
rescue => @error
render :update do |page|
page['edit_box'].replace_html :partial => 'edit_order_article'
end
end
end
def destroy_order_article
order_article = OrderArticle.find(params[:id])
order_article.destroy
@order = order_article.order
render :update do |page|
page["order_article_#{order_article.id}"].remove
page["group_order_articles_#{order_article.id}"].remove
page["summary"].replace_html :partial => 'summary', :locals => {:order => @order}
page["summary"].replace_html :partial => 'summary', :locals => {:order => order_article.order}
page["summary"].visual_effect :highlight, :duration => 2
end
end
@ -139,6 +155,7 @@ class Finance::BalancingController < ApplicationController
goa.group_order.update_price! # Update the price attribute of new GroupOrder
order_article.update_results! if order_article.article.is_a?(StockArticle) # Update units_to_order of order_article
page["edit_box"].hide
page["order_article_#{order_article.id}"].replace_html :partial => 'order_article', :locals => {:order_article => order_article}
page["group_order_articles_#{order_article.id}"].replace_html :partial => 'group_order_articles',
:locals => {:order_article => order_article}
@ -168,6 +185,7 @@ class Finance::BalancingController < ApplicationController
goa.order_article.update_results! if goa.order_article.article.is_a?(StockArticle) # Update units_to_order of order_article
page["edit_box"].hide
page["order_article_#{goa.order_article.id}"].replace_html :partial => 'order_article', :locals => {:order_article => goa.order_article}
page["group_order_articles_#{goa.order_article.id}"].replace_html :partial => 'group_order_articles',
:locals => {:order_article => goa.order_article}
page["summary"].replace_html :partial => 'summary', :locals => {:order => goa.order_article.order}
@ -186,6 +204,7 @@ class Finance::BalancingController < ApplicationController
render :update do |page|
page["edit_box"].hide
page["order_article_#{goa.order_article.id}"].replace_html :partial => 'order_article', :locals => {:order_article => goa.order_article}
page["group_order_articles_#{goa.order_article.id}"].replace_html :partial => 'group_order_articles',
:locals => {:order_article => goa.order_article}
page["summary"].replace_html :partial => 'summary', :locals => {:order => goa.order_article.order}