diff --git a/app/controllers/articles_controller.rb b/app/controllers/articles_controller.rb index 0d7a7a84..2dfa956a 100644 --- a/app/controllers/articles_controller.rb +++ b/app/controllers/articles_controller.rb @@ -28,8 +28,8 @@ class ArticlesController < ApplicationController # if somebody uses the search field: conditions = ["articles.name LIKE ?", "%#{params[:query]}%"] unless params[:query].nil? - @total = @supplier.articles.not_in_stock.count(:conditions => conditions) - @articles = @supplier.articles.not_in_stock.paginate(:order => sort, + @total = @supplier.articles.count(:conditions => conditions) + @articles = @supplier.articles.paginate(:order => sort, :conditions => conditions, :page => params[:page], :per_page => @per_page, @@ -136,10 +136,7 @@ class ArticlesController < ApplicationController # Renders a form for editing all articles from a supplier def edit_all - @articles = @supplier.articles.not_in_stock.find :all, - :order => 'article_categories.name, articles.name', - :include => [:article_category] - + @articles = @supplier.articles.all end # Updates all article of specific supplier @@ -309,15 +306,15 @@ class ArticlesController < ApplicationController def sync # check if there is an shared_supplier unless @supplier.shared_supplier - flash[:error]= @supplier.name + _(" ist not assigned to an external database.") + flash[:error]= "#{@supplier.name} ist nicht mit einer externen Datenbank verknüpft." redirect_to supplier_articles_path(@supplier) end # sync articles against external database @updated_articles, @outlisted_articles = @supplier.sync_all - # convert to db-compatible-string + # convert to db-compatible-string @updated_articles.each {|a, b| a.shared_updated_on = a.shared_updated_on.to_formatted_s(:db)} if @updated_articles.empty? && @outlisted_articles.empty? - flash[:notice] = _("The database is up to date.") + flash[:notice] = "Der Katalog ist aktuell." redirect_to supplier_articles_path(@supplier) end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 1b3c0392..f03c5006 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -107,14 +107,18 @@ module ApplicationHelper icons = { :delete => { :file => 'b_drop.png', :alt => 'Löschen'}, :edit => { :file => 'b_edit.png', :alt => 'Bearbeiten'}} options.merge!({:size => '16x16',:border => "0"}) - options.merge!({:alt => icons[name][:alt]}) unless options[:alt] + options.merge!({:alt => icons[name][:alt], :title => icons[name][:alt]}) unless options[:alt] image_tag icons[name][:file], options end # Remote links with default 'loader'.gif during request def remote_link_to(text, options={}) - remote_options = {:before => "Element.show('loader')", :success => "Element.hide('loader')"} + remote_options = { + :before => "Element.show('loader')", + :success => "Element.hide('loader')", + :method => :get + } link_to_remote(text, remote_options.merge(options)) end diff --git a/app/helpers/articles_helper.rb b/app/helpers/articles_helper.rb index 563c5093..f6b2458f 100644 --- a/app/helpers/articles_helper.rb +++ b/app/helpers/articles_helper.rb @@ -6,8 +6,8 @@ module ArticlesHelper end def row_classes(article) - classes = "" - classes += ' unavailable' if article.availability + classes = " click-me" + classes += " unavailable" if !article.availability classes += " just_updated" if @article.recently_updated && @article.availability classes end diff --git a/app/helpers/deliveries_helper.rb b/app/helpers/deliveries_helper.rb index 20c97887..f52913b5 100644 --- a/app/helpers/deliveries_helper.rb +++ b/app/helpers/deliveries_helper.rb @@ -1,13 +1,4 @@ module DeliveriesHelper - def articles_for_select(supplier) - supplier.articles.find(:all, :limit => 10).collect { |a| [truncate(a.name), a.id] } - end - - def add_article_link - link_to_function "Artikel hinzufügen", nil, { :accesskey => 'n', :title => "ALT + SHIFT + N" } do |page| - page.insert_html :bottom, :stock_changes, :partial => 'stock_change', :object => StockChange.new - end - end def link_to_invoice(delivery) if delivery.invoice diff --git a/app/models/article.rb b/app/models/article.rb index bc538973..e2ab03c2 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -35,7 +35,6 @@ class Article < ActiveRecord::Base has_many :article_prices, :order => "created_at" named_scope :available, :conditions => {:availability => true} - named_scope :not_in_stock, :conditions => {:type => nil} # Validations validates_presence_of :name, :unit, :price, :tax, :deposit, :unit_quantity, :supplier_id, :article_category_id diff --git a/app/models/supplier.rb b/app/models/supplier.rb index ae978f68..77231dd0 100644 --- a/app/models/supplier.rb +++ b/app/models/supplier.rb @@ -24,9 +24,9 @@ class Supplier < ActiveRecord::Base acts_as_paranoid # Avoid deleting the supplier for consistency of order-results - has_many :articles, :dependent => :destroy, + has_many :articles, :dependent => :destroy, :conditions => {:type => nil}, :include => [:article_category], :order => 'article_categories.name, articles.name' - has_many :stock_articles + has_many :stock_articles, :include => [:article_category], :order => 'article_categories.name, articles.name' has_many :orders has_many :deliveries has_many :invoices @@ -51,13 +51,11 @@ class Supplier < ActiveRecord::Base for article in articles # try to find the associated shared_article shared_article = article.shared_article - if shared_article - # article will be updated + + if shared_article # article will be updated - # skip if shared_article has not been changed unequal_attributes = article.shared_article_changed? - unless unequal_attributes.blank? - # update objekt but don't save it + unless unequal_attributes.blank? # skip if shared_article has not been changed # try to convert different units new_price, new_unit_quantity = article.convert_units diff --git a/app/views/articles/_article_row.rhtml b/app/views/articles/_article_row.rhtml index 9ccab935..7ad87f48 100644 --- a/app/views/articles/_article_row.rhtml +++ b/app/views/articles/_article_row.rhtml @@ -10,23 +10,18 @@ <%= @article.unit_quantity -%> + | Brutto: <%= number_to_currency(@article.gross_price) -%>"> <%= number_to_currency(@article.price) -%> <%= number_to_percentage(@article.tax) if @article.tax != 0 -%> <%= number_to_currency(@article.deposit) if @article.deposit != 0 -%> - <%= link_to_remote icon(:edit, :onclick => "checkRow('#{@article.id.to_s}')"), - :url => edit_supplier_article_path(@supplier, @article), - :method => :get, - :before => "Element.show('loader')", - :success => "Element.hide('loader')" %> - <%= link_to_remote icon(:delete, :onclick => "checkRow('#{@article.id.to_s}')"), + <%= remote_link_to icon(:edit, :onclick => "checkRow('#{@article.id.to_s}')"), + :url => edit_supplier_article_path(@supplier, @article) %> + <%= remote_link_to icon(:delete, :onclick => "checkRow('#{@article.id.to_s}')"), :url => [@supplier, @article], :method => :delete, - :confirm => 'Bist du sicher?', - :before => "Element.show('loader')", - :success => "Element.hide('loader')" %> + :confirm => 'Bist du sicher?' %> \ No newline at end of file diff --git a/app/views/articles/_articles.html.haml b/app/views/articles/_articles.html.haml index 52903422..78c804e1 100644 --- a/app/views/articles/_articles.html.haml +++ b/app/views/articles/_articles.html.haml @@ -1,5 +1,5 @@ %p - =_ 'Number of found articles :' + Gefundene Artikel: %b= @total %p @@ -16,18 +16,18 @@ %tr %th %th[sort_td_class_helper "name"] - = sort_link_helper _("Name"), "name" + = sort_link_helper "Name", "name" %th %th[sort_td_class_helper "category"] - = sort_link_helper _("Category"), "category" + = sort_link_helper "Kategorie", "category" %th[sort_td_class_helper "unit"] - = sort_link_helper _("Unit"), "unit" + = sort_link_helper "Einheit", "unit" %th[sort_td_class_helper "note"] - = sort_link_helper _("Note"), "note" - %th{:style => "width: 4em;"}=_ 'UnitQu' - %th{:style => "width: 4em;"}=_ 'Price' - %th{:style => "width: 3.5em;"}=_ 'Tax' - %th{:style => "width: 4em;"}=_ 'Deposit' + = sort_link_helper "Notiz", "note" + %th{:style => "width: 4em;"} Gebgr. + %th{:style => "width: 4em;"} Preis + %th{:style => "width: 3.5em;"} MwSt + %th{:style => "width: 4em;"} Pfand %th{:style => "width: 3em;"} %tbody#listbody @@ -47,14 +47,10 @@ %option{:value => "setAvailable", :onclick => 'formSubmit();'} Artikel sind verfügbar = hidden_field_tag 'supplier_id', @supplier.id -%p - = pagination_links_remote @articles, :params => {:sort => params[:sort]} - -:plain - - - \ No newline at end of file + +%p= pagination_links_remote @articles, :params => {:sort => params[:sort]} + +:javascript + function formSubmit() { + $("articlesInListForm").submit() + } \ No newline at end of file diff --git a/app/views/articles/index.haml b/app/views/articles/index.haml index 9a5947e0..705b8850 100644 --- a/app/views/articles/index.haml +++ b/app/views/articles/index.haml @@ -2,18 +2,18 @@ // import menu - unless @supplier.shared_supplier.nil? - .menu{:style => 'width: 14em'} + .menu{:style => 'width: 16em'} %ul %li - =_ 'External database' + Zugriff auf externe Datenbank %ul - %li= link_to_function _('search/import'), "Element.toggle('import')" - %li= link_to _('sync'), sync_supplier_articles_path(@supplier), :method => :post + %li= link_to_function "Suchen/Importieren", "Element.toggle('import')" + %li= link_to "Synchronisieren", sync_supplier_articles_path(@supplier), :method => :post #change_supplier{:style => "padding:0 0 0.5em 0.7em;"} %span{:style => "float:left"} - =_ 'Change supplier:' + Lieferant wechseln: - form_tag do = select_tag :switch_supplier, | options_for_select( Supplier.all(:order => 'name').collect {|s| [s.name, url_for(supplier_articles_path(s))] }, | @@ -24,50 +24,50 @@ - unless @supplier.shared_supplier.nil? #import.single_column{:style => "display:none; clear:both"} .box_title - %h2=_ 'Import articles' + %h2 Artikel importieren .column_content #search{:style => "padding-bottom:3em"} - form_remote_tag :url => shared_supplier_articles_path(@supplier), | :before => "Element.show('loader')", :success => "Element.hide('loader')", | :method => :get do | = text_field_tag :import_query, params['import_query'], :size => 10 - = submit_tag _('Search articles') + = submit_tag "Suchen" - if @supplier.shared_supplier.lists - =_ "Search in following lists: " + Suche in folgenden Listen: - @supplier.shared_supplier.lists.each do |token, name| = check_box_tag "lists[#{token}]", "1", true = name | - =_ "only regional:" + Nur aus der Region: = check_box_tag "regional", "1", false #search_results // "import_search_results" will be rendered - = link_to_function _('Close'), "Element.hide('import')" + = link_to_function "Schließen", "Element.hide('import')" .single_column{:style => 'width:100%; clear:both'} .box_title .column_content #links - %b= link_to_remote _('New article'), :url => new_supplier_article_path(@supplier), :before => "Element.show('loader')", :success => "Element.hide('loader')", :method => :get + %b= remote_link_to "Neuer Artikel", :url => new_supplier_article_path(@supplier) | - = link_to _('Edit all'), edit_all_supplier_articles_path(@supplier) + = link_to "Alle bearbeiten", edit_all_supplier_articles_path(@supplier) | - = link_to _('Upload articles'), upload_supplier_articles_path(@supplier) + = link_to "Artikel hochladen", upload_supplier_articles_path(@supplier) | - = link_to_if @current_user.role_orders?, _('Create order'), {:controller => 'orders', :action => 'new', :supplier_id => @supplier } + = link_to_if @current_user.role_orders?, "Bestellung anlegen", {:controller => 'orders', :action => 'new', :supplier_id => @supplier } #article_filter #article_search_form{:style=>"display:inline;"} - form_remote_tag :url => supplier_articles_path(@supplier), | :before => "Element.show('loader')", :success => "Element.hide('loader')", | :method => :get do | - %label{:for => 'article_name'}=_ "Search in article name: " + %label{:for => 'article_name'} Suche im Artikelnamen: = text_field_tag("query", params['query'], :size => 10 ) - = submit_tag _('Search') + = submit_tag "Suchen" %form{ :action => url_for(update_selected_supplier_articles_path(@supplier)), :method => "post", :id => "articlesInListForm" } #table= render :partial => 'articles' %br/ - = link_to _('Back'), :action => 'index' -#edit_article{:style => "display:none"} \ No newline at end of file + = link_to "Zurück", :action => 'index' +#edit_article{:style => "display:none"} diff --git a/app/views/articles/parse_upload.html.haml b/app/views/articles/parse_upload.html.haml index 2a4b3874..67d411d9 100644 --- a/app/views/articles/parse_upload.html.haml +++ b/app/views/articles/parse_upload.html.haml @@ -1,24 +1,24 @@ - title "#{@supplier.name} / Artikel hochladen" %p %i - =_ "Please check the parsed articles and choose a supplier at the end of page." + Bitte überprüfe die eingelesenen Artikel. %br/ - =_ "At the moment there is no checking of dublicate articles." + Achtung, momentan gibt es keine Überprüfung auf doppelte Artikel. - form_tag(create_from_upload_supplier_articles_path(@supplier)) do %table %tr - %th=_ "Number" - %th=_ "Name" - %th=_ "Note" - %th=_ "Manufacturer" - %th=_ "Origin" - %th=_ "Unit" - %th=_ "Net price" - %th=_ "Tax" - %th=_ "Deposit" - %th=_ "Unit quantity" - %th=_ "Category" + %th Nummer + %th Name + %th Notiz + %th Hersteller + %th Herkunft + %th Einheit + %th Nettopreis + %th MwSt + %th Pfand + %th Gebindegröße + %th Kategorie - for article in @articles - fields_for "articles[]", article do |form| %tr{:class => cycle('even', 'odd')} @@ -34,7 +34,7 @@ %td= form.text_field 'unit_quantity', :size => 4 %td= form.select 'article_category_id', ArticleCategory.find(:all).collect {|a| [ a.name, a.id ] } %p - = submit_tag "Save new Articles for #{@supplier.name}" + = submit_tag "Speichere neue Artikel für #{@supplier.name}" | - = link_to _("Back"), upload_supplier_articles_path(@supplier) + = link_to "Zurück", upload_supplier_articles_path(@supplier) \ No newline at end of file diff --git a/app/views/articles/upload.html.haml b/app/views/articles/upload.html.haml index e2ff727f..6c64fcb0 100644 --- a/app/views/articles/upload.html.haml +++ b/app/views/articles/upload.html.haml @@ -1,18 +1,23 @@ - title "#{@supplier.name} / Artikel hochladen" %p - %i - =_ 'The file-type must be "csv" (textfile). Use a semicolon (";") to seperate the fields and double quotes ("Bananas...") for the text.' + %i + Die Datei muss eine Textdatei mit der Endung '.csv' sein. Die erste Zeile + wird beim Einlesen ignoriert. %br/ - =_ 'The character-set has to be "UTF-8". The first row, maybe used for headers, will be ignored.' + Die Felder müssen mit einem Semikolon (';') getrennt und der Text mit doppelten + Anführungszeichen ("Text...") umklammert werden. + %br/ + Als Zeichensatz wird UTF-8 erwartet. %p %i - =_ "Correct order of the columns:" + Korrekte Reihenfolge der Spalten: %br/ - = [_("Status (x=outlistet)"), _("Number"), _("Name"), _("Note"), _("Manufacturer"), _("Origin"), | - _("Unit"), _("Net price"), _("Tax"), _("Deposit"), _("Unit quantity"), | - _("Scale quantity"), _("Scale price"), _("Category")].join(" | ") | + = ["Status (x=ausgelistet)", "Bestellnummer", "Name", "Notiz", "Hersteller", "Herkunft", | + "Einheit", "Preis(netto)", "MwSt", "Pfand", "Gebindegröße", | + "Staffelmenge", "Staffelpreis", "Kategorie"].join(" | ") | #uploadArticles.uploadForm - - form_for(:articles, :url => parse_upload_supplier_articles_path(@supplier), :html => { :multipart => true }) do |form| - %p= form.file_field("file") - %p= submit_tag _("Upload articles") + - form_for :articles, :url => parse_upload_supplier_articles_path(@supplier), | + :html => { :multipart => true } do |form| | + %p= form.file_field "file" + %p= submit_tag "Datei hochladen" diff --git a/app/views/suppliers/index.haml b/app/views/suppliers/index.haml index e7909b60..62c6bbfe 100644 --- a/app/views/suppliers/index.haml +++ b/app/views/suppliers/index.haml @@ -21,7 +21,7 @@ %tbody - for supplier in @suppliers %tr{:class => cycle('even','odd', :name => 'suppliers')} - %td= link_to "#{h(supplier.name)} (#{supplier.articles.not_in_stock.count})", supplier_articles_path(supplier) + %td= link_to "#{h(supplier.name)} (#{supplier.articles.count})", supplier_articles_path(supplier) %td=h supplier.phone %td=h supplier.customer_number %td= link_to "Anzeigen", supplier