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;
function display_split_area() {
start_table(TABLESTYLE_NOBORDER);
+qty_cells('Before', 'start_offset', -5);
date_cells('Start', 'start_date');
date_cells('End', 'end_date');
+qty_cells('After', 'end_offset', 2);
qty_cells('Max', 'max_quantity', 6);
submit_cells('Split', 'Split');
end_table();
$splitter = new Splitter(array('detail' => $details
,'start_date'=> $start_date
,'end_date' => $end_date
+ ,'start_offset' => 0
+ ,'end_offset' => 0
,'max_quantity' => $max_quantity));
$this->assertEquals($start_date, $splitter->start_date);
$this->assertEquals($end_date, $splitter->end_date);
return array($split->quantity, $split->quantity_dispatched, $split->start_date, $split->end_date);
}, $splits));
}
+
+ /**
+ * @depends testConstruct
+ */
+ public function testAlter($splitter) {
+ $this->assertAlter($splitter, '2013/05/01', 0, '2013/05/01');
+ $this->assertAlter($splitter, '2013/05/01', null, null);
+ }
+
+ public function assertAlter($splitter, $date, $offset, $expected_date) {
+ $split = new Split('2013/01/01');
+ $split->start_date = $date;
+ $splitter->start_offset = $offset;
+ $split->end_date = $date;
+ $splitter->end_offset = $offset;
+
+ $splitter->alterSplit($split);
+
+ $this->assertEquals($split->start_date, $expected_date);
+ $this->assertEquals($split->end_date, $expected_date);
+ }
+
}
?>