+ 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'];
+
+ /* We need to update the first one (as it exists already in the database)
+ * but insert the following one.
+ */
+ $first = array_shift($splits);
+ $set = new SqlSet();
+ $set->addDate($first->start_date, 'hold_until_date')
+ ->addDate($first->end_date, 'expiry_date')
+ ->add($first->quantity, 'quantity', false);
+ display_warning($set->toString());
+ db_query("UPDATE ".TB_PREF."sales_order_details
+ SET {$set->toString()}
+ WHERE id = $detail_id", "Problem splitting order details $detail_id");
+
+ // Compute common field for each split
+ $common_set = new SqlSet();
+ $common_set->add($order_no, 'order_no', false)
+ ->add($trans_type, 'trans_type')
+ ->add($detail['required_date'], 'required_date')
+ ->add($detail['comment'], 'comment')
+ ->add($detail['stk_code'], 'stk_code')
+ ->add($detail['description'], 'description')
+ ->add($detail['unit_price'], 'unit_price', false)
+ ->add($detail['discount_percent'], 'discount_percent', false);
+
+ foreach($splits as $split) {
+ $set = new SqlSet($common_set);
+ $set->addDate($split->start_date, 'hold_until_date')
+ ->addDate($split->end_date, 'expiry_date')
+ ->add($split->quantity, 'quantity', false);
+ display_warning($set->toString());
+ db_query("INSERT INTO ".TB_PREF."sales_order_details
+ SET {$set->toString()}
+ , priority = '$priority' + INTERVAL ${priority_offset} second"
+ ,"Problem spliting order details $detail_id");
+ $priority_offset++;
+ }
+
+ return true;
+
+
+ }
+