public $detail_ids = array() ;
public $start_date;
public $end_date;
+ public $start_offset;
+ public $end_offset;
protected $days;
public $max_quantity;
}
$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'];
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);
}
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'];
$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()}
// 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')
->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;