BulkUpdater work.
authorMaxime Bourget <bmx007@gmail.com>
Sun, 9 Jun 2013 15:26:25 +0000 (16:26 +0100)
committerMaxime Bourget <bmx007@gmail.com>
Sun, 9 Jun 2013 15:26:25 +0000 (16:26 +0100)
includes/bulk_updater.inc [new file with mode: 0644]
includes/order_lines.inc
includes/splitter.inc
includes/sql_set.inc [new file with mode: 0644]
order_lines_view.php

diff --git a/includes/bulk_updater.inc b/includes/bulk_updater.inc
new file mode 100644 (file)
index 0000000..480cb7e
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+require_once('includes/sql_set.inc');
+
+class BulkUpdater extends OrderAction {
+       protected $priority_date;
+       protected $priority_time;
+       protected $hold_until_date;
+       protected $required_date;
+       protected $expiry_date;
+       protected $comment;
+
+       public function __construct(array $data) {
+               parent::__construct($data);
+               print_r($data);
+               
+               foreach(explode(' ', "priority_date priority_time hold_until_date required_date expiry_date comment") as $att) {
+                       $this->$att = $data['bulk'][$att];
+               }
+       }
+
+       public function update() {
+               foreach($this->detail_ids as $detail_id) {
+                       $set = new SqlSet();
+                       $set->addDatetime($this->priority_date, $this->priority_time, 'priority')
+                                       ->addDate($this->hold_until_date, 'hold_until_date')
+                                       ->addDate($this->required_date, 'required_date')
+                                       ->add($this->comment, 'comment');
+
+                       db_query("UPDATE ".TB_PREF."sales_order_details
+                                                       SET {$set->toString()}
+                                                       WHERE id = $detail_id", "Problem update order details $detail_id");
+               }
+       }
+}
+?>
index c8564edc02200e37f64adf55c2e814eab19ba566..00c1193b67220be696c5f020cf83b80bc1512526 100644 (file)
@@ -105,6 +105,18 @@ function split_order_details() {
        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]";
index e2138e8c492160d544dd1a0e2bfb464b0d3bd8fe..3f03593bfd58fb8e50a984db90914d7ce5a914d0 100644 (file)
@@ -1,28 +1,6 @@
 <?php
-require_once($path_to_root.'/'.'includes/date_functions.inc');
-class SqlSet {
-       protected $pairs;
-       function __construct($set=null) {
-               $this->pairs = $set ?  array_merge($set->pairs) : array();
-       }
-
-       function add($value, $field, $quote=true) {
-               if($value !=null)  {
-                       array_push($this->pairs, $quote ? "$field = '$value'" : "$field = $value");
-               }
+require_once('includes/sql_set.inc');
 
-               return $this;
-       }
-
-       function addDate($date, $field) {
-               return $this->add(date2sql($date), $field);
-       }
-
-       function toString() {
-               return implode(', ', $this->pairs);
-       }
-       
-}
 class Split {
        public $start_date;
        public $end_date;
@@ -41,8 +19,7 @@ class Split {
        }
 }
 
-class Splitter {
-       public $detail_ids = array() ;
+class Splitter extends OrderAction {
        public $start_date;
        public $end_date;
        public $start_offset;
@@ -51,10 +28,7 @@ class Splitter {
        public $max_quantity;
 
        public function __construct(array $data) {
-               $this->detail_ids = array();
-               foreach($data['detail'] as $detail_id => $detail) {
-                       array_push($this->detail_ids, $detail_id);
-               }
+               parent::__construct($data);
                $this->start_date = $data['start_date'];
                $this->end_date = $data['end_date'];
                $this->start_offset = $data['start_offset'];
diff --git a/includes/sql_set.inc b/includes/sql_set.inc
new file mode 100644 (file)
index 0000000..be79d08
--- /dev/null
@@ -0,0 +1,42 @@
+<?php
+require_once($path_to_root.'/'.'includes/date_functions.inc');
+class SqlSet {
+       protected $pairs;
+       function __construct($set=null) {
+               $this->pairs = $set ?  array_merge($set->pairs) : array();
+       }
+
+       function add($value, $field, $quote=true) {
+               if($value !=null)  {
+                       if($value == ' ') $value = '';
+                       array_push($this->pairs, $quote ? "$field = '$value'" : "$field = $value");
+               }
+
+               return $this;
+       }
+
+       function addDate($date, $field) {
+               return $this->add(date2sql($date), $field);
+       }
+
+       function addDatetime($date, $time, $field) {
+               if(!$date)  return $this;
+               return $this->add(date2sql($date)." $time", $field);
+       }
+
+       function toString() {
+               return implode(', ', $this->pairs);
+       }
+       
+}
+
+class OrderAction {
+       public $detail_ids = array() ;
+
+       public function __construct(array $data) {
+               $this->detail_ids = array();
+               foreach($data['detail'] as $detail_id => $detail) {
+                       array_push($this->detail_ids, $detail_id);
+               }
+       }
+}
index 2c28ba401cf7d82e89da86e48cfea99bbec7bea5..077e3767793f54ef3761888fc94485b2b083b271 100644 (file)
@@ -18,6 +18,7 @@ include_once($path_to_root . "/reporting/includes/reporting.inc");
 
 include_once("includes/order_lines.inc");
 include_once("includes/splitter.inc");
+include_once("includes/bulk_updater.inc");
 
 $page_security = 'SA_ORDERLINEX_EDIT';
 add_access_extensions();
@@ -28,6 +29,7 @@ $_SESSION['page_title'] = _($help_context = "Edit lines extra parameters");
 filter_data($_POST);
 update_extra_order_details();
 split_order_details();
+bulk_update_order_details();
 
 
 $js = "";
@@ -126,17 +128,36 @@ $table->width = "80%";
 display_db_pager($table);
 
 function display_split_area() {
-start_table(TABLESTYLE_NOBORDER);
 qty_cells('Before', 'start_offset', -5);
-date_cells('Start', 'start_date');
-date_cells('End', 'end_date');
+date_cells('Start', 'start_date', null, null, 0, 0, 1001);
+date_cells('End', 'end_date', null, null, 0, 0, 1001);
 qty_cells('After', 'end_offset', 2);
 qty_cells('Max', 'max_quantity', 6);
 submit_cells('Split', 'Split');
-end_table();
 
 }
+
+function display_bulk_area()  {
+date_cells('Priority', 'bulk[priority_date]', null, null, 0, 0, 1001);
+qty_cells(null, 'bulk[priority_time]', '12:00:00');
+date_cells('Hold', 'bulk[hold_until_date]', null, null, 0, 0, 1001);
+date_cells('Required', 'bulk[required_date]', null, null, 0, 0, 1001);
+date_cells('Expiry', 'bulk[expiry_date]', null, null, 0, 0, 1001);
+text_cells('Comment', 'bulk[comment]');
+submit_cells('Bulk', 'Bulk');
+}
+
+
+if($customer_id !== null) {
+start_table(TABLESTYLE);
+start_table(TABLESTYLE_NOBORDER);
 display_split_area();
+end_table();
+start_table(TABLESTYLE_NOBORDER);
+display_bulk_area();
+end_table();
+end_table();
+}
 
 
 br(1);