Added Voiceplan, Admin IVT product matcher and Voicenumber update

updates number in ContractConfig
This commit is contained in:
Frank Schubert
2023-05-04 15:01:28 +02:00
parent a2b519f6f3
commit 8214acd3e9
42 changed files with 1975 additions and 207 deletions
+15 -3
View File
@@ -10,16 +10,15 @@
<li class="breadcrumb-item active">Admin</li>
</ol>
</div>
<h4 class="page-title">Admin</h4>
<h4 class="page-title">Secret Admin functions</h4>
</div>
</div>
</div>
<!-- end page title -->
<h4>Secret Admin functions</h4>
<div class="row">
<div class="col-12 col-xl-10">
<h5>Network</h5>
<div class="card">
<div class="card-body">
<div class="row col-12">
@@ -29,6 +28,19 @@
</div>
</div>
</div>
<div class="row">
<div class="col-12 col-xl-10">
<h5>IVT</h5>
<div class="card">
<div class="card-body">
<div class="row col-12">
<div><a href="<?=self::getUrl("Admin", "ivtImportMatchProducts")?>">IVT Produkte zu thetool Produkte matchen</a></div>
</div>
</div>
</div>
</div>
</div>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>
@@ -0,0 +1,65 @@
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/header.php"); ?>
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box">
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class="breadcrumb-item"><a href="javascript: void(0);"><?=MFAPPNAME_SLUG?></a></li>
<li class="breadcrumb-item active"><a href="<?=self::getUrl("Admin")?>">Admin</a></li>
<li class="breadcrumb-item active">IVT Product Match</li>
</ol>
</div>
<h4 class="page-title">IVT Product Match</h4>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-12">
<table class="table table-sm table-striped table-hover">
<tr>
<th class="text-right">IVT Produkt</th>
<th>Preis</th>
<th>Interval</th>
<th>Typ</th>
<th style="border-left: 1px solid #000">thetool Produkt</th>
</tr>
<?php foreach($ivtproducts as $ip): ?>
<tr>
<td class="text-right"><?=$ip->name?></td>
<td><?=$ip->price?></td>
<td><?=$ip->interval?></td>
<td><?=$ip->typ?></td>
<td style="border-left: 1px solid #000">
<select class="form-control" name="product[<?=$ip->id?>]" id="product_<?=$ip->id?>">
<option></option>
</select>
</td>
</tr>
<?php endforeach; ?>
</table>
</div>
</div>
<script type="text/javascript">
var products = [
<?php foreach(ProductModel::getActive() as $product): ?>
{id: <?=$product->id?>, name: '<?=$product->name?>'},
<?php endforeach; ?>
];
var new_options = "";
products.forEach(function(product) {
new_options += '<option value=' + product.id + '>' + product.name +'</option>';
});
$("select[name^=product").append(new_options);
$("select[name^=product").select2({placeholder: ""});
</script>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>
+188 -149
View File
@@ -42,153 +42,189 @@
<input type="hidden" name="f" value="<?=$f?>" />
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="owner_id">Vertragsinhaber *</label>
<div class="col-lg-10">
<select class="form-control basicAutoComplete" autocomplete="off" name="owner_id" id="owner_id" data-url="<?=self::getUrl('Address','api')?>?do=findAddress&autocomplete=1" placeholder="Tippen zum Suchen... (Bestandskunden)" data-noresults-text="Keine Suchergebnisse">
<option></option>
</select>
<div class="row">
<div class="col-6">
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="owner_id">Vertragsinhaber *</label>
<div class="col-lg-10">
<select class="form-control basicAutoComplete" autocomplete="off" name="owner_id" id="owner_id" data-url="<?=self::getUrl('Address','api')?>?do=findAddress&autocomplete=1" placeholder="Tippen zum Suchen... (Bestandskunden)" data-noresults-text="Keine Suchergebnisse">
<option></option>
</select>
<!--input type="hidden" name="owner_id" value="<?=$contract->owner_id?>" />
<input type="text" name="owner_text" id="owner_text" class="form-control" value="<?=($contract && $contract->owner_id) ? $contract->owner->getCompanyOrName() : ""?>" placeholder="Vertragsinhaber suchen..." /-->
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="billingaddress_id">Rechnungsempfänger</label>
<div class="col-lg-10">
<select class="form-control basicAutoComplete" autocomplete="off" name="billingaddress_id" id="billingaddress_id" data-url="<?=self::getUrl('Address','api')?>?do=findAddress&autocomplete=1" placeholder="Tippen zum suchen... (Bestandskunden)" data-noresults-text="Keine Suchergebnisse">
<option></option>
</select>
</div>
</div>
<hr />
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="product_id">Produkt *</label>
<div class="col-lg-10">
<select class="form-control basicAutoComplete" autocomplete="off" name="product_id" id="product_id" data-url="<?=self::getUrl('Product','api')?>?do=findProduct&autocomplete=1" placeholder="Tippen zum suchen..." data-noresults-text="Keine Suchergebnisse">
<option></option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="matchcode">Matchcode</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="matchcode" id="matchcode" value="<?=$contract->matchcode?>">
<small class="font-italic">Eindeutige Identifizierung das Produkts. Z.B. Anschlussadresse, Domainname usw.</small>
</div>
</div>
<div class="form-group row" id="termination_row">
<label class="col-lg-2 col-form-label" for="matchcode">Anschluss *</label>
<div class="col-lg-10">
<select name="products[<?=$i?>][termination_id]" id="termination_id-<?=$i?>" class="form-control select2">
<option></option>
<?php foreach($terminations as $t): ?>
<option value="<?=$t->id?>" <?=($t->id == $contract->termination_id) ? "selected='selected'" : ""?>><?=$t->code?> - <?=$t->getAddress()?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="product_name">Individueller Produktname</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="product_name" id="product_name" value="<?=$contract->product_name?>">
<small class="font-italic">Scheint statt dem echten Produktnamen auf der Rechnung auf</small>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="product_info">Produkt Zusatztext</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="product_info" id="product_info" value="<?=$contract->product_info?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="amount">Anzahl</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="amount" id="product_info" placeholder="1" value="<?=$contract->amount?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="price">Preis</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="price" id="price" value="<?=$contract->price?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="price_setup">Preis Setup</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="price_setup" id="price_setup" value="<?=$contract->price_setup?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="price_nne">Preis NNE</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="price_nne" id="price_nne" value="<?=$contract->price_nne?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="price_nbe">Preis NBE</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="price_nbe" id="price_nbe" value="<?=$contract->price_nbe?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="billing_period">Verrechnungsperiode</label>
<div class="col-lg-10">
<select class="form-control" name="billing_period" id="billing_period" placeholder="Verrechnungsperiode">
<option value="1" <?=($product->billing_period == 1) ? "selected='selected'" : ""?>>Monatlich</option>
<option value="12" <?=($product->billing_period == 12) ? "selected='selected'" : ""?>>Jährlich</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="billing_delay">Verzögerter Verrechnungsstart</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="billing_delay" id="billing_delay" placeholder="Freimonate" value="<?=$contract->billing_delay?>">
</div>
</div>
<hr />
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="order_date">Bestelldatum</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="order_date" id="order_date" value="<?=($contract->order_date) ? date("d.m.Y",$contract->order_date) : ""?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="finish_date">Fertigstellungsdatum</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="finish_date" id="finish_date" value="<?=($contract->finish_date) ? date("d.m.Y",$contract->finish_date) : ""?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="cancel_date">Kündigungsdatum</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="cancel_date" id="cancel_date" value="<?=($contract->cancel_date) ? date("d.m.Y", $contract->cancel_date) : ""?>">
</div>
</div>
<!--
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="price_reason">Rabatt</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="price" id="price" value="<?=$contract->price?>">
</div>
</div>
-->
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="billingaddress_id">Rechnungsempfänger</label>
<div class="col-lg-10">
<select class="form-control basicAutoComplete" autocomplete="off" name="billingaddress_id" id="billingaddress_id" data-url="<?=self::getUrl('Address','api')?>?do=findAddress&autocomplete=1" placeholder="Tippen zum suchen... (Bestandskunden)" data-noresults-text="Keine Suchergebnisse">
<option></option>
</select>
<div class="col-6">
<!--<div id="address_results" class="hidden">
<h4>Suchergebnisse</h4>
<table class="table table-sm table-bordered table-striped table-hover bg-lightblue">
<thead>
<tr>
<th></th>
<th>Name</th>
<th>Adresse</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="#" onclick="return false;">KUNDE</a> | <a href="#" onclick="return false;">RECHNUNG</a></td>
<td>Firma Test</td>
<td>Teststraße 12<br />8010 Graz</td>
</tr>
<tr>
<td><a href="#" onclick="return false;">KUNDE</a> | <a href="#" onclick="return false;">RECHNUNG</a></td>
<td>Firma Test</td>
<td>Teststraße 12<br />8010 Graz</td>
</tr>
</tbody>
</table>
</div>-->
</div>
</div>
<hr />
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="product_id">Produkt *</label>
<div class="col-lg-10">
<select class="form-control basicAutoComplete" autocomplete="off" name="product_id" id="product_id" data-url="<?=self::getUrl('Product','api')?>?do=findProduct&autocomplete=1" placeholder="Tippen zum suchen..." data-noresults-text="Keine Suchergebnisse">
<option></option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="matchcode">Matchcode</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="matchcode" id="matchcode" value="<?=$contract->matchcode?>">
<small class="font-italic">Eindeutige Identifizierung das Produkts. Z.B. Anschlussadresse, Domainname usw.</small>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="matchcode">Anschluss</label>
<div class="col-lg-10">
<select name="products[<?=$i?>][termination_id]" id="termination_id-<?=$i?>" class="form-control select2">
<option></option>
<?php foreach($terminations as $t): ?>
<option value="<?=$t->id?>" <?=($t->id == $contract->termination_id) ? "selected='selected'" : ""?>><?=$t->code?> - <?=$t->getAddress()?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="product_name">Individueller Produktname</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="product_name" id="product_name" value="<?=$contract->product_name?>">
<small class="font-italic">Scheint statt dem echten Produktnamen auf der Rechnung auf</small>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="product_info">Produkt Zusatztext</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="product_info" id="product_info" value="<?=$contract->product_info?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="amount">Anzahl</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="amount" id="product_info" placeholder="1" value="<?=$contract->amount?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="price">Preis</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="price" id="price" value="<?=$contract->price?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="price_setup">Preis Setup</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="price_setup" id="price_setup" value="<?=$contract->price_setup?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="price_nne">Preis NNE</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="price_nne" id="price_nne" value="<?=$contract->price_nne?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="price_nbe">Preis NBE</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="price_nbe" id="price_nbe" value="<?=$contract->price_nbe?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="billing_period">Verrechnungsperiode</label>
<div class="col-lg-10">
<select class="form-control" name="billing_period" id="billing_period" placeholder="Verrechnungsperiode">
<option value="1" <?=($product->billing_period == 1) ? "selected='selected'" : ""?>>Monatlich</option>
<option value="12" <?=($product->billing_period == 12) ? "selected='selected'" : ""?>>Jährlich</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="billing_delay">Verzögerter Verrechnungsstart</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="billing_delay" id="billing_delay" placeholder="Freimonate" value="<?=$contract->billing_delay?>">
</div>
</div>
<hr />
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="order_date">Bestelldatum</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="order_date" id="order_date" value="<?=($contract->order_date) ? date("d.m.Y",$contract->order_date) : ""?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="finish_date">Fertigstellungsdatum</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="finish_date" id="finish_date" value="<?=($contract->finish_date) ? date("d.m.Y",$contract->finish_date) : ""?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="cancel_date">Kündigungsdatum</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="cancel_date" id="cancel_date" value="<?=($contract->cancel_date) ? date("d.m.Y", $contract->cancel_date) : ""?>">
</div>
</div>
<!--
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="price_reason">Rabatt</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="price" id="price" value="<?=$contract->price?>">
</div>
</div>
-->
</div>
</div>
</div>
<div class="card">
<div class="card-body" id="link-container">
@@ -246,6 +282,7 @@
</div>
</div>
<script type="text/javascript" src="<?=self::getResourcePath()?>assets/js/pages/contract_form.js"></script>
<script type="text/javascript">
$('#finish_date').datepicker({
language: 'de',
@@ -279,13 +316,6 @@
$('#owner_id').autoComplete();
<?php endif; ?>
$('#owner_id').keydown(function() {
if(event.keyCode == 13) {
event.preventDefault();
return false;
}
});
$('#owner_id').on("autocomplete.select", function(evt, item) {
if(item && item.value === 0) {
$('#owner_id').autoComplete('set', null);
@@ -347,6 +377,9 @@
*/
<?php if($contract->product_id && is_object(($contract->product))): ?>
$('#product_id').autoComplete('set', { value: <?=$contract->product_id?>, text: '<?=($contract->product_id) ? str_replace("'", "\\'", str_replace(["\n", "\r"], " ", $contract->product->name))." [".$contract->product_id."]" : ""?>'});
<?php if(array_key_exists("termination_required", $contract->product) && $contract->product->attributes["termination_required"] != 1): ?>
$("#termination_row").hide();
<?php endif; ?>
<?php else: ?>
$('#product_id').autoComplete();
<?php endif; ?>
@@ -380,6 +413,12 @@
$("#price_nbe").val(p.price_nbe);
$("#billing_delay").val(p.billing_delay);
$("#billing_period").val(p.billing_period);
console.log(p.attributes);
if("attributes" in p && p.attributes.termination_required == 1) {
$("#termination_row").show();
} else {
$("#termination_row").hide();
}
},
"json"
);
+1 -2
View File
@@ -68,7 +68,7 @@
<div class="row mt-2">
<div class="col">
<button type="submit" class="btn btn-primary">Filter anwenden</button>
<a class="btn btn-secondary" href="<?=self::getUrl("Contract")?>">Filter zurücksetzen</a>
<a class="btn btn-secondary" href="<?=self::getUrl("Contract")?>?resetFilter=1">Filter zurücksetzen</a>
</div>
<!--<div class="col">
<button class="btn btn-info" type="button" onclick="refreshMap()"><i class="far fa-map"></i> Auf Karte anzeigen</button>
@@ -141,7 +141,6 @@
<td style="text-align: left; letter-spacing: 4px; font-size: 1.1em;">
<a href="<?=self::getUrl("Contract", "view", ["contract_id" => $contract->id, "s" => $s, "filter" => $filter])?>"><i class="far fa-eyes" title="Aktives Produkt anzeigen"></i></a>
<a href="<?=self::getUrl("Contract", "edit", ["contract_id" => $contract->id, "s" => $s, "filter" => $filter])?>"><i class="far fa-edit" title="Aktives Produkt bearbeiten"></i></a>
<a href="<?=self::getUrl("Contract", "cancel", ["contract_id" => $contract->id, "s" => $s, "filter" => $filter])?>" class="text-danger" title="Produkt kündigen"><i class="far fa-file-slash"></i></a>
<?php if($contract->orderproduct_id): ?><a href="<?=self::getUrl("Order", "edit", ["id" => $contract->orderproduct->order_id])?>"><i class="far fa-file-signature" title="Bestellung anzeigen"></i></a><?php endif; ?>
</td>
</tr>
+5 -4
View File
@@ -22,8 +22,8 @@
<div class="card">
<div class="card-body">
<a href="<?=self::getUrl("Contract","Index", ['filter' => $filter, 's' => $s])?>" class="btn btn-sm btn-secondary mr-1"><i class="fas fa-list"></i> Zurück zur Vertragsübersicht</a>
<a href="<?=self::getUrl("Contract","edit", ['contract_id' => $contract->id, 'filter' => $filter, 's' => $s, 'f' => "view"])?>" class="btn btn-sm btn-outline-success"><i class="fas fa-edit"></i> Vertrag bearbeiten</a>
<a href="<?=self::getUrl("Contract","Index")?>" class="btn btn-sm btn-secondary mr-1"><i class="fas fa-list"></i> Zurück zur Vertragsübersicht</a>
<a href="<?=self::getUrl("Contract","edit", ['contract_id' => $contract->id, 'f' => "view"])?>" class="btn btn-sm btn-outline-success"><i class="fas fa-edit"></i> Vertrag bearbeiten</a>
</div>
</div>
@@ -201,10 +201,11 @@
</tr><tr class="bg-white">
<td colspan="2" class="text-center">
<a href="<?=self::getUrl("Contractconfig", "edit", ["contract_id" => $contract->id])?>"><button type="button" class="btn btn-sm btn-outline-info">Konfiguration bearbeiten</button></a>
<a href="<?=self::getUrl("Contractaccessletter", "view", ["contract_id" => $contract->id])?>"><button type="button" class="btn btn-sm btn-outline-success">Zugangsdaten anzeigen</button></a>
<?php if($contract->finish_date && $contract->finish_date < date('U')): ?>
<button type="button" class="btn btn-sm btn-outline-secondary">Inhaberwechsel</button>
<a href="<?=self::getUrl("Contract", "productchange", ["contract_id" => $contract->id])?>"><button type="button" class="btn btn-sm btn-outline-success">Produkt-/Standortwechsel</button></a>
<button type="button" class="btn btn-sm btn-outline-danger">Kündigen</button>
<a href="<?=self::getUrl("Contract", "productchange", ["contract_id" => $contract->id])?>"><button type="button" class="btn btn-sm btn-outline-purple">Produkt-/Standortwechsel</button></a>
<a href="<?=self::getUrl("Contract", "cancel", ["contract_id" => $contract->id])?>"><button type="button" class="btn btn-sm btn-outline-danger">Kündigen</button></a>
<?php else: ?>
<a href="<?=self::getUrl("Contract", "finishContract", ['contract_id' => $contract->id])?>" onclick="if(!confirm('Jetzt fertigstellen und in Verrechnung geben?')) return false"><button type="button" class="btn btn-sm btn-success">Fertigstellen</button></a>
<?php endif; ?>
+5 -2
View File
@@ -1,3 +1,6 @@
<?php
if(!isset($error_items)) $error_items = [];
?>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/header.php"); ?>
<!-- start page title -->
@@ -23,7 +26,7 @@
<div class="card">
<div class="card-body">
<a href="<?=self::getUrl("Contract","View", ['id' => $contract->id, 'filter' => $filter, 's' => $s])?>" class="btn btn-sm btn-secondary mr-1"><i class="fas fa-list"></i> Zurück zur Vertragsansicht</a>
<a href="<?=self::getUrl("Contract","View", ['id' => $contract->id])?>" class="btn btn-sm btn-secondary mr-1"><i class="fas fa-list"></i> Zurück zur Vertragsansicht</a>
</div>
</div>
@@ -141,7 +144,7 @@
<div class="card">
<div class="card-body">
<a href="<?=self::getUrl("Contract","View", ['id' => $contract->id, 'filter' => $filter, 's' => $s])?>" class="btn btn-sm btn-secondary mr-1"><i class="fas fa-list"></i> Zurück zur Vertragsansicht</a>
<a href="<?=self::getUrl("Contract","View", ['id' => $contract->id])?>" class="btn btn-sm btn-secondary mr-1"><i class="fas fa-list"></i> Zurück zur Vertragsansicht</a>
</div>
</div>
+95
View File
@@ -0,0 +1,95 @@
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/header.php"); ?>
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box">
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class="breadcrumb-item"><a href="<?=self::getUrl("Dashboard")?>"><?=MFAPPNAME_SLUG?></a></li>
<li class="breadcrumb-item"><a href="<?=self::getUrl("Voiceplan")?>">Sprachtarife</a></li>
<li class="breadcrumb-item active"><?=($plan->id) ? "bearbeiten" : "Neu" ?></li>
</ol>
</div>
<h4 class="page-title">Sprachtarife</h4>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<h4 class="header-title mb-2"><?=($plan->id) ? "Sprachtarifpaket bearbeiten" : "Neues Sprachtarifpaket"?></h4>
<form class="form-horizontal" method="post" action="<?=self::getUrl("Voiceplan", "save")?>" enctype="multipart/form-data">
<div class="card">
<div class="card-body">
<input type="hidden" name="id" value="<?=$plan->id?>" />
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="name">Name *</label>
<div class="col-lg-10">
<input type="name" class="form-control" name="name" id="name" value="<?=$plan->name?>" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="description">Beschreibung</label>
<div class="col-lg-10">
<textarea class="form-control" name="description" id="description" /><?=htmlentities($plan->description)?></textarea>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="name">Taktung *</label>
<div class="col-lg-10">
<input type="increment" class="form-control" name="increment" id="increment" value="<?=($plan->increment_first && $plan->increment) ? $plan->increment_first."/".$plan->increment : ""?>" placeholder="60/30" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="first">Destinations kopieren von bestehendem Tarifpaket</label>
<div class="col-lg-10">
<select name="copy_from_plan_id" class="form-control">
<option value=""></option>
<?php foreach(VoiceplanModel::getAll() as $voiceplan): ?>
<option value="<?=$voiceplan->id?>"><?=$voiceplan->name?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="first">oder Destinations Importieren</label>
<div class="col-lg-10">
<input type="file" class="form-control" name="voiceplanfile" />
<small class="text-danger">ACHTUNG: Bestehende Destinations werden gelöscht!</small>
</div>
</div>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2"></label>
<div class="col-lg-10">
<button type="submit" class="btn btn-primary">Speichern</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>
+122
View File
@@ -0,0 +1,122 @@
<?php
$pagination_baseurl = $this->getUrl($Mod,"Index");
$pagination_baseurl_params = ["filter" => $filter];
$pagination_entity_name = "Sprachtarife";
?>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/header.php"); ?>
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box">
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class="breadcrumb-item"><a href="<?=self::getUrl("Dashboard")?>"><?=MFAPPNAME_SLUG?></a></li>
<li class="breadcrumb-item active">Sprachtarife</li>
</ol>
</div>
<h4 class="page-title">Sprachtarife</h4>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body mb-3">
<h4 class="header-title mb-3">Filter</h4>
<form method="get" action="<?=self::getUrl("Voiceplan")?>">
<div class="row">
<div class="col-1">
<label class="form-label" for="filter_name">Name</label>
<input type="text" class="form-control" name="filter[name]" id="filter_name" value="<?=$filter['name']?>" />
</div>
</div>
<div class="row mt-2">
<div class="col">
<button type="submit" class="btn btn-primary">Filter anwenden</button>
<a class="btn btn-secondary" href="<?=self::getUrl("Voiceplan")?>">Filter zurücksetzen</a>
</div>
</div>
</form>
</div>
</div>
<div class="card">
<div class="card-body mb-3">
<div class="row">
<div class="col-12">
<div class="float-left">
<h4 class="header-title">Sprachtarifpakete</h4>
</div>
<div class="float-right">
<a class="btn btn-primary mb-2" href="<?=self::getUrl("Voiceplan", "add")?>"><i class="fas fa-plus"></i> Neues Sprachtarifpaket anlegen</a>
</div>
</div>
</div>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination.php"); ?>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination-summary.php"); ?>
<table class="table table-striped table-hover">
<tr>
<th>Name</th>
<th>Beschreibung</th>
<th>Anzahl Destinations</th>
<th>Erstellt</th>
<th></th>
</tr>
<?php foreach($voiceplans as $plan): ?>
<tr>
<td><a href="<?=self::getUrl("Voiceplan", "view", ['id' => $plan->id])?>"><?=$plan->name?></a></td>
<td><?=$plan->description?></td>
<td><?=VoiceplandestinationModel::count(['voiceplan_id' => $plan->id])?></td>
<td><?=date("d.m.Y H:i", $plan->create)?> (<?=$plan->creator->name?>)</td>
<td style="text-align: left; letter-spacing: 4px; font-size: 1.1em;">
<a href="<?=self::getUrl("Voiceplan", "view", ["id" => $plan->id])?>"><i class="far fa-eyes" title="Anzeigen"></i></a>
<a href="<?=self::getUrl("Voiceplan", "edit", ["id" => $plan->id])?>"><i class="far fa-edit" title="Bearbeiten"></i></a>
<a href="<?=self::getUrl("Voiceplan", "delete", ["id" => $plan->id])?>" onclick="if(!confirm('Sprachtarifpaket wirklich löschen?')) return false;" class="text-danger" title="Löschen"><i class="fas fa-trash"></i></a>
</td>
</tr>
<?php endforeach; ?>
</table>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination-summary.php"); ?>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination.php"); ?>
</div>
</div>
</div>
</div>
<script type="text/javascript">
function toggleBlock(id) {
$('#block-detail-' + id).toggle();
if($('#block-detail-' + id).is(":hidden")) {
$('#block-' + id).removeClass("table-info");
$('#block-' + id).removeClass("text-info");
} else {
$('#block-' + id).addClass("text-info");
$('#block-' + id).addClass("table-info");
}
}
var block;
var hash = window.location.hash.substr(1);
var match = hash.match(/block=(\d+)/);
if(match && match[1]) {
block = match[1]
toggleBlock(block);
}
</script>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>
+105
View File
@@ -0,0 +1,105 @@
<?php
$pagination_baseurl = $this->getUrl($Mod,"View");
$pagination_baseurl_params = ["filter" => $filter, "id" => $plan->id];
$pagination_entity_name = "Destinations";
?>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/header.php"); ?>
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box">
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class="breadcrumb-item"><a href="<?=self::getUrl("Dashboard")?>"><?=MFAPPNAME_SLUG?></a></li>
<li class="breadcrumb-item"><a href="<?=self::getUrl("Voiceplan")?>">Sprachtarife</a></li>
<li class="breadcrumb-item active"><?=$plan->name?></li>
</ol>
</div>
<h4 class="page-title">Sprachtarife</h4>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body mb-3">
<div class="row">
<div class="col-12">
<div class="float-left">
<h4 class="header-title">Destinations für Sprachtarifpaket <?=$plan->name?></h4>
</div>
<div class="float-right">
<a class="btn btn-primary mb-2" href="<?=self::getUrl("Voiceplandestination", "add", ["voiceplan_id" => $plan->id])?>"><i class="fas fa-plus"></i> Neue Destination anlegen</a>
</div>
</div>
</div>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination.php"); ?>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination-summary.php"); ?>
<table class="table table-striped table-hover">
<tr>
<th>Destination</th>
<th>Prefix</th>
<th>Taktung</th>
<th>Einkaufspreis</th>
<th>Verkaufspreis</th>
<th>Erstellt</th>
<th>Bearbeitet</th>
<th></th>
</tr>
<?php foreach($destinations as $destination): ?>
<tr>
<td><?=$destination->destination?></td>
<td><?=$destination->prefix?></td>
<td><?=($destination->increment_first && $destination->increment) ? "$destination->increment_first"."/".$destination->increment : ""?></td>
<td><?=$destination->purchase_price?></td>
<td><?=$destination->price?></td>
<td><?=date("d.m.Y H:i", $plan->create)?> (<?=$plan->creator->name?>)</td>
<td><?=date("d.m.Y H:i", $plan->edit)?> (<?=$plan->editor->name?>)</td>
<td style="text-align: left; letter-spacing: 4px; font-size: 1.1em;">
<a href="<?=self::getUrl("Voiceplandestination", "view", ["id" => $destination->id])?>"><i class="far fa-eyes" title="Anzeigen"></i></a>
<a href="<?=self::getUrl("Voiceplandestination", "edit", ["id" => $destination->id])?>"><i class="far fa-edit" title="Bearbeiten"></i></a>
<a href="<?=self::getUrl("Voiceplandestination", "delete", ["id" => $destination->id])?>" onclick="if(!confirm('Destination wirklich löschen?')) return false;" class="text-danger" title="Löschen"><i class="fas fa-trash"></i></a>
</td>
</tr>
<?php endforeach; ?>
</table>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination-summary.php"); ?>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination.php"); ?>
</div>
</div>
</div>
</div>
<script type="text/javascript">
function toggleBlock(id) {
$('#block-detail-' + id).toggle();
if($('#block-detail-' + id).is(":hidden")) {
$('#block-' + id).removeClass("table-info");
$('#block-' + id).removeClass("text-info");
} else {
$('#block-' + id).addClass("text-info");
$('#block-' + id).addClass("table-info");
}
}
var block;
var hash = window.location.hash.substr(1);
var match = hash.match(/block=(\d+)/);
if(match && match[1]) {
block = match[1]
toggleBlock(block);
}
</script>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>
@@ -0,0 +1,106 @@
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/header.php"); ?>
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box">
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class="breadcrumb-item"><a href="<?=self::getUrl("Dashboard")?>"><?=MFAPPNAME_SLUG?></a></li>
<li class="breadcrumb-item"><a href="<?=self::getUrl("Voiceplan")?>">Sprachtarife</a></li>
<li class="breadcrumb-item"><a href="<?=self::getUrl("Voiceplan", "view", ["id" => $voiceplan->id])?>"></a></li>
<li class="breadcrumb-item active"><?=($plan->id) ? "Destination ".$destination->destination." bearbeiten" : "Neu" ?></li>
</ol>
</div>
<h4 class="page-title">Sprachtarife</h4>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<h4 class="header-title mb-2"><?=($destination->id) ? "Destination bearbeiten" : "Neues Destination"?></h4>
<form class="form-horizontal" method="post" action="<?=self::getUrl("Voiceplandestination", "save")?>">
<div class="card">
<div class="card-body">
<input type="hidden" name="id" value="<?=$destination->id?>" />
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="voiceplan_id">Tarifpaket</label>
<div class="col-lg-10">
<select name="voiceplan_id" class="form-control">
<option value=""></option>
<?php if($destination && $destination->voiceplan_id): ?>
<?php foreach($voiceplans as $vp): ?>
<option value="<?=$vp->id?>" <?=($destination->voiceplan_id == $vp->id) ? "selected='selected'" : ""?>><?=$vp->name?></option>
<?php endforeach; ?>
<?php elseif($voiceplan): ?>
<?php foreach($voiceplans as $vp): ?>
<option value="<?=$vp->id?>" <?=($vp->id == $voiceplan->id) ? "selected='selected'" : ""?>><?=$vp->name?></option>
<?php endforeach; ?>
<?php endif; ?>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="name">Destination Name *</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="destination" id="destination" value="<?=$destination->destination?>" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="prefix">Prefix *</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="prefix" id="prefix" value="<?=$destination->prefix?>" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="purchase_price">Einkaufspreis *</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="purchase_price" id="purchase_price" value="<?=$destination->purchase_price?>" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="price">Verkaufspreis *</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="price" id="price" value="<?=$destination->price?>" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="name">Taktung *</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="increment" id="increment" value="<?=($destination->increment_first && $destination->increment) ? $destination->increment_first."/".$destination->increment : ""?>" placeholder="60/30" />
</div>
</div>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2"></label>
<div class="col-lg-10">
<button type="submit" class="btn btn-primary">Speichern</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>
+4 -1
View File
@@ -45,7 +45,10 @@
</head>
<body>
<script type="text/javascript">
baseurl = '<?=self::getResourcePath()?>';
</script>
<!-- Navigation Bar-->
<header id="topnav">
<?php include(realpath(dirname(__FILE__)."/")."/topbar.php"); ?>