--- /dev/null
+<?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");
+ }
+ }
+}
+?>
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]";
<?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;
}
}
-class Splitter {
- public $detail_ids = array() ;
+class Splitter extends OrderAction {
public $start_date;
public $end_date;
public $start_offset;
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'];
--- /dev/null
+<?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);
+ }
+ }
+}
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();
filter_data($_POST);
update_extra_order_details();
split_order_details();
+bulk_update_order_details();
$js = "";
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);