Merge remote-tracking branch 'bennibu/rails3' into rails3

Conflicts:
	app/controllers/articles_controller.rb
	app/views/articles/_form.html.haml
	app/views/articles/sync.html.haml
	app/views/finance/balancing/_edit_note.html.haml
	app/views/finance/group_order_articles/_form.html.haml
	app/views/finance/order_articles/_edit.html.haml
	app/views/finance/order_articles/_new.html.haml
	app/views/group_orders/show.html.haml
	app/views/invites/_modal_form.html.haml
This commit is contained in:
wvengen 2013-04-12 15:45:24 +02:00
commit f6ba21832d
15 changed files with 71 additions and 33 deletions

View file

@ -55,4 +55,7 @@ group :development do
# Get infos when not using proper eager loading # Get infos when not using proper eager loading
gem 'bullet' gem 'bullet'
# Hide assets requests in log
gem 'quiet_assets'
end end

View file

@ -126,6 +126,8 @@ GEM
prawn (0.12.0) prawn (0.12.0)
pdf-reader (>= 0.9.0) pdf-reader (>= 0.9.0)
ttfunk (~> 1.0.2) ttfunk (~> 1.0.2)
quiet_assets (1.0.2)
railties (>= 3.1, < 5.0)
rack (1.4.5) rack (1.4.5)
rack-cache (1.2) rack-cache (1.2)
rack (>= 0.4) rack (>= 0.4)
@ -237,6 +239,7 @@ DEPENDENCIES
meta_search meta_search
mysql2 mysql2
prawn prawn
quiet_assets
rails (~> 3.2.9) rails (~> 3.2.9)
resque resque
ruby-prof ruby-prof

View file

@ -74,12 +74,12 @@ class ArticlesController < ApplicationController
end end
# Updates all article of specific supplier # Updates all article of specific supplier
# deletes all articles from params[outlisted_articles]
def update_all def update_all
invalid_articles = false
begin begin
Article.transaction do Article.transaction do
unless params[:articles].blank? unless params[:articles].blank?
invalid_articles = false
# Update other article attributes... # Update other article attributes...
@articles = Article.find(params[:articles].keys) @articles = Article.find(params[:articles].keys)
@articles.each do |article| @articles.each do |article|
@ -88,25 +88,18 @@ class ArticlesController < ApplicationController
end end
end end
raise I18n.t('articles.update_all.error_invalid') if invalid_articles raise ActiveRecord::Rollback if invalid_articles # Rollback all changes
end
# delete articles
if params[:outlisted_articles]
params[:outlisted_articles].keys.each {|id| Article.find(id).mark_as_deleted }
end end
end end
end
if invalid_articles
# An error has occurred, transaction has been rolled back.
flash.now.alert = I18n.t('articles.update_all.error_invalid')
render :edit_all
else
# Successfully done. # Successfully done.
redirect_to supplier_articles_path(@supplier), notice: I18n.t('articles.update_all.notice') redirect_to supplier_articles_path(@supplier), notice: I18n.t('articles.update_all.notice')
rescue => e
# An error has occurred, transaction has been rolled back.
if params[:sync]
flash[:error] = I18n.t('articles.update_all.error_update', :article => current_article.name, :msg => e.message)
redirect_to(supplier_articles_path(@supplier))
else
flash.now.alert = e.message
render :edit_all
end
end end
end end
@ -232,4 +225,33 @@ class ArticlesController < ApplicationController
redirect_to supplier_articles_path(@supplier), :notice => I18n.t('articles.sync.notice') redirect_to supplier_articles_path(@supplier), :notice => I18n.t('articles.sync.notice')
end end
end end
# Updates, deletes articles when sync form is submitted
def update_synchronized
begin
Article.transaction do
# delete articles
if params[:outlisted_articles]
Article.find(params[:outlisted_articles].keys).each(&:mark_as_deleted)
end
# Update articles
params[:articles].each do |id, attrs|
Article.find(id).update_attributes! attrs
end
end
# Successfully done.
redirect_to supplier_articles_path(@supplier), notice: I18n.t('articles.update_synchronized.notice')
rescue ActiveRecord::RecordInvalid => invalid
# An error has occurred, transaction has been rolled back.
redirect_to supplier_articles_path(@supplier),
alert: I18n.t('articles.update_synchronized.error_update', :article => invalid.record.name, :msg => invalid.record.errors.full_messages)
rescue => error
redirect_to supplier_articles_path(@supplier),
alert: I18n.t('errors.general_msg', :msg => error.message)
end
end
end end

View file

@ -158,7 +158,7 @@ class Order < ActiveRecord::Base
goa.save_results! goa.save_results!
# Delete no longer required order-history (group_order_article_quantities) and # Delete no longer required order-history (group_order_article_quantities) and
# TODO: Do we need articles, which aren't ordered? (units_to_order == 0 ?) # TODO: Do we need articles, which aren't ordered? (units_to_order == 0 ?)
goa.group_order_article_quantities.clear #goa.group_order_article_quantities.clear
end end
end end

