Order: Save Voicenumber when saving Order and check if number exists
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user