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:
parent
1912a3fd80
commit
c17b63b192
37 changed files with 616 additions and 340 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
class StockitController < ApplicationController
|
||||
def index
|
||||
@articles = Article.in_stock
|
||||
@articles = StockArticle.all
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue