Order (multiple voicenumbers) and Contract changes

This commit is contained in:
Frank Schubert
2024-08-06 19:22:18 +02:00
parent cdf8050a5f
commit b654f1ba18
10 changed files with 343 additions and 108 deletions

View File

@@ -931,7 +931,7 @@ class OrderController extends mfBaseController {
$ext_products = false;
$int_products = false;
$ext_products_nbe = 0;
//var_dump($r->products);exit;
@@ -964,8 +964,8 @@ class OrderController extends mfBaseController {
$product_data['amount'] = (!empty($p['amount'])) ? $p['amount'] : 1;
$product_data["pos"] = ($p["pos"]) ? $p['pos'] : $order->getNewPos();
$product_data["description"] = $p["description"];
$product_data["price"] = $p["price"] ? Layout::commaToDot($p["price"]) : 0;
$product_data["price_setup"] = $p["price_setup"] ? Layout::commaToDot($p["price_setup"]) : 0;
$product_data["price"] = trim($p["price"]) ? Layout::commaToDot(trim($p["price"])) : 0;
$product_data["price_setup"] = trim($p["price_setup"]) ? Layout::commaToDot(trim($p["price_setup"])) : 0;
if($this->me->is("Admin") && $p["price_nne"]) {
$product_data["price_nne"] = Layout::commaToDot($p["price_nne"]);
@@ -1003,29 +1003,44 @@ class OrderController extends mfBaseController {
}
if(array_key_exists(TT_ATTRIB_VOICENUMBER_REQUIRED_NAME, $prod->attributes) && $prod->attributes[TT_ATTRIB_VOICENUMBER_REQUIRED_NAME]->value == 1) {
$voicenumbers = [];
//var_dump($p);exit;
//if($p["voicenumber_custom"]);
if(array_key_exists("voicenumber", $p) && $p["voicenumber"]) {
$number = $p["voicenumber"];
}
if(array_key_exists("voicenumber_custom", $p) && $p["voicenumber_custom"]) {
$number = $p["voicenumber_custom"];
}
$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;
$voicenumbers[] = $number;
$product_data['voicenumber'] = json_encode($voicenumbers);
//var_dump($product_data);exit;
$voicenumbers = [];
//var_dump($p);exit;
//if($p["voicenumber_custom"]);
$numbers = [];
if(array_key_exists("voicenumber", $p) && is_array($p["voicenumber"]) && count($p["voicenumber"])) {
$numbers = $p["voicenumber"];
}
if(array_key_exists("voicenumber_custom", $p) && is_array($p["voicenumber_custom"]) && count($p["voicenumber_custom"])) {
$numbers = array_merge($numbers, $p["voicenumber_custom"]);
}
foreach($numbers as $number) {
if(!$number) continue;
$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;
$voicenumbers[] = $number;
}
if($voicenumbers) {
$product_data['voicenumber'] = json_encode($voicenumbers);
if($p["voiceplan_id"]) {
$product_data["voiceplan_id"] = $p["voiceplan_id"];
} else {
$this->layout()->setFlash("Bitte Sprachtarif bei allen Rufnummern eintragen", "error");
}
//var_dump($product_data);exit;
}
//var_dump($product_data);exit;
} else {
$product_data['voicenumber'] = null;
}
@@ -1038,7 +1053,8 @@ class OrderController extends mfBaseController {
$product = new OrderProduct($orderproduct_id);
$product->update($product_data);
}
//var_dump($product);
if(!$product->save()) {
$this->log->warn("Unable to save OrderProduct:".print_r($product, true));
}
@@ -1052,6 +1068,7 @@ class OrderController extends mfBaseController {
$int_products = true;
}
}
//exit;
if(!$ext_products && !$owner->customer_number) {