Auftrags-Controller: Mehrfach-Artikelauswahl: Verbesserungen
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Wed, 6 Jan 2016 12:00:57 +0000 (13:00 +0100)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Fri, 11 Mar 2016 11:53:26 +0000 (12:53 +0100)
- ungültige Artikel nicht anzeigen.
- Artikel nicht mehrfach hinzufügen, wenn ausversehen mehrfach Enter gedrückt
  oder der Weiter-Knopf mehrfach angeklickt wird.

SL/Controller/Order.pm
templates/webpages/order/tabs/_multi_items_dialog.html

index c980db7..eba061c 100644 (file)
@@ -438,6 +438,9 @@ sub action_show_multi_items_dialog {
 
 sub action_multi_items_update_result {
   my $max_count = 100;
+
+  $::form->{multi_items}->{filter}->{obsolete} = 0;
+
   my $count = $_[0]->multi_items_models->count;
 
   if ($count == 0) {
index 710c332..47f8f0d 100644 (file)
@@ -18,7 +18,7 @@
 <div id='multi_items_result'></div>
 <hr>
 
-[% L.button_tag('add_multi_items()', LxERP.t8('Continue')) %]
+[% L.button_tag('add_multi_items()', LxERP.t8('Continue'), id='continue_button') %]
 <a href="#" onclick="close_multi_items_dialog();">[%- LxERP.t8("Cancel") %]</a>
 
 <script type='text/javascript'>
@@ -31,18 +31,42 @@ function update_result() {
     method: 'post',
     success: function(data){
       $('#multi_items_result').html(data);
-      $('#multi_items_result input').keydown(function(event) {
-        if(event.keyCode == 13) {
-          event.preventDefault();
-          add_multi_items();
-          return false;
-        }
-      });
+      enable_continue();
     }
   });
 }
 
+function disable_continue() {
+  // disable keydown-event and continue button to prevent
+  // impatient users to add parts multiple times
+  $('#multi_items_result input').off("keydown");
+  $('#continue_button').prop('disabled', true);
+}
+
+function enable_continue() {
+  $('#multi_items_result input').keydown(function(event) {
+    if(event.keyCode == 13) {
+      event.preventDefault();
+      add_multi_items();
+      return false;
+    }
+  });
+  $('#continue_button').prop('disabled', false);
+}
+
 function add_multi_items() {
+  // rows at all
+  var n_rows = $('.multi_items_qty').length;
+  if ( n_rows == 0) { return; }
+
+  // filled rows
+  n_rows = $('.multi_items_qty').filter(function() {
+    return $(this).val().length > 0;
+  }).length;
+  if ( n_rows == 0) { return; }
+
+  disable_continue();
+
   var data = $('#[%- FORM.callback_data_id %]').serializeArray();
   data = data.concat($('#multi_items_form').serializeArray());
   data.push({ name: 'action', value: '[%- FORM.callback %]' });