From: Maxime Bourget Date: Sat, 8 Jun 2013 16:55:27 +0000 (+0100) Subject: Add offsets. X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=commitdiff_plain;h=10c329521cbb44d0b65378393ab7ec943f345aa8;p=order_line_extra.git Add offsets. --- diff --git a/includes/splitter.inc b/includes/splitter.inc index 1350f9f..06803ed 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,6 +136,19 @@ 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; diff --git a/order_lines_view.php b/order_lines_view.php index 926a8a9..065b364 100644 --- a/order_lines_view.php +++ b/order_lines_view.php @@ -112,8 +112,10 @@ 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'); +qty_cells('After', 'end_offset', 2); qty_cells('Max', 'max_quantity', 6); submit_cells('Split', 'Split'); end_table(); diff --git a/tests/testSplitter.php b/tests/testSplitter.php index 2f5479e..45cc5b7 100644 --- a/tests/testSplitter.php +++ b/tests/testSplitter.php @@ -11,6 +11,8 @@ class splitterTest extends PHPUnit_Framework_TestCase { $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); @@ -54,5 +56,27 @@ class splitterTest extends PHPUnit_Framework_TestCase { 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); + } + } ?>