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

@@ -256,6 +256,7 @@
<?php if(is_array($address->contracts) && count($address->contracts)): ?>
<ul class="list-group list-group-flush">
<?php foreach($address->contracts as $contract): ?>
<?php if($contract->owner_id != $address->id) continue; ?>
<li class="list-group-item">
<a href="<?=self::getUrl("Contract", "View", ["id" => $contract->id])?>" class="<?=($contract->price < 0) ? "text-danger" : ""?>">
<?=$contract->product_name?> <?=($contract->matchcode) ? "[".$contract->matchcode."]" : ""?>

View File

@@ -386,7 +386,7 @@
* billingaddress autocomplete
*/
<?php if($contract->billingaddress_id && is_object($contract->billingaddress)): ?>
$('#billingaddress_id').autoComplete('set', { value: <?=$contract->billingaddress_id?>, text: '<?=($contract->billingaddress_id) ? str_replace("'", "\\'", str_replace(["\n", "\r"], " ", $contract->billingaddress->getCompanyOrName()))." (".$contract->billingaddress->zip." ".$contract->billingaddress->city.", ".$contract->billingaddress->street.")" : ""?>'});
$('#billingaddress_id').autoComplete('set', { value: <?=$contract->billingaddress_id?>, text: '<?=($contract->billingaddress_id) ? str_replace("'", "\\'", str_replace(["\n", "\r"], " ", $contract->billingaddress->getCompanyOrName()))." (".$contract->billingaddress->zip." ".$contract->billingaddress->city.", ".$contract->billingaddress->street.")".(($contract->owner->customer_number) ? " [".$contract->owner->customer_number."]" : "") : ""?>'});
<?php else: ?>
$('#billingaddress_id').autoComplete();
<?php endif; ?>

View File

@@ -241,7 +241,6 @@
</div>
</div>
<div class="card border-top-warning">
<div class="card-header">
<h5>Journaleinträge</h5>

View File