View file

@ -2,7 +2,7 @@
= f.hidden_field :shared_updated_on = f.hidden_field :shared_updated_on
= f.hidden_field :supplier_id = f.hidden_field :supplier_id
.modal-header .modal-header
= button_tag t('ui.marks.close').html_safe, class: 'close', data: {dismiss: 'modal'} = link_to t('ui.marks.close').html_safe, '#', class: 'close', data: {dismiss: 'modal'}
%h3= t '.title' %h3= t '.title'
.modal-body .modal-body
= f.input :availability = f.input :availability
@ -19,6 +19,6 @@
= f.input :tax = f.input :tax
= f.input :deposit = f.input :deposit
.modal-footer .modal-footer
= button_tag t('ui.close'), class: 'btn', data: {dismiss: 'modal'} = link_to t('ui.close'), '#', class: 'btn', data: {dismiss: 'modal'}
= f.submit class: 'btn btn-primary' = f.submit class: 'btn btn-primary'

View file

@ -1,6 +1,6 @@
- title 'Artikel mit externer Datenbank synchronisieren' - title 'Artikel mit externer Datenbank synchronisieren'
= form_tag update_all_supplier_articles_path(@supplier, :sync => "1") do = form_tag update_synchronized_supplier_articles_path(@supplier) do
%h2= t '.outlist.title' %h2= t '.outlist.title'
%p %p
- unless @outlisted_articles.empty? - unless @outlisted_articles.empty?
@ -10,6 +10,9 @@
%li %li
= hidden_field_tag "outlisted_articles[#{article.id}]", '1' = hidden_field_tag "outlisted_articles[#{article.id}]", '1'
= article.name = article.name
- if article.in_open_order
.alert
Achtung, #{article.name} wird gerade in einer laufenden Bestellung verwendet. Bitte erst Bestellung anpassen.
- else - else
%i= t '.outlist.body_skip' %i= t '.outlist.body_skip'
%hr/ %hr/

View file

@ -1,9 +1,10 @@
= simple_form_for @order, url: update_note_finance_order_path(@order), remote: true, method: :put do |f| = simple_form_for @order, url: update_note_finance_order_path(@order), remote: true, method: :put do |f|
.modal-header .modal-header
= button_tag t('ui.marks.close').html_safe, class: 'close', data: {dismiss: 'modal'} = link_to t('ui.marks.close').html_safe, '#', class: 'close', data: {dismiss: 'modal'}
%h3 Notiz bearbeiten %h3 Notiz bearbeiten
.modal-body .modal-body
= f.input :note, input_html: {class: 'input-xlarge'} = f.input :note, input_html: {class: 'input-xlarge'}
.modal-footer .modal-footer
= button_tag t('ui.close'), class: 'btn', data: {dismiss: 'modal'} = link_to t('ui.close'), '#', class: 'btn', data: {dismiss: 'modal'}
= f.submit , class: 'btn btn-primary' = f.submit t('ui.save'), class: 'btn btn-primary'

View file

@ -1,11 +1,11 @@
= simple_form_for [:finance, @group_order_article], remote: true do |form| = simple_form_for [:finance, @group_order_article], remote: true do |form|
= form.hidden_field :order_article_id = form.hidden_field :order_article_id
.modal-header .modal-header
= button_tag "x", class: 'close', data: {dismiss: 'modal'} = link_to t('ui.marks.close').html_safe, '#', class: 'close', data: {dismiss: 'modal'}
%h3= t('.amount_change_for', article: @order_article.article.name) %h3= t('.amount_change_for', article: @order_article.article.name)
.modal-body .modal-body
= form.input :ordergroup_id, as: :select, collection: Ordergroup.all.map { |g| [g.name, g.id] } = form.input :ordergroup_id, as: :select, collection: Ordergroup.all.map { |g| [g.name, g.id] }
= form.input :result, hint: "Einheit: #{@order_article.article.unit}" = form.input :result, hint: "Einheit: #{@order_article.article.unit}"
.modal-footer .modal-footer
= button_tag t('ui.close'), class: 'btn', data: {dismiss: 'modal'} = link_to t('ui.close'), '#', class: 'btn', data: {dismiss: 'modal'}
= form.submit t('ui.save'), class: 'btn btn-primary' = form.submit t('ui.save'), class: 'btn btn-primary'

View file

@ -1,6 +1,6 @@
= simple_form_for [:finance, @order, @order_article], remote: true do |form| = simple_form_for [:finance, @order, @order_article], remote: true do |form|
.modal-header .modal-header
= button_tag t('ui.marks.close').html_safe, class: 'close', data: {dismiss: 'modal'} = link_to t('ui.marks.close').html_safe, '#', class: 'close', data: {dismiss: 'modal'}
%h3= t '.title' %h3= t '.title'
.modal-body .modal-body
= form.input :units_to_order = form.input :units_to_order
@ -20,5 +20,5 @@
= f.input :deposit = f.input :deposit
= form.input :update_current_price, as: :boolean = form.input :update_current_price, as: :boolean
.modal-footer .modal-footer
= button_tag t('ui.close'), class: 'btn', data: {dismiss: 'modal'} = link_to t('ui.close'), '#', class: 'btn', data: {dismiss: 'modal'}
= form.submit class: 'btn btn-primary' = form.submit class: 'btn btn-primary'

