From cdae3cd24aa01ac49b0e982b4a161d2c2236b409 Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Tue, 23 May 2023 16:21:41 +0200 Subject: [PATCH] Added voicenumber to OrderProduct --- Layout/default/Order/Form.php | 45 +++++++++++++++++++++-- application/Order/OrderController.php | 18 +++++++++ application/OrderProduct/OrderProduct.php | 13 +++++++ 3 files changed, 72 insertions(+), 4 deletions(-) diff --git a/Layout/default/Order/Form.php b/Layout/default/Order/Form.php index 4616147ee..88fcedd59 100644 --- a/Layout/default/Order/Form.php +++ b/Layout/default/Order/Form.php @@ -623,7 +623,23 @@ - + product->attributes) && count($product->product->attributes)) + && (array_key_exists(TT_ATTRIB_VOICENUMBER_REQUIRED_NAME, $product->product->attributes) + && $product->product->attributes[TT_ATTRIB_VOICENUMBER_REQUIRED_NAME]->value == 1) + || $product->voicenumber + ): ?> +
+ +
@@ -709,8 +725,6 @@
- -
- +
@@ -1193,6 +1214,13 @@ $('#termination_id-' + id + '-line').hide(); //$('#termination_id-' + id + '-line').hide(); } + + if(typeof p.attributes === 'object' && "needs_number" in p.attributes && p.attributes.needs_number == 1) { + console.log("needs_number"); + $('#voicenumber-' + id + '-line').show(); + } else { + $('#voicenumber-' + id + '-line').hide(); + } }, 'json'); @@ -1509,6 +1537,15 @@
\ \ \ + \ +\
\ \
\ diff --git a/application/Order/OrderController.php b/application/Order/OrderController.php index f870a3cc8..c20415167 100644 --- a/application/Order/OrderController.php +++ b/application/Order/OrderController.php @@ -894,6 +894,24 @@ class OrderController extends mfBaseController { $product_data['termination_id'] = null; } + if(array_key_exists(TT_ATTRIB_VOICENUMBER_REQUIRED_NAME, $prod->attributes) && $prod->attributes[TT_ATTRIB_VOICENUMBER_REQUIRED_NAME]->value == 1) { + $voicenumbers = []; + foreach(explode("\n", $p['voicenumber']) as $number) { + $number = preg_replace('/\D/', '', trim($number)); + if(substr($number, 0, 2) == "00") $number = "+".substr($number, 2); + if(preg_match('/^0[^0]/', $number)) { + $number = "+43".substr($number, 1); + } + if(substr($number, 0, 1) != "+") $number = "+$number"; + if($number && !in_array($number, $voicenumbers)) $voicenumbers[] = $number; + + } + + $product_data['voicenumber'] = json_encode($voicenumbers); + } else { + $product_data['voicenumber'] = null; + } + if(!$orderproduct_id) { $product = OrderProductModel::create($product_data); diff --git a/application/OrderProduct/OrderProduct.php b/application/OrderProduct/OrderProduct.php index d0aaaaae2..51aeab334 100644 --- a/application/OrderProduct/OrderProduct.php +++ b/application/OrderProduct/OrderProduct.php @@ -6,6 +6,7 @@ class OrderProduct extends mfBaseModel { private $termination; private $cpeprovisioning; private $contract; + private $voicenumbers; private $editor; private $creator; @@ -50,6 +51,18 @@ class OrderProduct extends mfBaseModel { return $this->contract; } + if($name == "voicenumbers") { + $this->voicenumbers = []; + if(!$this->voicenumber) return []; + + $json = json_decode($this->voicenumber); + + if(!is_array($json)) return []; + $this->voicenumbers = $json; + + return $this->voicenumbers; + } + if($name == "creator") { $this->creator = mfValuecache::singleton()->get("Worker-id-".$this->create_by); if($this->creator === null) {