diff --git a/app/views/articles/_form.html.haml b/app/views/articles/_form.html.haml index b63db423..1918b0c4 100644 --- a/app/views/articles/_form.html.haml +++ b/app/views/articles/_form.html.haml @@ -7,35 +7,14 @@ .modal-body = f.input :availability = f.input :name - .fold-line - = f.input :unit_quantity, label: Article.human_attribute_name(:unit), - input_html: {class: 'input-mini', title: Article.human_attribute_name(:unit_quantity)} - = f.input :unit, label: '×'.html_safe, - input_html: {class: 'input-mini', title: Article.human_attribute_name(:unit)} + + = render partial: 'shared/article_fields_units', locals: {f: f} = f.input :note = f.association :article_category / TODO labels - .fold-line - = f.input :price do - .input-prepend - %span.add-on= t 'number.currency.format.unit' - = f.input_field :price, class: 'input-mini' - = f.input :tax do - .input-append - = f.input_field :tax, class: 'input-mini' - %span.add-on % - .fold-line - = f.input :deposit do - .input-prepend - %span.add-on= t 'number.currency.format.unit' - = f.input_field :deposit, class: 'input-mini' - .control-group - %label.control-label{for: 'article_fc_price'} - = Article.human_attribute_name(:fc_price) - .controls.control-text#article_fc_price - = number_to_currency(@article.fc_price) rescue nil + = render partial: 'shared/article_fields_price', locals: {f: f} = f.input :origin = f.input :manufacturer @@ -44,14 +23,3 @@ = link_to t('ui.close'), '#', class: 'btn', data: {dismiss: 'modal'} = f.submit class: 'btn btn-primary' -:javascript - var form = $('form.edit_article, form.new_article'); - $('#article_price, #article_tax, #article_deposit', form).on('change keyup', function() { - var price = parseFloat($('#article_price', form).val()); - var tax = parseFloat($('#article_tax', form).val()); - var deposit = parseFloat($('#article_deposit', form).val()); - // Article#gross_price and Article#fc_price - var gross_price = (price + deposit) * (tax / 100 + 1); - var fc_price = gross_price * (#{FoodsoftConfig[:price_markup].to_f} / 100 + 1); - $('#article_fc_price').html($.isNumeric(fc_price) ? I18n.l("currency", fc_price) : '…'); - }); diff --git a/app/views/finance/order_articles/_edit.html.haml b/app/views/finance/order_articles/_edit.html.haml index 0dddf8cd..e783cfe1 100644 --- a/app/views/finance/order_articles/_edit.html.haml +++ b/app/views/finance/order_articles/_edit.html.haml @@ -7,18 +7,16 @@ = simple_fields_for :article, @order_article.article do |f| = f.input :name - = f.input :order_number - = f.input :unit - - if @order_article.article.is_a?(StockArticle) - %div.alert= t '.stock_alert' - - else - = simple_fields_for :article_price, @order_article.article_price do |f| - = f.input :unit_quantity - = f.input :price - = f.input :tax - = f.input :deposit + - if @order_article.article.is_a?(StockArticle) + %div.alert= t '.stock_alert' + - else + = simple_fields_for :article_price, @order_article.article_price do |fprice| + = render partial: 'shared/article_fields_units', locals: {f_unit: f, f_uq: fprice} + = render partial: 'shared/article_fields_price', locals: {f: fprice} + = form.input :update_current_price, as: :boolean + = f.input :order_number .modal-footer = link_to t('ui.close'), '#', class: 'btn', data: {dismiss: 'modal'} = form.submit class: 'btn btn-primary' diff --git a/app/views/shared/_article_fields_price.html.haml b/app/views/shared/_article_fields_price.html.haml new file mode 100644 index 00000000..73c5757b --- /dev/null +++ b/app/views/shared/_article_fields_price.html.haml @@ -0,0 +1,34 @@ +.fold-line + = f.input :price do + .input-prepend + %span.add-on= t 'number.currency.format.unit' + = f.input_field :price, class: 'input-mini' + = f.input :tax do + .input-append + = f.input_field :tax, class: 'input-mini' + %span.add-on % +.fold-line + = f.input :deposit do + .input-prepend + %span.add-on= t 'number.currency.format.unit' + = f.input_field :deposit, class: 'input-mini' + .control-group + %label.control-label{for: 'article_fc_price'} + = Article.human_attribute_name(:fc_price) + .controls.control-text#article_fc_price + = number_to_currency(f.object.fc_price) rescue nil + +-# do this inline, since it's being used in ajax forms only +- field = f.object.class.model_name.underscore +:javascript + var form = $('#article_fc_price').closest('form'); + $('##{field}_price, ##{field}_tax, ##{field}_deposit', form).on('change keyup', function() { + var price = parseFloat($('##{field}_price', form).val()); + var tax = parseFloat($('##{field}_tax', form).val()); + var deposit = parseFloat($('##{field}_deposit', form).val()); + // Article#gross_price and Article#fc_price + var gross_price = (price + deposit) * (tax / 100 + 1); + var fc_price = gross_price * (#{FoodsoftConfig[:price_markup].to_f} / 100 + 1); + $('#article_fc_price').html($.isNumeric(fc_price) ? I18n.l("currency", fc_price) : '…'); + }); + diff --git a/app/views/shared/_article_fields_units.html.haml b/app/views/shared/_article_fields_units.html.haml new file mode 100644 index 00000000..b9704cef --- /dev/null +++ b/app/views/shared/_article_fields_units.html.haml @@ -0,0 +1,6 @@ +-# use the local 'f', or supply 'f_uq' and 'f_unit' for more control (like in balancing) +.fold-line + = (f_uq rescue f).input :unit_quantity, label: Article.human_attribute_name(:unit), + input_html: {class: 'input-mini', title: Article.human_attribute_name(:unit_quantity)} + = (f_unit rescue f).input :unit, label: '×'.html_safe, + input_html: {class: 'input-mini', title: Article.human_attribute_name(:unit)}