diff --git a/app/helpers/orders_helper.rb b/app/helpers/orders_helper.rb
index 3e91848d..14fca94b 100644
--- a/app/helpers/orders_helper.rb
+++ b/app/helpers/orders_helper.rb
@@ -58,9 +58,12 @@ module OrdersHelper
def receive_input_field(form)
order_article = form.object
- units_expected = (order_article.units_billed or order_article.units_to_order)
+ units_expected = (order_article.units_billed or order_article.units_to_order) *
+ 1.0 * order_article.article.unit_quantity / order_article.article_price.unit_quantity
- input_html = form.text_field :units_received, class: 'input input-nano package units_received',
+ input_classes = 'input input-nano units_received'
+ input_classes += ' package' unless order_article.article_price.unit_quantity == 1
+ input_html = form.text_field :units_received, class: input_classes,
data: {'units-expected' => units_expected},
disabled: order_article.result_manually_changed?,
autocomplete: 'off'
diff --git a/app/views/orders/_edit_amounts.html.haml b/app/views/orders/_edit_amounts.html.haml
index a9825876..3a62609f 100644
--- a/app/views/orders/_edit_amounts.html.haml
+++ b/app/views/orders/_edit_amounts.html.haml
@@ -6,6 +6,7 @@
function update_delta(input) {
var units = $(input).val();
var expected = $(input).data('units-expected');
+ var delta = Math.round((units-expected)*100)/100.0;
var html;
if (units.replace(/\s/g,"")=="") {
@@ -13,16 +14,19 @@
html = '';
} else if (isNaN(units)) {
html = '';
- } else if (units == expected) {
+ } else if (delta == 0) {
// equal value
html = '';
} else {
- if (units < expected) {
- html = '- '+(expected-units)+'';
+ if (delta < 0) {
+ html = '- '+(-delta)+'';
} else /*if (units> expected)*/ {
- html = '+ '+(units-expected)+'';
+ html = '+ '+(delta)+'';
+ }
+ // show package icon only if the receive field has one
+ if ($(input).hasClass('package')) {
+ html += '#{j pkg_helper_icon}';
}
- html += '#{j pkg_helper_icon}';
}
$(input).closest('tr').find('.units_delta').html(html);
diff --git a/app/views/orders/receive_on_order_article_update.js.erb b/app/views/orders/receive_on_order_article_update.js.erb
index 3e9ddda8..d4ee9a72 100644
--- a/app/views/orders/receive_on_order_article_update.js.erb
+++ b/app/views/orders/receive_on_order_article_update.js.erb
@@ -4,9 +4,19 @@
// get old element and update the cell which is reused
var old_order_article_entry = $('#order_article_<%= @order_article.id %>');
- $('td.units_received_cell span.package', old_order_article_entry).replaceWith(
- '<%= j pkg_helper(@order_article.article_price, icon: false) %>'
- );
+ // update package info after input
+ $('td.units_received_cell span.package', old_order_article_entry).remove();
+ $('<%= j pkg_helper(@order_article.article_price, icon: false) %>')
+ .appendTo($('td.units_received_cell', old_order_article_entry));
+
+ // update package icon on input too
+ $('input', old_order_article_entry).toggleClass('package', <%= @order_article.article_price.unit_quantity == 1 ? 'false' : 'true' %>);
+
+ // update expected units, since unit_quantity may have been changed
+ $('input', old_order_article_entry).data('units-expected', <%=
+ (@order_article.units_billed or @order_article.units_to_order) *
+ 1.0 * @order_article.article.unit_quantity / @order_article.article_price.unit_quantity
+ %>);
// render new element and inject dynamic cell
var new_order_article_entry = $(