BulkUpdater work.
[order_line_extra.git] / includes / order_lines.inc
index 49a8790b26be82724a5c9846472e52af4411b5af..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,6 +212,12 @@ $row_id = $row['id'];
 ";
 }
 
+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