BulkUpdater work.
[order_line_extra.git] / includes / order_lines.inc
index 87a83f01f6b58e73a029467d42612be7750e426c..00c1193b67220be696c5f020cf83b80bc1512526 100644 (file)
@@ -23,12 +23,24 @@ function extract_cell($td) {
                return $matches[1];
        }
        else {
-print_r('cacou');
                return $td;
        }
 }
 
+/* remove unchecked data so each
+ * funcion doesn't to check what's been checked or not. 
+ */
+function filter_data(&$data) {
+       if(!isset($data['detail'])) return;
+       $new_details = array();
+       foreach(@$data['detail'] as $detail_id => $values) {
+               if(@$values['check'] === 'on') $new_details[$detail_id]=$values;
+       }
+       $data['detail'] = $new_details;
+}
+
 function post_to_detail_ids() {
+       if(!isset($_POST['detail'])) return;
        $detail_ids = array();
        foreach($_POST['detail'] as $detail_id => $values) {
                array_push($detail_ids, $detail_id);
@@ -41,13 +53,15 @@ function update_extra_order_details() {
        if(!isset($_POST['Update']) || $_POST['Update'] != 'Update')  return;
 
        $cart = post_to_detail_ids();
+       if($cart === null) return;
 begin_transaction();
        hook_db_prewrite($cart, 'order_xtra');
        // update in database all field
        $date_fields = array('hold_until_date', 'required_date', 'expiry_date', 'priority');
        foreach($_POST['detail'] as $detail_id => $values) {
                $set = array();
-               if($comment = $values['comment'])  array_push($set, " comment='$comment' ");
+               $comment=$values['comment'];
+         array_push($set, " comment='$comment' "); // erase comment if needed.
                foreach($date_fields as $date_field) {
                        if(isset($values[$date_field])) {
                                $input_date = trim($values[$date_field]);
@@ -84,12 +98,25 @@ function split_order_details() {
        $splitter = new Splitter($_POST);
        begin_transaction();
        $cart = post_to_detail_ids();
+       if($cart === null) return;
        hook_db_prewrite($cart, 'order_xtra');
                if($splitter->splitAll()) display_warning("Items have been split.");
        hook_db_postwrite($cart, 'order_xtra');
        commit_transaction();
 }
 
+function bulk_update_order_details() {
+       if(!isset($_POST['Bulk']) || $_POST['Bulk'] != 'Bulk')  return;
+       $bulk_updater = new BulkUpdater($_POST);
+       begin_transaction();
+       $cart = post_to_detail_ids();
+       if($cart === null) return;
+       hook_db_prewrite($cart, 'order_xtra');
+       $bulk_updater->update();
+       hook_db_postwrite($cart, 'order_xtra');
+       commit_transaction();
+}
+
 function compute_input_name($row, $field) {
        $row_id = $row['id'];
        return "detail[$row_id][$field]";
@@ -185,7 +212,13 @@ $row_id = $row['id'];
 ";
 }
 
-function get_order_details_extra($customer_id, $location) {
+function input_check_details($row, $dummy) {
+       $row_id = $row['id'];
+               return "
+               <input type='checkbox' class='check_detail' name='detail[$row_id][check]'>";
+}
+
+function get_order_details_extra($customer_id, $location, $item_like) {
        $sql = "SELECT sod.id
        , so.order_no
        , stk_code
@@ -208,6 +241,15 @@ function get_order_details_extra($customer_id, $location) {
        WHERE sod.quantity > qty_sent
        ";
 
+       if($item_like) {
+                       if($item_like[0]=='/')  {
+                               $regexp = substr($item_like, 1);
+                               $sql .= " AND stk_code RLIKE '$regexp'";
+                       }
+                       else 
+                               $sql .= " AND stk_code LIKE '$item_like'";
+       }
+
        return $sql;
 }