Part Controller - falschen Code aus kivi.Order.js wieder entfernt
[kivitendo-erp.git] / js / kivi.Order.js
index 3e68535..c4aabf7 100644 (file)
@@ -1,12 +1,12 @@
 namespace('kivi.Order', function(ns) {
   ns.check_cv = function() {
     if ($('#type').val() == 'sales_order') {
-      if ($('#order_customer_id').val() == '') {
+      if ($('#order_customer_id').val() === '') {
         alert(kivi.t8('Please select a customer.'));
         return false;
       }
     } else  {
-      if ($('#order_vendor_id').val() == '') {
+      if ($('#order_vendor_id').val() === '') {
         alert(kivi.t8('Please select a vendor.'));
         return false;
       }
@@ -14,8 +14,30 @@ namespace('kivi.Order', function(ns) {
     return true;
   };
 
-  ns.save = function() {
+  ns.check_save_duplicate_parts = function() {
+    var id_arr = $('[name="order.orderitems[].parts_id"]').map(function() {return this.value;}).get();
+
+    var i, obj = {}, pos = [];
+
+    for (i = 0; i < id_arr.length; i++) {
+      var id = id_arr[i];
+      if (obj.hasOwnProperty(id)) {
+        pos.push(i + 1);
+      }
+      obj[id] = 0;
+    }
+
+    if (pos.length > 0) {
+      return confirm(kivi.t8("There are duplicate parts at positions") + "\n"
+                     + pos.join(', ') + "\n"
+                     + kivi.t8("Do you really want to save?"));
+    }
+    return true;
+  };
+
+  ns.save = function(warn_on_duplicates) {
     if (!ns.check_cv()) return;
+    if (warn_on_duplicates && !ns.check_save_duplicate_parts()) return;
 
     var data = $('#order_form').serializeArray();
     data.push({ name: 'action', value: 'Order/save' });
@@ -23,8 +45,9 @@ namespace('kivi.Order', function(ns) {
     $.post("controller.pl", data, kivi.eval_json_result);
   };
 
-  ns.save_and_delivery_order = function() {
+  ns.save_and_delivery_order = function(warn_on_duplicates) {
     if (!ns.check_cv()) return;
+    if (warn_on_duplicates && !ns.check_save_duplicate_parts()) return;
 
     var data = $('#order_form').serializeArray();
     data.push({ name: 'action', value: 'Order/save_and_delivery_order' });
@@ -115,7 +138,7 @@ namespace('kivi.Order', function(ns) {
     email_dialog.dialog("close");
   };
 
-  ns.reload_cv_dependend_selections = function() {
+  ns.reload_cv_dependant_selections = function() {
     var data = $('#order_form').serializeArray();
     data.push({ name: 'action', value: 'Order/customer_vendor_changed' });
 
@@ -175,17 +198,18 @@ namespace('kivi.Order', function(ns) {
 
     kivi.run_once_for('.row_entry', 'on_kbd_click_show_hide', function(elt) {
       $(elt).keydown(function(event) {
-        if(event.keyCode == 40 && event.shiftKey == true) {
+        var row;
+        if(event.keyCode == 40 && event.shiftKey === true) {
           // shift arrow down
           event.preventDefault();
-          var row = $(event.target).parents(".row_entry").first();
+          row = $(event.target).parents(".row_entry").first();
           $(row).children().not(':first').show();
           return false;
         }
-        if(event.keyCode == 38 && event.shiftKey == true) {
+        if(event.keyCode == 38 && event.shiftKey === true) {
           // shift arrow up
           event.preventDefault();
-          var row = $(event.target).parents(".row_entry").first();
+          row = $(event.target).parents(".row_entry").first();
           $(row).children().not(':first').hide();
           return false;
         }
@@ -222,7 +246,7 @@ namespace('kivi.Order', function(ns) {
     } else {
       dir = "1";
       src = "image/down.png";
-    };
+    }
 
     $('#' + order_by + '_header_id a').append('<img border=0 data-sort-dir=' + dir + ' src=' + src + ' alt="' + kivi.t8('sort items') + '">');
 
@@ -245,7 +269,7 @@ namespace('kivi.Order', function(ns) {
   };
 
   ns.add_item = function() {
-    if ($('#add_item_parts_id').val() == '') return;
+    if ($('#add_item_parts_id').val() === '') return;
     if (!ns.check_cv()) return;
 
     $('#row_table_id thead a img').remove();
@@ -355,7 +379,7 @@ namespace('kivi.Order', function(ns) {
 
     var editable_div_elt = $(row).find('[name="editable_price"]');
     var not_editable_div_elt = $(row).find('[name="not_editable_price"]');
-    if (price_editable == 1 && source == '') {
+    if (price_editable == 1 && source === '') {
       // editable
       $(editable_div_elt).show();
       $(not_editable_div_elt).hide();
@@ -390,7 +414,7 @@ namespace('kivi.Order', function(ns) {
 
     var editable_div_elt = $(row).find('[name="editable_discount"]');
     var not_editable_div_elt = $(row).find('[name="not_editable_discount"]');
-    if (price_editable == 1 && source == '') {
+    if (price_editable == 1 && source === '') {
       // editable
       $(editable_div_elt).show();
       $(not_editable_div_elt).hide();
@@ -419,9 +443,9 @@ namespace('kivi.Order', function(ns) {
 
 $(function(){
   if ($('#type').val() == 'sales_order') {
-    $('#order_customer_id').change(kivi.Order.reload_cv_dependend_selections);
+    $('#order_customer_id').change(kivi.Order.reload_cv_dependant_selections);
   } else {
-    $('#order_vendor_id').change(kivi.Order.reload_cv_dependend_selections);
+    $('#order_vendor_id').change(kivi.Order.reload_cv_dependant_selections);
   }
 
   if ($('#type').val() == 'sales_order') {