@@ -664,31 +664,57 @@
<div class="col-6">
<!-- line to input voicenumber -->
<?php if(is_array($product->voicenumbers) && count($product->voicenumbers)): ?>
Rufnummer: <strong><?=implode("\n<br />", $product->voicenumbers)?></strong> <i class="fas fa-pencil pointer text-primary" onclick="toggleVoicenumberEdit(<?=$i?>)"></i>
Rufnummer: <i class="fas fa-pencil pointer text-primary" onclick="toggleVoicenumberEdit(<?=$i?>)"></i>
<?php $numbers = []; foreach($product->voicenumbers as $voicenumber) { $numbers[] = $voicenumber->getPrettyNumber(); } ?>
<?php if(count($numbers)): ?>
<strong><?=implode(", ", $numbers)?></strong>
<?php endif; ?>
<?php endif; ?>
<div class="row <?=is_array($product->voicenumbers) && count($product->voicenumbers) ? "hidden" : ""?>" id="voicenumber-edit-<?=$i?>">
<div class="col-4" id="voicenumberblock-<?=$i?>-line">
<label class="form-label" for="voicenumberblock-<?=$i?>">Nummernblock *</label>
<select name="voicenumberblock_id" id="voicenumberblock_id-<?=$i?>" class="form-control select2" onchange="loadVoicenumbers(<?=$i?>)">
<option></option>
<option value="portin">Rufnummernportierung</option>
<?php foreach(VoicenumberblockModel::getAll() as $block): ?>
<option value="<?=$block->id?>">+<?=$block->countrycode?> <?=$block->areacode?> (<?=$block->name?>)</option>
<?php endforeach; ?>
</select>
</div>
<div class="col-4 hidden" id="voicenumber-select-<?=$i?>-line">
<label class="form-label" for="voicenumber-<?=$i?>">Rufnummer wählen *</label>
<select name="products[<?=$i?>][voicenumber]" id="voicenumber-<?=$i?>" class="form-control select2">
</select>
</div>
<div class="col">
<div class="row">
<div class="col-4" id="voicenumberblock-voiceplan-<?=$i?>-line">
<label class="form-label" for="voicenumberblock-<?=$i?>">Sprachtarif *</label>
<select name="products[<?=$i?>][voiceplan_id]" id="voiceplan_id-<?=$i?>" class="form-control">
<option></option>
<?php foreach(VoiceplanModel::getAll() as $plan): ?>
<option value="<?=$plan->id?>" <?=($product->voiceplan_id == $plan->id) ? "selected='selected'" : ""?>><?=$plan->name?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="number-lines mt-2">
<?php $num = 0; ?>
<?php foreach($product->voicenumbers as $voicenumber): ?>
<div class="row" id="voicenumber-<?=$i?>-line-<?=$num?>">
<div class="col-4" id="voicenumberblock-<?=$i?>-line-<?=$num?>">
<label class="form-label" for="voicenumberblock-<?=$i?>-<?=$num?>">Nummernblock *</label>
<select name="voicenumberblock_id" id="voicenumberblock_id-<?=$i?>-<?=$num?>" class="form-control select2" onchange="loadVoicenumbers(<?=$i?>, <?=$num?>)" data-i="<?=$i?>" data-num="<?=$num?>" data-number="<?=$voicenumber->getPrettyNumber()?>">
<option></option>
<option value="portin" <?=(!$voicenumber->voicenumberblock_id) ? "selected='selected'" : ""?>>Rufnummernportierung</option>
<?php foreach(VoicenumberblockModel::getAll() as $block): ?>
<option value="<?=$block->id?>" <?=($voicenumber->voicenumberblock_id == $block->id) ? "selected='selected'" : ""?>>+<?=$block->countrycode?> <?=$block->areacode?> (<?=$block->name?>)</option>
<?php endforeach; ?>
</select>
</div>
<div class="col-4 hidden" id="voicenumber-custom-<?=$i?>-line">
<label class="form-label" for="voicenumber_custom-<?=$i?>">Rufnummer eingeben *</label>
<input type="text" class="form-control" name="products[<?=$i?>][voicenumber_custom]" id="voicenumber_custom-<?=$i?>" value="" placeholder="Gesamte Rufnummer (+43 123 456 78 )" />
</div>
<div class="col-4 hidden" id="voicenumber-select-<?=$i?>-line-<?=$num?>">
<label class="form-label" for="voicenumber-<?=$i?>-<?=$num?>">Rufnummer wählen *</label>
<select name="products[<?=$i?>][voicenumber][<?=$num?>]" id="voicenumber-<?=$i?>-<?=$num?>" class="form-control select2" data-number="<?=$voicenumber->number?>" data-number_id="<?=$voicenumber->id?>">
</select>
</div>
<div class="col-4 hidden" id="voicenumber-custom-<?=$i?>-line-<?=$num?>">
<label class="form-label" for="voicenumber_custom-<?=$i?>-<?=$num?>">Rufnummer eingeben *</label>
<input type="text" class="form-control" name="products[<?=$i?>][voicenumber_custom][<?=$num?>]" id="voicenumber_custom-<?=$i?>-<?=$num?>" value="<?=$voicenumber->getPrettyNumber()?>" placeholder="Gesamte Rufnummer (+43 123 456 78 )" />
</div>
</div>
<?php $num++; endforeach; ?>
</div>
</div>
</div>
</div>
@@ -808,30 +834,50 @@
<div class="row mt-1 mb-2 hidden" id="voicenumber-<?=$i?>-line">
<div class="col-6">
<!-- line to input voicenumber -->
<div class="row">
<div class="col-4" id="voicenumberblock-<?=$i?>-line">
<label class="form-label" for="voicenumberblock-<?=$i?>">Nummernblock *</label>
<select name="voicenumberblock_id" id="voicenumberblock_id-<?=$i?>" class="form-control select2" onchange="loadVoicenumbers(<?=$i?>)">
<option></option>
<option value="portin">Rufnummernportierung</option>
<?php foreach(VoicenumberblockModel::getAll() as $block): ?>
<option value="<?=$block->id?>">+<?=$block->countrycode?> <?=$block->areacode?> (<?=$block->name?>)</option>
<?php endforeach; ?>
</select>
</div>
<div class="col-4 hidden" id="voicenumber-select-<?=$i?>-line">
<label class="form-label" for="voicenumber-<?=$i?>">Rufnummer wählen *</label>
<select name="products[<?=$i?>][voicenumber]" id="voicenumber-<?=$i?>" class="form-control select2">
</select>
</div>
<div class="row" id="voicenumber-edit-<?=$i?>">
<div class="col">
<div class="row">
<div class="col-4" id="voicenumberblock-voiceplan-<?=$i?>-line">
<label class="form-label" for="voicenumberblock-<?=$i?>">Sprachtarif *</label>
<select name="products[<?=$i?>][voiceplan_id]" id="voiceplan_id-<?=$i?>" class="form-control">
<option></option>
<?php foreach(VoiceplanModel::getAll() as $plan): ?>
<option value="<?=$plan->id?>"><?=$plan->name?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="number-lines mt-2">
<?php $num = 0; ?>
<div class="row" id="voicenumber-<?=$i?>-line-<?=$num?>">
<div class="col-4" id="voicenumberblock-<?=$i?>-line-<?=$num?>">
<label class="form-label" for="voicenumberblock-<?=$i?>-<?=$num?>">Nummernblock *</label>
<select name="voicenumberblock_id" id="voicenumberblock_id-<?=$i?>-<?=$num?>" class="form-control select2" onchange="loadVoicenumbers(<?=$i?>, <?=$num?>)">
<option></option>
<option value="portin">Rufnummernportierung</option>
<?php foreach(VoicenumberblockModel::getAll() as $block): ?>
<option value="<?=$block->id?>">+<?=$block->countrycode?> <?=$block->areacode?> (<?=$block->name?>)</option>
<?php endforeach; ?>
</select>
</div>
<div class="col-4 hidden" id="voicenumber-custom-<?=$i?>-line">
<label class="form-label" for="voicenumber_custom-<?=$i?>">Rufnummer eingeben *</label>
<input type="text" class="form-control" name="products[<?=$i?>][voicenumber_custom]" id="voicenumber_custom-<?=$i?>" value="" placeholder="Gesamte Rufnummer (+43 123 456 78 )" />
<div class="col-4 hidden" id="voicenumber-select-<?=$i?>-line-<?=$num?>">
<label class="form-label" for="voicenumber-<?=$i?>-<?=$num?>">Rufnummer wählen *</label>
<select name="products[<?=$i?>][voicenumber][<?=$num?>]" id="voicenumber-<?=$i?>-<?=$num?>" class="form-control select2">
</select>
</div>
<div class="col-4 hidden" id="voicenumber-custom-<?=$i?>-line-<?=$num?>">
<label class="form-label" for="voicenumber_custom-<?=$i?>-<?=$num?>">Rufnummer eingeben *</label>
<input type="text" class="form-control" name="products[<?=$i?>][voicenumber_custom][<?=$num?>]" id="voicenumber_custom-<?=$i?>-<?=$num?>" value="" placeholder="Gesamte Rufnummer (+43 123 456 78 )" />
</div>
</div>
<?php $num++; ?>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -1004,8 +1050,6 @@
</div>
</div>
<script type="text/javascript">
$(".select2").select2({
@@ -1286,7 +1330,19 @@
addNewProductLine(Number(id) + 1);
}
$("select[name=voicenumberblock_id]").each(function(i) {
var i = $(this).data("i");
var num = $(this).data("num");
var number = $(this).data("number");
console.log(i, num, number);
if($(this).val().length) {
loadVoicenumbers(i, num, number);
}
});
function toggleVoicenumberEdit(id) {
$('#voicenumber-edit-' + id).toggle();
@@ -1295,16 +1351,17 @@
}
function loadVoicenumbers(id) {
var block_id = $("#voicenumberblock_id-" + id).val();
function loadVoicenumbers(id, num, number = false) {
var block_id = $("#voicenumberblock_id-" + id + "-" + num).val();
if(block_id == "portin") {
$("#voicenumber-select-" + id + "-line").hide();
$("#voicenumber-select-" + id + "-line select").val("");
$("#voicenumber-" + id).empty();
$("#voicenumber-custom-" + id + "-line").show();
//$("#voicenumberblock-" + id + "-line").hide();
$("#voicenumber-select-" + id + "-line-" + num).hide();
$("#voicenumber-select-" + id + "-line-" + num + " select").val("");
$("#voicenumber-" + id + "-" + num).empty();
$("#voicenumber-custom-" + id + "-line-" + num).show();
addPhoneLine(id, num);
//$("#voicenumberblock-" + id + "-line-" + num).hide();
return;
}
@@ -1313,25 +1370,39 @@
$.ajax({
url: "<?=self::getUrl("Voicenumberblock", "api")?>",
type: "POST",
context: id,
context: {
id: id,
num: num,
default_value: number
},
data: {
do: "getFreeNumbers",
id: block_id
},
success: function(success) {
id = this.id;
num = this.num;
default_value = this.default_value;
//console.log(success, id);
if(success.status != "OK") return;
if(("numbers" in success.result) && success.result.numbers.length) {
$("#voicenumber-" + id).empty();
success.result.numbers.forEach(function(num) {
$("#voicenumber-" + id).append("<option value='" + num + "'>+" + num + "</option>");
$("#voicenumber-" + id + "-" + num).empty();
success.result.numbers.forEach(function(number) {
if(number == default_value) {
$("#voicenumber-" + id + "-" + num).append("<option value='" + number + "' selected='selected'>+" + number + "</option>");
} else {
$("#voicenumber-" + id + "-" + num).append("<option value='" + number + "'>+" + number + "</option>");
}
});
//$("#voicenumberblock-" + id + "-line").hide();
$("#voicenumber-custom-" + id + "-line").hide();
$("#voicenumber-custom-" + id + "-line input").val("");
//$("#voicenumberblock-" + id + "-line-" + num).hide();
$("#voicenumber-custom-" + id + "-line-" + num).hide();
$("#voicenumber-custom-" + id + "-line-" + num + " input").val("");
$("#voicenumber-select-" + id + "-line").show();
$("#voicenumber-select-" + id + "-line-" + num).show();
addPhoneLine(id, num);
}
},
@@ -1339,6 +1410,51 @@
});
}
function addPhoneLine(id, num) {
++num;
console.log(id, num);
if($('#voicenumber-' + id + '-line-' + num).length) {
return;
}
console.log("adding " + id + ", " + num);
new_line = '<div class="row" id="voicenumber-' + id + '-line-' + num + '"> \
<div class="col-4 mt-2" id="voicenumberblock-' + id + '-line-' + num + '"> \
<label class="form-label" for="voicenumberblock-' + id + '-' + num + '">Nummernblock</label> \
<select name="voicenumberblock_id" id="voicenumberblock_id-' + id + '-' + num + '" class="form-control select2" onchange="loadVoicenumbers(' + id + ', ' + num + ')"> \
<option></option> \
<option value="portin">Rufnummernportierung</option>';
<?php foreach(VoicenumberblockModel::getAll() as $block): ?>
new_line += '<option value="<?=$block->id?>">+<?=$block->countrycode?> <?=$block->areacode?> (<?=$block->name?>)</option>';
<?php endforeach; ?>
new_line += '</select> \
</div> \
\
<div class="col-4 hidden mt-2" id="voicenumber-select-' + id + '-line-' + num + '"> \
<label class="form-label" for="voicenumber-' + id + '-' + num + '">Rufnummer wählen *</label> \
<select name="products[' + id + '][voicenumber][' + num + ']" id="voicenumber-' + id + '-' + num + '" class="form-control select2"> \
</select> \
</div> \
\
<div class="col-4 hidden mt-2" id="voicenumber-custom-' + id + '-line-' + num + '"> \
<label class="form-label" for="voicenumber_custom-' + id + '-' + num + '">Rufnummer eingeben *</label> \
<input type="text" class="form-control" name="products[' + id + '][voicenumber_custom][' + num + ']" id="voicenumber_custom-' + id + '-' + num + '" value="" placeholder="Gesamte Rufnummer (+43 123 456 78 )" /> \
</div> \
</div>';
$("#voicenumber-edit-" + id + " .number-lines").append(new_line);
$("#voicenumber " + id + "-".select2").select2({
allowClear: true,
placeholder: ""
});
}
/*********************
* Form validation
@@ -1564,7 +1680,7 @@
console.log("empty: " + checkEmpty);
return true;
}
}
@@ -1704,8 +1820,7 @@
<label class="form-label" for="termination_id-' + i +'">Anschluss</label> \
<select name="products[' + i +'][termination_id]" id="termination_id-' + i +'" class="form-control select2"> \
<option></option>';
<?php foreach($terminations as $t): ?>
<?php foreach($terminations as $t): ?>
new_line += '<option value="<?=$t->id?>"><?=$t->code?> - <?=$t->getAddress(true)?></option>';
<?php endforeach; ?>
new_line += '</select> \
@@ -1715,12 +1830,52 @@
<div class="row mt-1 mb-2 hidden" id="voicenumber-' + i + '-line"> \
<!-- line to input voicenumber --> \
<div class="col-6"> \
<label class="form-label" for="voicenumber-' + i + '">Rufnummer</label> \
<textarea class="form-control" name="products[' + i + '][voicenumber]" id="voicenumber-' + i + '" placeholder="Eine Rufnummer pro Zeile (+43 123 456 78)" /></textarea> \
<small>Wenn Rufnummern bekannt sind oder portiert werden (Eine Rufnummer pro Zeile (+43 123 456 78))</small> \
<div class="row"> \
<div class="col-4" id="voicenumberblock-voiceplan-' + i + '-line"> \
<label class="form-label" for="voicenumberblock-' + i + '">Sprachtarif *</label> \
<select name="products[' + i + '][voiceplan_id]" id="voiceplan_id-' + i + '" class="form-control"> \
<option></option>';
<?php foreach(VoiceplanModel::getAll() as $plan): ?>
new_line += '<option value="<?=$plan->id?>"><?=$plan->name?></option>';
<?php endforeach; ?>
new_line += '</select> \
</div> \
</div> \
<div class="row mt-2" id="voicenumber-edit-' + i + '"> \
<div class="col"> \
<!-- line to input voicenumber --> \
<div class="number-lines"> \
<div class="row" id="voicenumber-' + i + '-line-0"> \
<div class="col-4" id="voicenumberblock-' + i + '-line-0"> \
<label class="form-label" for="voicenumberblock-' + i + '-0">Nummernblock *</label> \
<select name="voicenumberblock_id" id="voicenumberblock_id-' + i + '-0" class="form-control select2" onchange="loadVoicenumbers(' + i + ', 0)"> \
<option></option> \
<option value="portin">Rufnummernportierung</option>';
<?php foreach(VoicenumberblockModel::getAll() as $block): ?>
new_line += '<option value="<?=$block->id?>">+<?=$block->countrycode?> <?=$block->areacode?> (<?=$block->name?>)</option>';
<?php endforeach; ?>
new_line += '</select> \
</div> \
\
<div class="col-4 hidden" id="voicenumber-select-' + i + '-line-0"> \
<label class="form-label" for="voicenumber-' + i + '-0">Rufnummer wählen *</label> \
<select name="products[' + i + '][voicenumber][0]" id="voicenumber-' + i + '-0" class="form-control select2"> \
</select> \
</div> \
\
<div class="col-4 hidden" id="voicenumber-custom-' + i + '-line-0"> \
<label class="form-label" for="voicenumber_custom-' + i + '-0">Rufnummer eingeben *</label> \
<input type="text" class="form-control" name="products[' + i + '][voicenumber_custom][0]" id="voicenumber_custom-' + i + '-0" value="" placeholder="Gesamte Rufnummer (+43 123 456 78 )" /> \
</div> \
</div> \
</div> \
</div> \
\
</div> \
\
</div> \
</div> \
\
\
<div class="row mt-1 mb-2"> \
<!-- line 2 --> \
<div class="col-6"> \
@@ -1729,7 +1884,7 @@
</div> \
<div class="col-2"> \
<label class="form-label" for="contract_term-' + i + '">Mindestvertragslaufzeit</label> \
<select class="form-control" name="products[' + i + '][contract_term]" id="contract_term-<?=$i?>" placeholder="Mindestvertragslaufzeit"> \
<select class="form-control" name="products[' + i + '][contract_term]" id="contract_term-' + i +'" placeholder="Mindestvertragslaufzeit"> \
<option value="0">Keine</option> \
<option value="1">1 Monat</option> \
<option value="12">12 Monate</option> \
@@ -1759,9 +1914,9 @@
</div> \
</div> \
';
$('#products-form').append(new_line);
$("#product_id-" + i).select2({
allowClear: true,
placeholder: ""

View File

@@ -779,10 +779,10 @@ class ContractController extends mfBaseController
$contract_data['amount'] = ($r->amount) ? (float)$r->amount : 1;
$contract_data['vatgroup_id'] = $r->vatgroup_id;
$contract_data['sla_id'] = $r->sla_id;
$contract_data['price'] = (float)$r->price;
$contract_data['price_setup'] = (float)$r->price_setup;
$contract_data['price_nne'] = (float)$r->price_nne;
$contract_data['price_nbe'] = (float)$r->price_nbe;
$contract_data['price'] = (float)Layout::commaToDot($r->price);
$contract_data['price_setup'] = (float)Layout::commaToDot($r->price_setup);
$contract_data['price_nne'] = (float)Layout::commaToDot($r->price_nne);
$contract_data['price_nbe'] = (float)Layout::commaToDot($r->price_nbe);
$contract_data['billing_period'] = (int)$r->billing_period;
$contract_data['billing_delay'] = (int)$r->billing_delay;
$contract_data['note'] = $r->note;

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) {

View File

@@ -7,6 +7,7 @@ class OrderProduct extends mfBaseModel {
private $cpeprovisioning;
private $contract;
private $voicenumbers;
private $voiceplan;
private $editor;
private $creator;
@@ -58,8 +59,38 @@ class OrderProduct extends mfBaseModel {
$json = json_decode($this->voicenumber);
if(!is_array($json)) return [];
$this->voicenumbers = $json;
$voicenumbers = [];
foreach($json as $number) {
$number = str_replace("+","",$number);
$voicenumber = VoicenumberModel::getFirst(["number" => $number]);
if($voicenumber) {
$voicenumbers[] = $voicenumber;
} else {
// find block
$block_id = null;
$block = Voicenumberblock::findBlock($number);
if($block) {
$block_id = $block->id;
}
$voicenumber = VoicenumberModel::create([
'voicenumberblock_id' => $block_id,
"contract_id" => null,
'active' => 1,
'activated_date' => date('U'),
'routing' => "kolmisoft",
'number' => $number,
'disabled' => 0
]);
$voicenumbers[] = $voicenumber;
}
}
$this->voicenumbers = $voicenumbers;
return $this->voicenumbers;
}

View File

@@ -6,6 +6,7 @@ class OrderProductModel
public $product_id;
public $termination_id;
public $voicenumber;
public $voiceplan_id;
public $domain;
public $upgrade;
public $amount;

View File

@@ -27,7 +27,7 @@ class Voicenumber extends mfBaseModel {
$return = "0";
}
$prefix .= $this->block->areacode;
$return .= $this->block->areacode." ".substr($this->number, strlen($prefix));
$return .= $this->block->areacode." ".substr($this->number, strlen($prefix)-1);
return $return;
}

View File

@@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
use Phinx\Migration\AbstractMigration;
final class OrderProductAddVoiceplanId extends AbstractMigration
{
public function up(): void
{
if($this->getEnvironment() == "thetool") {
$table = $this->table("OrderProduct");
$table->addColumn("voiceplan_id", "integer", ["null" => true, "default" => null, "after" => "voicenumber"]);
$table->update();
}
if($this->getEnvironment() == "addressdb") {
}
}
public function down(): void
{
if($this->getEnvironment() == "thetool") {
$this->table("OrderProduct")->removeColumn("voiceplan_id")->save();
}
if($this->getEnvironment() == "addressdb") {
}
}
}