The php/ajax combo for split btaches is the first that will do a better job handling errors. Split batch leftover calculations rounded to 1 decimal. Refuse to split and leave nothing in the main batch

Fri, 18 Jun 2021 15:26:55 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Fri, 18 Jun 2021 15:26:55 +0200
changeset 754
30abc8024afe
parent 753
a59ecd6d72f4
child 755
509510586665

The php/ajax combo for split btaches is the first that will do a better job handling errors. Split batch leftover calculations rounded to 1 decimal. Refuse to split and leave nothing in the main batch

www/includes/db_divides.php file | annotate | diff | comparison | revisions
www/js/prod_divide.js file | annotate | diff | comparison | revisions
--- a/www/includes/db_divides.php	Sun Jun 13 19:36:42 2021 +0200
+++ b/www/includes/db_divides.php	Fri Jun 18 15:26:55 2021 +0200
@@ -16,6 +16,11 @@
 $rreplacements = array("\\'");
 $disallowed = array('visibleindex','uniqueid','boundindex','uid','h_weight','m_weight');
 
+$response = array(
+   'error' => false,
+   'msg' => 'Ok',
+);
+
 /*
  * Server side split batch. Parameters:
  * record = original record.
@@ -30,7 +35,6 @@
 
 if (isset($_POST['record']) && isset($_POST['divide_type']) && isset($_POST['divide_parts']) && isset($_POST['divide_data'])) {
 
-    $rc = 0;
     $record = $_POST['record'];
     $divide_parts = $_POST['divide_parts'];
     $divide_type = $_POST['divide_type'];
@@ -85,7 +89,7 @@
             $sql .= "', divide_part='" . $index;
             $sql .= "', divide_size='" . floatval($split['size']);
             $sql .= "', divide_factor='". $factor;
-	    syslog(LOG_NOTICE, "db_divide: index " . $index . " " . $sql);
+	//    syslog(LOG_NOTICE, "db_divide: index " . $index . " " . $sql);
 
 	} else {
 	    /*
@@ -359,8 +363,9 @@
 	    $sql .= "' WHERE record='" . $record . "';";
 	    $result2 = mysqli_query($link, $sql);
             if (! $result2) {
-                syslog(LOG_NOTICE, "db_divide: result: ".mysqli_error($link));
-            	$rc = 1;
+		syslog(LOG_NOTICE, "db_divide: result: ".mysqli_error($link));
+		$response['error'] = true;
+		$response['msg'] = "Update master result: ".mysqli_error($link);
 		break;
 	    } else {
                 syslog(LOG_NOTICE, "db_divide: updated record ".$record." code ".$split['code']);
@@ -369,8 +374,9 @@
 	    $sql .= "';";
 	    $result2 = mysqli_query($link, $sql);
 	    if (! $result2) {
+		$response['error'] = true;
+                $response['msg'] = "Insert split record result: ".mysqli_error($link);
              	syslog(LOG_NOTICE, "db_divide: result: ".mysqli_error($link));
-		$rc = 1;
 		break;
             } else {
 	     	$lastid = mysqli_insert_id($link);
@@ -405,14 +411,13 @@
 	}
 
     }
-    syslog(LOG_NOTICE, "db_divide: rc=".$rc);
-    echo $rc;
 } else {
     syslog(LOG_NOTICE, "db_divide: missing arguments");
-    echo 1;
+    $response['error'] = true;
+    $response['msg'] = "missing arguments";
 }
 
-
+echo json_encode($response);
 
 
 ?>
--- a/www/js/prod_divide.js	Sun Jun 13 19:36:42 2021 +0200
+++ b/www/js/prod_divide.js	Fri Jun 18 15:26:55 2021 +0200
@@ -39,7 +39,7 @@
     leftover = Round(available, 1);
     for (i = 0; i < rows.length; i++) {
      row = rows[i];
-     leftover -= row.split_size;
+     leftover = Round(leftover - row.split_size, 1);
      console.log('i:' + i + ' split_size:' + row.split_size);
     }
     $('#leftover').val(leftover);
@@ -298,7 +298,6 @@
    $('#stage').val(StageData[dataRecord.stage].nl);
    // Disable stages that are already done.
    for (i = 0; i < SplitData.length; i++) {
-    console.log('i:' + i + ' ok:' + SplitData[i].ok + ' stage:' + dataRecord.stage);
     if (SplitData[i].ok < dataRecord.stage)
      $('#divide_type').jqxDropDownList('disableAt', i);
    }
@@ -363,7 +362,7 @@
      id = $('#splitGrid').jqxGrid('getrowid', rowscount - 1);
      // First, give back this batch volume.
      row = $('#splitGrid').jqxGrid('getrowdata', id);
-     leftover += row.split_size;
+     leftover = Round(leftover + row.split_size, 1);
      if (leftover > available)
       leftover = available;
      $('#leftover').val(leftover);
@@ -440,7 +439,6 @@
     break;
   }
   leftover = available;
-//  minvolume = Round(0.1 * available, 1);  /* What was the use for this ?? */
   console.log('divide_type:' + index + ' available:' + available);
   $('#available').val(available);
   $('#leftover').val(leftover);
@@ -459,7 +457,10 @@
  $('#Save').jqxButton({ template: 'success', width: '80px', theme: theme });
  $('#Save').bind('click', function() {
   var rows, row, i, div, data;
-  if (leftover != available) {
+  if (! leftover) {
+   console.log('Save and no volume left');
+   alert('Fout, er is geen volume over in de hoofd batch.');
+  } else if (leftover != available) {
    console.log('Save and there are splits');
 
    // Send all the info to the database. The server handles the splitting.
@@ -498,15 +499,19 @@
      cache: false,
      data: data,
      type: 'POST',
-     success: function(data, status, xhr) {
-      console.log('insert divides: success');
+     success: function(data) {
+      if (data.error) {
+       console.log('insert divides: error ' + data.msg);
+       alert('Fout: ' + data.msg);
+      } else {
+       console.log('insert divides: success');
+      }
       window.location.href = my_return;
      },
      error: function(jqXHR, textStatus, errorThrown) {
       console.log('insert divides: ' + textStatus);
      }
    });
-
-  }
+  } // if (leftover != available)
  });
 });

mercurial