From 66417f53b6e12033a419a74748207d51c809cbf4 Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Thu, 2 Jun 2022 17:22:19 +0200 Subject: [PATCH] Products in Order Form now dynamic --- Layout/default/Order/Form.php | 317 +++++++++++++++--- Layout/default/Order/Index.php | 14 + Layout/default/User/Form.php | 7 + application/Order/OrderController.php | 25 +- application/Order/OrderModel.php | 1 + application/User/UserController.php | 7 + .../WorkerPermission/WorkerPermission.php | 4 + 7 files changed, 328 insertions(+), 47 deletions(-) diff --git a/Layout/default/Order/Form.php b/Layout/default/Order/Form.php index 0d658aa44..ffeb948de 100644 --- a/Layout/default/Order/Form.php +++ b/Layout/default/Order/Form.php @@ -408,7 +408,7 @@
-
+

Produkte

@@ -416,6 +416,7 @@
+ products) && count($order->products)): ?> products as $product): ?> product->external == 1) { $includes_external_product = true; } + + ?> -
- -
+
+ + +
- - + +
- +
@@ -451,8 +455,8 @@
- - @@ -461,23 +465,23 @@
- - " placeholder="Anzahl/Menge" /> + + " placeholder="Anzahl/Menge" />
- -
- - + +
- - + +
@@ -489,14 +493,14 @@ && $product->product->attributes[TT_ATTRIB_TERMINATION_REQUIRED_NAME]->value == 1) || $product->termination_id ): ?> -
+
- @@ -739,7 +845,8 @@
- + +
@@ -758,10 +865,10 @@ diff --git a/Layout/default/Order/Index.php b/Layout/default/Order/Index.php index e49ca8a9e..b34aa1c7c 100644 --- a/Layout/default/Order/Index.php +++ b/Layout/default/Order/Index.php @@ -277,6 +277,7 @@ +
@@ -538,6 +539,19 @@
+
+
+
+
+
+ + +
+
+
+
+
+
diff --git a/Layout/default/User/Form.php b/Layout/default/User/Form.php index 85c9d0def..2e76f7a39 100644 --- a/Layout/default/User/Form.php +++ b/Layout/default/User/Form.php @@ -57,6 +57,13 @@
+
+ + +
diff --git a/application/Order/OrderController.php b/application/Order/OrderController.php index fdc96c22c..95613800c 100644 --- a/application/Order/OrderController.php +++ b/application/Order/OrderController.php @@ -646,14 +646,17 @@ class OrderController extends mfBaseController { //var_dump($r->products);exit; // validate and add products if(is_array($r->products) && count($r->products)) { - foreach($r->products as $product_id => $p) { - //var_dump($p); - if(!$product_id || !$p["product_id"]) { + foreach($r->products as $pos => $p) { + $orderproduct_id = $p["orderproduct_id"]; + + //var_dump($r);exit; + //var_dump($pos, $p);exit; + if(!$p["product_id"]) { continue; } if($p['delete'] == 1) { - $product = new OrderProduct($product_id); + $product = new OrderProduct($orderproduct_id); $product->delete(); continue; } @@ -661,6 +664,7 @@ class OrderController extends mfBaseController { $prod = new Product($p['product_id']); if(!$prod->id) { $this->log->warn(__CLASS__."::save() Invalid product: ".$p['product_id']); + continue; } $product_data = []; @@ -706,10 +710,10 @@ class OrderController extends mfBaseController { } - if($product_id == "new") { + if(!$orderproduct_id) { $product = OrderProductModel::create($product_data); } else { - $product = new OrderProduct($product_id); + $product = new OrderProduct(); $product->update($product_data); } @@ -886,11 +890,18 @@ class OrderController extends mfBaseController { if($r->filter) { $query["filter"] = $r->filter; } + if($r->return != "index") { + $query['id'] = $new_id; + } $qs = http_build_query($query); $this->layout()->setFlash("Bestellung erfolgreich gespeichert.", "success"); - $this->redirect("Order", "Index", $qs, "order=$new_id-details"); + if($r->return == "index") { + $this->redirect("Order", "Index", $qs, "order=$new_id-details"); + } else { + $this->redirect("Order", "edit", $qs, "order=$new_id-details"); + } } diff --git a/application/Order/OrderModel.php b/application/Order/OrderModel.php index b6a9e5845..fec1d3ba5 100644 --- a/application/Order/OrderModel.php +++ b/application/Order/OrderModel.php @@ -389,6 +389,7 @@ class OrderModel { $status_parts[] = "(Building.network_id = $net_id AND Terminationstatus.code >= ".TT_TERMSTATUS_CONNECTED.")"; } if($filter['network_linked_status'][$net_id] == "building_connected") { + // sometimes terminations are of higher status when buildings are not yet finished, so we get them as well $status_parts[] = "(Building.network_id = $net_id AND (Buildingstatus.code >= ".TT_BUILDINGSTATUS_CONNECTED." OR Terminationstatus.code >= ".TT_TERMSTATUS_ASSIGNED."))"; } if($filter['network_linked_status'][$net_id] == "pipework_needed") { diff --git a/application/User/UserController.php b/application/User/UserController.php index acffbc5c9..5993d6bdb 100644 --- a/application/User/UserController.php +++ b/application/User/UserController.php @@ -133,6 +133,13 @@ class UserController extends mfBaseController { } else { $user->permissions->admin = "false"; } + + if($r->technician == "true") { + $user->permissions->technician = "true"; + } else { + $user->permissions->technician = "false"; + } + $user->permissions->save(); } diff --git a/application/WorkerPermission/WorkerPermission.php b/application/WorkerPermission/WorkerPermission.php index 507c3451c..51307fac2 100644 --- a/application/WorkerPermission/WorkerPermission.php +++ b/application/WorkerPermission/WorkerPermission.php @@ -3,6 +3,7 @@ class WorkerPermission extends mfBaseModel { public $isAdmin = false; public $isTicketadmin = false; + public $isTechnician = false; public function loadByUserId($userid) { $res = $this->db->select($this->table,"*","worker_id=$userid"); @@ -25,6 +26,9 @@ class WorkerPermission extends mfBaseModel { if($this->ticketadmin == 'true') { $this->isTicketadmin = true; } + if($this->technician == 'true') { + $this->isTechnician = true; + } } } \ No newline at end of file