Order: Save Voicenumber when saving Order and check if number exists

This commit is contained in:
Frank Schubert
2025-04-22 20:55:49 +02:00
parent eb197ac266
commit 1ad771f527
6 changed files with 124 additions and 4 deletions

View File

@@ -935,6 +935,7 @@ class OrderController extends mfBaseController {
$ext_products_nbe = 0;
//var_dump($r->products);exit;
$orderproduct_warnings = [];
// validate and add products
if(is_array($r->products) && count($r->products)) {
foreach($r->products as $pos => $p) {
@@ -1026,8 +1027,48 @@ class OrderController extends mfBaseController {
if(substr($number, 0, 1) != "+") $number = "+$number";
//if($number && !in_array($number, $voicenumbers)) $voicenumbers[] = $number;
$voicenumbers[] = $number;
$sysnumber = preg_replace('/^\+/', '',$number);
// lookup Voicenumber and add orderproduct_id
$vn = VoicenumberModel::getFirst(["number" => $sysnumber]);
//var_dump($vn);exit;
if($vn && $vn->voicenumberblock_id) { // ignore ported numbers
if($vn->contract_id) {
$contract = ContractModel::getFirstActive(["id" => $vn->contract_id]);
if($contract && $contract->orderproduct_id != $orderproduct_id) {
$this->layout()->setFlash("Rufnummer $sysnumber ist bereits vergeben (Contract " . $contract->id . ")", "error");
$orderproduct_warnings[$orderproduct_id] = "Rufnummer $sysnumber wurde entfernt, da sie bereits in Contract " . $contract->id . " vegeben ist.";
continue;
}
}
if($vn->orderproduct_id && $vn->orderproduct_id != $orderproduct_id) {
$vn_op = new OrderProduct($vn->orderproduct_id);
//var_dump($vn_op);exit;
if($vn_op->id) {
$this->layout()->setFlash("Rufnummer $sysnumber ist bereits vergeben (Bestellung " . $vn_op->order->id . "; " . $vn_op->order->owner->getCompanyOrName() . ")", "error");
$orderproduct_warnings[$orderproduct_id] = "Rufnummer $sysnumber wurde entfernt, da sie bereits für Bestellung " . $vn_op->order->id . " / ".$vn_op->order->owner->getCompanyOrName()." vergeben wurde.";
continue;
}
}
$vn->orderproduct_id = $orderproduct_id;
$vn->save();
$voicenumbers[] = $number;
} elseif(!$vn) {
$block = Voicenumberblock::findBlock($sysnumber);
//var_dump($number, $block);exit;
$vn = VoicenumberModel::create([
"number" => $sysnumber,
"voicenumberblock_id" => ($block) ? $block->id : null,
"orderproduct_id" => $orderproduct_id,
"ported_in" => ($block) ? 0 : 1,
]);
$vn->save();
$voicenumbers[] = $number;
} else {
$voicenumbers[] = $number;
}
}
//var_dump($voicenumbers);exit;
if($voicenumbers) {
$product_data['voicenumber'] = json_encode($voicenumbers);
@@ -1068,6 +1109,13 @@ class OrderController extends mfBaseController {
$int_products = true;
}
}
if(count($orderproduct_warnings)) {
$_SESSION[MFAPPNAME."_orderproduct_warnings"] = [];
foreach($orderproduct_warnings as $orderproduct_id => $msg) {
$_SESSION[MFAPPNAME."_orderproduct_warnings"][$orderproduct_id] = $msg;
}
}
//exit;