epic-s6ts
[kivitendo-erp.git] / js / kivi.DeliveryOrder.js
index f708413..00a9294 100644 (file)
@@ -84,15 +84,15 @@ namespace('kivi.DeliveryOrder', function(ns) {
     $row.uniqueId();
 
     kivi.popup_dialog({
-      id: "stock_in_out",
+      id: "stock_in_out_dialog",
       url: "controller.pl?action=DeliveryOrder/stock_in_out_dialog",
       data: {
         id:            $("#id").val(),
         type:          $("#type").val(),
         parts_id:      $row.find("[name$=parts_id]").val(),
         unit:          $row.find("[name$=unit]").val(),
-        qty_as_number: $("qty_" + id).val(),
-        stock:         $("stock_" + id).val(),
+        qty_as_number: $row.find("[name$=qty_as_number]").val(),
+        stock:         $row.find("[name$=stock_info]").val(),
         item_id:       id,
         row:           $row.attr("id"),
       },
@@ -100,6 +100,44 @@ namespace('kivi.DeliveryOrder', function(ns) {
     });
   };
 
+  ns.save_updated_stock = function() {
+    // stock information is saved in DOM as a yaml dump.
+    // we don't want to do this in javascript so we do a tiny roundtrip to the backend
+
+    let data = [];
+    $("#stock-in-out-table tr.listrow").each((i,row) => {
+      let qty = kivi.parse_amount($(row).find(".data-qty").val());
+
+      if (qty === 0) return;
+
+      data.push({
+        qty:                           qty,
+        warehouse_id:                  $(row).find(".data-warehouse-id").val(),
+        bin_id:                        $(row).find(".data-bin-id").val(),
+        chargenumber:                  $(row).find(".data-chargenumber").val(),
+        bestbefore:                    $(row).find(".data-bestbefore").val(),
+        unit:                          $(row).find(".data-unit").val(),
+        delivery_order_items_stock_id: $(row).find(".data-stock-id").val(),
+      });
+    });
+
+    let row = $(".data-row").val();
+
+    $.post("controller.pl",
+      kivi.serialize({
+        action:     "DeliveryOrder/update_stock_information",
+        unit:       $("#" + row).find("[name$=unit]").val(),
+        stock_info: data,
+        row:        row
+      }),
+      (data) => {
+        $("#" + row + " .data-stock-info").val(data.stock_info);
+        $("#" + row + " .data-stock-qty").text(data.stock_qty)
+        $("#stock_in_out_dialog").dialog("close");
+      }
+    );
+  };
+
   ns.print = function() {
     $('#print_options').dialog('close');