diff --git a/Layout/default/Network/Form.php b/Layout/default/Network/Form.php index 729635309..9a73543a1 100644 --- a/Layout/default/Network/Form.php +++ b/Layout/default/Network/Form.php @@ -49,7 +49,20 @@ +
+ +
+ +
+
+ +
diff --git a/Layout/default/Order/Index.php b/Layout/default/Order/Index.php index d0c7c6bd1..06dfe0587 100644 --- a/Layout/default/Order/Index.php +++ b/Layout/default/Order/Index.php @@ -25,6 +25,7 @@
">
+
diff --git a/application/Network/NetworkController.php b/application/Network/NetworkController.php index dee0b6e9a..3d481889e 100644 --- a/application/Network/NetworkController.php +++ b/application/Network/NetworkController.php @@ -76,6 +76,12 @@ class NetworkController extends mfBaseController { $data['name'] = $r->name; $data['note'] = $r->note; + if($r->sytemowner_action_status) { + $data['sytemowner_action_status'] = $r->sytemowner_action_status; + } else { + $data['sytemowner_action_status'] = null; + } + $data['edit_by'] = 1; if($mode == "add") { diff --git a/application/Network/NetworkModel.php b/application/Network/NetworkModel.php index 3cce3dab7..7f5b6a495 100644 --- a/application/Network/NetworkModel.php +++ b/application/Network/NetworkModel.php @@ -3,6 +3,7 @@ class NetworkModel { public $name = null; public $owner_id = null; + public $sytemowner_action_status = null; public $note = null; public $create_by = null; diff --git a/application/Order/OrderController.php b/application/Order/OrderController.php index af07858c6..6f8d73f30 100644 --- a/application/Order/OrderController.php +++ b/application/Order/OrderController.php @@ -103,7 +103,7 @@ class OrderController extends mfBaseController { $order_search[$name] = $value; } } - + //var_dump($order_search);exit; $pagination['maxItems'] = OrderModel::count($order_search); foreach(OrderModel::search($order_search, $pagination) as $order) { if(!array_key_exists($order->id, $orders)) { @@ -111,65 +111,67 @@ class OrderController extends mfBaseController { } } - - $lonelyOrders = []; - unset($order_search["network_id"]); - $order_search['product_id'] = null; - // orders without a product - if($this->me->isAdmin()) { - if(!$this->request->filter['network_id']) { - $lonelies = OrderModel::search($order_search); - } - } else { - $order_search['create_by'] = $this->me->id; - $lonelies = OrderModel::search($order_search); - } - foreach($lonelies as $order) { - if(!array_key_exists($order->id, $orders)) { - $lonelyOrders[$order->id] = $order; - } - } - - // orders with termination product not requiring termination_id - $order_search['product_id'] = ">0"; - $order_search['termination_id'] = null; - if($this->me->isAdmin()) { - if(!$this->request->filter['network_id']) { - $lonelies = OrderModel::search($order_search); - } - } else { - $order_search['create_by'] = $this->me->id; - $lonelies = OrderModel::search($order_search); - } - foreach($lonelies as $order) { - if(!array_key_exists($order->id, $orders)) { - $o = new Order($order->id); - $add = true; - foreach($o->products as $p) { - $attribs = $p->product->attributes; - if(is_array($attribs) && count($attribs)) { - if(array_key_exists(TT_ATTRIB_TERMINATION_REQUIRED_NAME, $attribs) - && $attribs[TT_ATTRIB_TERMINATION_REQUIRED_NAME]->value == 1) { - //$this->log->debug("found additional order where termination_required 0"); - //$lonelyOrders[$order->id] = $order; - $add = false; - break; - } - } else { - $add = true; - } + if(!array_key_exists("network_linked_status", $order_search)) { + $lonelyOrders = []; + unset($order_search["network_id"]); + $order_search['product_id'] = null; + // orders without a product + if($this->me->isAdmin()) { + if(!$this->request->filter['network_id']) { + $lonelies = OrderModel::search($order_search); } - if($add) { + } else { + $order_search['create_by'] = $this->me->id; + $lonelies = OrderModel::search($order_search); + } + foreach($lonelies as $order) { + if(!array_key_exists($order->id, $orders)) { $lonelyOrders[$order->id] = $order; } - - //$lonelyOrders[$order->id] = $order; } + + // orders with termination product not requiring termination_id + $order_search['product_id'] = ">0"; + $order_search['termination_id'] = null; + if($this->me->isAdmin()) { + if(!$this->request->filter['network_id']) { + $lonelies = OrderModel::search($order_search); + } + } else { + $order_search['create_by'] = $this->me->id; + $lonelies = OrderModel::search($order_search); + } + foreach($lonelies as $order) { + if(!array_key_exists($order->id, $orders)) { + $o = new Order($order->id); + $add = true; + foreach($o->products as $p) { + $attribs = $p->product->attributes; + if(is_array($attribs) && count($attribs)) { + if(array_key_exists(TT_ATTRIB_TERMINATION_REQUIRED_NAME, $attribs) + && $attribs[TT_ATTRIB_TERMINATION_REQUIRED_NAME]->value == 1) { + //$this->log->debug("found additional order where termination_required 0"); + //$lonelyOrders[$order->id] = $order; + $add = false; + break; + } + } else { + $add = true; + } + } + if($add) { + $lonelyOrders[$order->id] = $order; + } + + //$lonelyOrders[$order->id] = $order; + } + } + + $this->layout()->set("lonelyOrders", $lonelyOrders); } $this->layout()->set("orders", $orders); - $this->layout()->set("lonelyOrders", $lonelyOrders); $this->layout()->set("pagination", $pagination); } @@ -192,9 +194,18 @@ class OrderController extends mfBaseController { } if($status == "building_connected") { $new_filter["building_status_code"] = ">=".TT_BUILDINGSTATUS_CONNECTED; + $new_filter["termination_status_code"] = "<".TT_TERMSTATUS_CONNECTED; } if($status == "pipework_needed") { $new_filter["building_status_code"] = "<".TT_BUILDINGSTATUS_CONNECTED; + $new_filter["termination_status_code"] = "<".TT_TERMSTATUS_CONNECTED; + } + + if($status == "systemowner_action_status" && $this->me->is("Admin")) { + $new_filter['network_linked_status'] = []; + foreach(NetworkModel::getAll() as $network) { + $new_filter['network_linked_status'][$network->id] = $network->sytemowner_action_status; + } } } diff --git a/application/Order/OrderModel.php b/application/Order/OrderModel.php index ed2d062e5..436be8383 100644 --- a/application/Order/OrderModel.php +++ b/application/Order/OrderModel.php @@ -319,7 +319,34 @@ class OrderModel { if(is_numeric($network_id)) { $where .= " AND Building.network_id=$network_id"; } elseif(is_array($network_id)) { - $where .= " AND Building.network_id IN (". implode(",", $network_id).")"; + //var_dump($filter);exit; + //var_dump($network_id);exit; + if(array_key_exists("network_linked_status", $filter)) { + $status_parts = []; + foreach($network_id as $net_id) { + if(!is_numeric($net_id)) { + continue; + } + if(array_key_exists($net_id, $filter['network_linked_status'])) { + if($filter['network_linked_status'][$net_id] == "term_connected") { + $status_parts[] = "(Building.network_id = $net_id AND Terminationstatus.code >= ".TT_TERMSTATUS_CONNECTED.")"; + } + if($filter['network_linked_status'][$net_id] == "building_connected") { + $status_parts[] = "(Building.network_id = $net_id AND Buildingstatus.code >= ".TT_BUILDINGSTATUS_CONNECTED.")"; + } + if($filter['network_linked_status'][$net_id] == "pipework_needed") { + $status_parts[] = "(Building.network_id = $net_id AND Buildingstatus.code <= ".TT_BUILDINGSTATUS_CONNECTED.")"; + } + } + } + if(count($status_parts)) { + $where .= " AND (".implode(" OR ", $status_parts).")"; + } + } else { + // just search for networks + $where .= " AND Building.network_id IN (". implode(",", $network_id).")"; + } + } }