Fix and cleanup stock takings (PR #667)

This commit is contained in:
JuliusR 2019-05-14 16:24:41 +02:00 committed by wvengen
parent c38abedf2a
commit 2d0a81c92d
7 changed files with 38 additions and 62 deletions

View file

@ -10,6 +10,13 @@ class StockTakingsController < ApplicationController
StockArticle.undeleted.each { |a| @stock_taking.stock_changes.build(:stock_article => a) } StockArticle.undeleted.each { |a| @stock_taking.stock_changes.build(:stock_article => a) }
end end
def new_on_stock_article_create # See publish/subscribe design pattern in /doc.
stock_article = StockArticle.find(params[:stock_article_id])
@stock_change = StockChange.new(:stock_article => stock_article)
render :layout => false
end
def create def create
create!(:notice => I18n.t('stock_takings.create.notice')) create!(:notice => I18n.t('stock_takings.create.notice'))
end end
@ -17,39 +24,4 @@ class StockTakingsController < ApplicationController
def update def update
update!(:notice => I18n.t('stock_takings.update.notice')) update!(:notice => I18n.t('stock_takings.update.notice'))
end end
def fill_new_stock_article_form
article = Article.find(params[:article_id])
supplier = article.supplier
stock_article = supplier.stock_articles.build(
article.attributes.reject { |attr| attr == ('id' || 'type')}
)
render :partial => 'stock_article_form', :locals => {:stock_article => stock_article}
end
def add_stock_article
article = StockArticle.new(params[:stock_article])
render :update do |page|
if article.save
page.insert_html :top, 'stock_changes', :partial => 'stock_change',
:locals => {:stock_change => article.stock_changes.build}
page.replace_html 'new_stock_article', :partial => 'stock_article_form',
:locals => {:stock_article => StockArticle.new}
else
page.replace_html 'new_stock_article', :partial => 'stock_article_form',
: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}"
end
end
end end

View file

@ -86,14 +86,4 @@ class StockitController < ApplicationController
@articles = Article.not_in_stock.limit(8).where('name LIKE ?', "%#{params[:term]}%") @articles = Article.not_in_stock.limit(8).where('name LIKE ?', "%#{params[:term]}%")
render :json => @articles.map(&:name) render :json => @articles.map(&:name)
end end
def fill_new_stock_article_form
article = Article.find(params[:article_id])
@supplier = article.supplier
stock_article = @supplier.stock_articles.build(
article.attributes.reject { |attr| attr == ('id' || 'type')}
)
render :partial => 'form', :locals => {:stock_article => stock_article}
end
end end

View file

@ -1,13 +0,0 @@
- simple_form_for stock_article, url: add_stock_article_stock_takings_path, remote: true do |f|
= f.association :supplier
= f.input :name
= f.input :unit
= f.input :note
= f.input :price
= f.input :tax, :wrapper => :append do
= f.input_field :tax
%span.add-on %
-# untested, because this view is currently not included (?)
= f.input :deposit
= f.association :article_category
= f.submit

View file

@ -1,6 +1,6 @@
- title t('.title') - title t('.title')
- simple_form_for(@stock_taking) do |f| = simple_form_for(@stock_taking) do |f|
= f.input :date = f.input :date
= f.input :note = f.input :note
= f.submit = f.submit

View file

@ -1,9 +1,23 @@
- title t('.title') - title t('.title')
- content_for :javascript do
:javascript
$(function() {
// Subscribe to database changes.
// See publish/subscribe design pattern in /doc.
$(document).on('StockArticle#create', function(e) {
$.ajax({
url: '#{new_on_stock_article_create_stock_takings_path}',
type: 'get',
data: {stock_article_id: e.stock_article_id},
contentType: 'application/json; charset=UTF-8'
});
});
});
- content_for :sidebar do - content_for :sidebar do
%p %p
%i= t('.text_deviations', inv_link: link_to(t('.temp_inventory'), stock_articles_path)).html_safe %i= t('.text_deviations', inv_link: link_to(t('.temp_inventory'), stock_articles_path)).html_safe
%p= t('.text_need_articles', create_link: link_to(t('.create'), new_stock_article_path)).html_safe %p= t('.text_need_articles', create_link: link_to(t('.create'), new_stock_article_path, :remote => true)).html_safe
= simple_form_for(@stock_taking) do |f| = simple_form_for(@stock_taking) do |f|
= f.input :date, as: :date_picker = f.input :date, as: :date_picker

View file

@ -0,0 +1,14 @@
// Handle more advanced DOM update after AJAX database manipulation.
// See publish/subscribe design pattern in /doc.
(function() {
$('#stock_changes p').removeClass('alert alert-success');
var stock_change = $('<%= j(render(
:partial => 'stock_change',
:locals => {
:stock_change => @stock_change
}
)) %>').addClass('alert alert-success');
$('#stock_changes').prepend(stock_change);
})();

View file

@ -96,8 +96,7 @@ Foodsoft::Application.routes.draw do
resources :stock_takings do resources :stock_takings do
collection do collection do
get :fill_new_stock_article_form get :new_on_stock_article_create
post :add_stock_article
end end
end end