X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=includes%2Fsplitter.inc;h=e2138e8c492160d544dd1a0e2bfb464b0d3bd8fe;hb=635945155ba6eeb168e18afdc7a86967422ebb28;hp=1350f9f297f92966e1014e3c53abe06c7edb37a4;hpb=25a5b3f1d11f626d4d20033f0c942d71beb3abf5;p=order_line_extra.git diff --git a/includes/splitter.inc b/includes/splitter.inc index 1350f9f..e2138e8 100644 --- a/includes/splitter.inc +++ b/includes/splitter.inc @@ -45,6 +45,8 @@ class Splitter { public $detail_ids = array() ; public $start_date; public $end_date; + public $start_offset; + public $end_offset; protected $days; public $max_quantity; @@ -55,6 +57,8 @@ class Splitter { } $this->start_date = $data['start_date']; $this->end_date = $data['end_date']; + $this->start_offset = $data['start_offset']; + $this->end_offset = $data['end_offset']; $this->days = date_diff2($this->end_date, $this->start_date, 'd'); $this->max_quantity = $data['max_quantity']; @@ -74,6 +78,7 @@ class Splitter { display_warning("processing $detail_id"); $detail = $this->loadDetail($detail_id); $splits = $this->split($detail); + foreach($splits as $split) $this->alterSplit($split); $ok &= $this->saveSplits($detail, $splits); } @@ -131,11 +136,25 @@ display_warning("processing $detail_id"); return $splits; } + function alterSplit($split) { + foreach(explode(' ', 'start end') as $att) { + $date = "${att}_date"; + $offset = "${att}_offset"; + if($this->$offset === null || $this->$offset === "") { + $split->$date = null; + } + else { + $split->$date = add_days($split->$date, $this->$offset); + } + } + } + public function saveSplits($detail, $splits) { if(empty($splits)) return true; $detail_id = $detail['id']; $priority = $detail['priority']; + $priority_offset = 1; $order_no = $detail['order_no']; $trans_type = $detail['trans_type']; @@ -146,8 +165,7 @@ display_warning("processing $detail_id"); $set = new SqlSet(); $set->addDate($first->start_date, 'hold_until_date') ->addDate($first->end_date, 'expiry_date') - ->add($first->quantity, 'quantity', false) - ->add($priority, 'priority'); + ->add($first->quantity, 'quantity', false); display_warning($set->toString()); db_query("UPDATE ".TB_PREF."sales_order_details SET {$set->toString()} @@ -156,7 +174,6 @@ display_warning("processing $detail_id"); // Compute common field for each split $common_set = new SqlSet(); $common_set->add($order_no, 'order_no', false) - ->add($priority, 'priority') ->add($trans_type, 'trans_type') ->add($detail['required_date'], 'required_date') ->add($detail['comment'], 'comment') @@ -172,8 +189,10 @@ display_warning("processing $detail_id"); ->add($split->quantity, 'quantity', false); display_warning($set->toString()); db_query("INSERT INTO ".TB_PREF."sales_order_details - SET {$set->toString()}" + SET {$set->toString()} + , priority = '$priority' + INTERVAL ${priority_offset} second" ,"Problem spliting order details $detail_id"); + $priority_offset++; } return true;