Second part of stock-integration.

Introduced StockArticle and a special page for ordering from stock. StockChanges will be created and the StockArticle.quantity
updated in 'order.close!'.
This commit is contained in:
Benjamin Meichsner 2009-02-06 16:26:35 +01:00
parent 1912a3fd80
commit c17b63b192
37 changed files with 616 additions and 340 deletions

View file

@ -22,17 +22,14 @@ class DeliveriesController < ApplicationController
def new
@delivery = @supplier.deliveries.build
3.times { @delivery.stock_changes.build }
@supplier.stock_articles.each { |article| @delivery.stock_changes.build(:stock_article => article) }
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @delivery }
end
end
def edit
@delivery = Delivery.find(params[:id])
end
def create
@delivery = Delivery.new(params[:delivery])
@ -48,8 +45,10 @@ class DeliveriesController < ApplicationController
end
end
# PUT /deliveries/1
# PUT /deliveries/1.xml
def edit
@delivery = Delivery.find(params[:id])
end
def update
@delivery = Delivery.find(params[:id])
@ -75,12 +74,29 @@ class DeliveriesController < ApplicationController
end
end
def add_stock_article
article = @supplier.stock_articles.build(params[:stock_article])
render :update do |page|
if article.save
logger.debug "new StockArticle: #{article.id}"
page.insert_html :top, 'stock_changes', :partial => 'stock_change',
:locals => {:stock_change => article.stock_changes.build}
page.replace_html 'new_stock_article', :partial => 'new_stock_article',
:locals => {:stock_article => @supplier.stock_articles.build}
else
page.replace_html 'new_stock_article', :partial => 'new_stock_article',
:locals => {:stock_article => article}
end
end
end
def drop_stock_change
stock_change = StockChange.find(params[:stock_change_id])
stock_change.destroy
render :update do |page|
page.visual_effect(:DropOut, "stock_change_#{stock_change.id}")
page.visual_effect :DropOut, "stock_change_#{stock_change.id}"
end
end
end

View file

@ -136,7 +136,8 @@ class Finance::BalancingController < ApplicationController
render :update do |page|
if goa.save
goa.group_order.update_price! # Updates the price attribute of new GroupOrder
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["group_order_articles_#{order_article.id}"].replace_html :partial => 'group_order_articles',
@ -163,7 +164,8 @@ class Finance::BalancingController < ApplicationController
render :update do |page|
if goa.update_attributes(params[:group_order_article])
goa.group_order.update_price! # Updates the price attribute of new GroupOrder
goa.group_order.update_price! # Update the price attribute of new GroupOrder
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["group_order_articles_#{goa.order_article.id}"].replace_html :partial => 'group_order_articles',
@ -180,7 +182,8 @@ class Finance::BalancingController < ApplicationController
goa = GroupOrderArticle.find(params[:id])
goa.destroy
goa.group_order.update_price! # Updates the price attribute of new GroupOrder
goa.order_article.update_results! if goa.order_article.article.is_a?(StockArticle) # Update units_to_order of order_article
render :update do |page|
page["edit_box"].hide
page["group_order_articles_#{goa.order_article.id}"].replace_html :partial => 'group_order_articles',

View file

@ -3,18 +3,18 @@
class OrderingController < ApplicationController
# Security
before_filter :ensure_ordergroup_member
before_filter :ensure_open_order, :only => [:order, :saveOrder]
before_filter :ensure_open_order, :only => [:order, :stock_order, :saveOrder]
verify :method => :post, :only => [:saveOrder], :redirect_to => {:action => :index}
# Index page.
def index
def index
end
# Edit a current order.
def order
@open_orders = Order.open
@other_orders = @open_orders.reject{|order| order == @order}
def order
redirect_to :action => 'stock_order', :id => @order if @order.stockit?
# Load order article data...
@articles_grouped_by_category = @order.articles_grouped_by_category
# save results of earlier orders in array
@ -59,6 +59,47 @@ class OrderingController < ApplicationController
end
end
end
def stock_order
# Load order article data...
@articles_grouped_by_category = @order.articles_grouped_by_category
# save results of earlier orders in array
ordered_articles = Array.new
@group_order = @order.group_orders.find(:first,
:conditions => "ordergroup_id = #{@ordergroup.id}", :include => :group_order_articles)
if @group_order
# Group has already ordered, so get the results...
for goa in @group_order.group_order_articles
ordered_articles[goa.order_article_id] = {:quantity => goa.quantity,
:tolerance => goa.tolerance,
:quantity_result => goa.result(:quantity),
:tolerance_result => goa.result(:tolerance)}
end
@version = @group_order.lock_version
@availableFunds = @ordergroup.get_available_funds(@group_order)
else
@version = 0
@availableFunds = @ordergroup.get_available_funds
end
# load prices ....
@price = Array.new; @quantity_available = Array.new
@others_quantity = Array.new; @quantity = Array.new; @quantity_result = Array.new; @used_quantity = Array.new; @unused_quantity = Array.new
i = 0;
@articles_grouped_by_category.each do |category_name, order_articles|
for order_article in order_articles
# price/unit size
@price[i] = order_article.article.fc_price
@quantity_available[i] = order_article.article.quantity_available(@order)
# quantity
@quantity[i] = (ordered_articles[order_article.id] ? ordered_articles[order_article.id][:quantity] : 0)
@others_quantity[i] = order_article.quantity - @quantity[i]
@used_quantity[i] = (ordered_articles[order_article.id] ? ordered_articles[order_article.id][:quantity_result] : 0)
i += 1
end
end
end
# Update changes to a current order.
def saveOrder

View file

@ -1,6 +1,6 @@
class StockitController < ApplicationController
def index
@articles = Article.in_stock
@articles = StockArticle.all
end
end