View file

@ -1,9 +1,9 @@
= simple_form_for [:finance, @order, @order_article], remote: true do |form| = simple_form_for [:finance, @order, @order_article], remote: true do |form|
.modal-header .modal-header
= button_tag t('ui.marks.close').html_safe, class: 'close', data: {dismiss: 'modal'} = link_to t('ui.marks.close').html_safe, '#', class: 'close', data: {dismiss: 'modal'}
%h3= t '.title' %h3= t '.title'
.modal-body .modal-body
= form.input :article_id, as: :select, collection: new_order_articles_collection = form.input :article_id, as: :select, collection: new_order_articles_collection
.modal-footer .modal-footer
= button_tag t('ui.close'), class: 'btn', data: {dismiss: 'modal'} = link_to t('ui.close'), '#', class: 'btn', data: {dismiss: 'modal'}
= form.submit class: 'btn btn-primary' = form.submit class: 'btn btn-primary'

View file

@ -1,2 +1,3 @@
$('#modalContainer').modal('hide'); $('#modalContainer').modal('hide');
$('#result_table').prepend('#{j(render('finance/balancing/order_article_result', order_article: @order_article))}'); $('#result_table').prepend('#{j(render('finance/balancing/order_article_result', order_article: @order_article))}');
$('#summaryChangedWarning').show();

View file

@ -1,2 +1,4 @@
$('#modalContainer').modal('hide'); $('#modalContainer').modal('hide');
$('#order_article_#{@order_article.id}').html('#{j(render('finance/balancing/order_article', order_article: @order_article))}'); $('#order_article_#{@order_article.id}').html('#{j(render('finance/balancing/order_article', order_article: @order_article))}');
$('#group_order_articles_#{@order_article.id}').html('#{j(render('finance/balancing/group_order_articles', order_article: @order_article))}');
$('#summaryChangedWarning').show();

View file

@ -1,6 +1,6 @@
= simple_form_for @invite, remote: true do |form| = simple_form_for @invite, remote: true do |form|
.modal-header .modal-header
= button_tag t('ui.marks.close').html_safe, class: 'close', data: {dismiss: 'modal'} = link_to t('ui.marks.close').html_safe, '#', class: 'close', data: {dismiss: 'modal'}
%h3= t '.title' %h3= t '.title'
.modal-body .modal-body
= t('.body', group: @invite.group.name).html_safe = t('.body', group: @invite.group.name).html_safe
@ -8,5 +8,5 @@
= form.hidden_field :group_id = form.hidden_field :group_id
= form.input :email = form.input :email
.modal-footer .modal-footer
= button_tag t('ui.close'), class: 'btn', data: {dismiss: 'modal'} = link_to t('ui.close'), '#', class: 'btn', data: {dismiss: 'modal'}
= form.submit class: 'btn btn-primary' = form.submit class: 'btn btn-primary'

View file

@ -94,7 +94,6 @@ de:
update_all: update_all:
notice: 'Alle Artikel und Preise wurden aktualisiert' notice: 'Alle Artikel und Preise wurden aktualisiert'
error_invalid: 'Artikel sind fehlerhaft. Bitte überprüfe Deine Eingaben.' error_invalid: 'Artikel sind fehlerhaft. Bitte überprüfe Deine Eingaben.'
error_update: "Es trat ein Fehler beim Aktualisieren des Artikels '%{article}' auf: %{msg}"
update_selected: update_selected:
notice_destroy: 'Alle gewählten Artikel wurden gelöscht' notice_destroy: 'Alle gewählten Artikel wurden gelöscht'
notice_unavail: 'Alle gewählten Artikel wurden auf "nicht verfügbar" gesetzt' notice_unavail: 'Alle gewählten Artikel wurden auf "nicht verfügbar" gesetzt'
@ -110,6 +109,9 @@ de:
sync: sync:
shared_alert: '%{supplier} ist nicht mit einer externen Datenbank verknüpft.' shared_alert: '%{supplier} ist nicht mit einer externen Datenbank verknüpft.'
notice: 'Der Katalog ist aktuell' notice: 'Der Katalog ist aktuell'
update_synchronized:
notice: 'Alle Artikel und Preise wurden aktualisiert'
error_update: "Es trat ein Fehler beim Aktualisieren des Artikels '%{article}' auf: %{msg}"
# used by model # used by model
model: model:

View file

@ -117,6 +117,7 @@ Foodsoft::Application.routes.draw do
get :shared get :shared
get :import get :import
post :sync post :sync
post :update_synchronized
end end
end end
end end