Merge branch 'master' into 'spidev'

# Conflicts:
#   Layout/default/header.php
This commit is contained in:
Frank Schubert
2024-01-23 16:07:04 +00:00
40 changed files with 1474 additions and 176 deletions

View File

@@ -1 +1,178 @@
<?php
if($unit->id && !array_key_exists($unit->hausnummer->netzgebiet_id, $my_adb_networks)) {
$this->setFlash("Keine Berechtigung", "error");
mfBaseController::redirect("AddressDB");
}
?>
<?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("AddressDB")?>">GWR / AddressDB</a></li>
<li class="breadcrumb-item"><a href="<?=self::getUrl("AddressDB", "view", ["id" => $unit->hausnummer_id])?>"><?=$unit->hausnummer->getAddress()?></a></li>
<li class="breadcrumb-item active"><?=($unit->id) ? "bearbeiten" : "Neu" ?></li>
</ol>
</div>
<h4 class="page-title">Wohneinheit</h4>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-lg-12">
<div class="card bg-light">
<div class="card-body">
<h4 class="header-title mb-2"><?=($unit->id) ? "Wohneinheit bearbeiten" : "Neue Adresse"?></h4>
<form class="form-horizontal" method="post" action="<?=self::getUrl("ADBWohneinheit", "save")?>">
<input type="hidden" name="id" value="<?=$unit->id?>" />
<div class="card">
<div class="card-body">
<div class="form-group row">
<label class="col-lg-2 col-form-label">Addresse </label>
<div class="col-lg-10">
<input type="text" class="form-control" value="<?=$unit->hausnummer->getAddress()?><?=($unit->hausnummer->rimo_id) ? " - ".$unit->hausnummer->rimo_id : ""?>" disabled="disabled" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="oaid">OAID</label>
<div class="col-lg-10">
<input type="text" class="form-control" value="<?=$unit->oaid?>" disabled="disabled" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="extref">Rimo External ID</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="extref" id="extrefaid" value="<?=$unit->extref?>" />
</div>
</div>
<hr />
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="zusatz">Zusatzbezeichnung</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="zusatz" id="zusatz" value="<?=$unit->zusatz?>" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="block">Block</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="block" id="block" value="<?=$unit->block?>" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="stiege">Stiege</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="stiege" id="stiege" value="<?=$unit->stiege?>" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="stock">Stock</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="stock" id="stock" value="<?=$unit->stock?>" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="tuer">Tür</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="tuer" id="tuer" value="<?=$unit->tuer?>" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="bezeichner">Bezeichner</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="bezeichner" id="bezeichner" value="<?=$unit->bezeichner?>" />
</div>
</div>
<hr />
<div class="form-group row">
<label class="col-lg-2 col-form-label">Patchposition</label>
<div class="col-lg-10">
<input type="text" class="form-control" value="<?=$unit->getPatchEqString?>" disabled="disabled" />
</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>
<?php if((is_object($unit->rimo_workorder) && $unit->rimo_workorder->id) || (is_array($unit->ftu_data) && $unit->ftu_data->id)): ?>
<div class="row mt-2">
<div class="col">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-12">
<table class="table table-sm table-striped">
<tr>
<td colspan="2"><h4>FTU</h4></td>
</tr><tr>
<th>FTU Name:</th>
<td class="text-monospace"><?=$unit->ftu_data["name"]?>
</tr><tr>
<th>FTU External ID</th>
<td class="text-monospace"><?=$unit->ftu_data["id"]?>
</tr><tr>
<td colspan="2"><h4>Workorder</h4></td>
</tr><tr>
<th>Name</th>
<td class="text-monospace"><?=$unit->rimo_workorder->rimo_name?></td>
</tr><tr>
<th>External ID</th>
<td class="text-monospace"><?=$unit->rimo_workorder->rimo_id?></td>
</tr><tr>
<th>Status</th>
<td><?=$unit->rimo_workorder->rimo_status?></td>
</tr><tr>
<th>Erstellt</th>
<td class="text-monospace"><?=(is_object($unit->rimo_workorder)) ? date("d.m.Y H:i:s", $unit->rimo_workorder->create) : ""?></td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<?php endif; ?>
</div>
</div>
</div>
</div>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>

View File

@@ -1,4 +1,3 @@
<?php //var_dump($address->parent->types);exit;?>
<?php
$urlfilter = [];
if($s) {
@@ -255,21 +254,45 @@
<input type="text" class="form-control" name="fibu_account_number" id="fibu_account_number" value="<?=$address->fibu_account_number?>" />
</div>
</div>
<hr />
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="fibu_supplier_number">FIBU Lieferanten Nummer</label>
<label class="col-lg-2 col-form-label" for="fibu_supplier_number">FIBU Lieferantennummer</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="fibu_supplier_number" id="fibu_supplier_number" value="<?=$address->fibu_supplier_number?>" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="fibu_supplier_due">FIBU Lieferanten Zahlungsziel</label>
<label class="col-lg-2 col-form-label" for="fibu_supplier_due">Lieferant Zahlungsziel</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="fibu_supplier_due" id="fibu_supplier_due" value="<?=$address->fibu_supplier_due?>" />
<small>Standard: <?=TT_ADDRESS_DEFAULT_SUPPLIER_DUE?> Tage</small>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="fibu_supplier_skonto">Lieferant Skontotage</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="fibu_supplier_skonto" id="fibu_supplier_skonto" value="<?=$address->fibu_supplier_skonto?>" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="fibu_supplier_skonto_rate">Lieferant Skonto %</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="fibu_supplier_skonto_rate" id="fibu_supplier_skonto_rate" value="<?=$address->fibu_supplier_skonto_rate?>" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2">Lieferant Zahlsperre</label>
<div class="col-lg-10">
<label><input type="checkbox" name="fibu_supplier_paymentblock" id="fibu_supplier_paymentblock" value="1" <?=($address->fibu_supplier_paymentblock) ? "checked='checked'" : ""?> /> Zahlsperre akiviert</label>
</div>
</div>
</div>
</div>
<?php endif; ?>

View File

@@ -39,10 +39,11 @@
<div class="row">
<div class="col">
<a href="https://thetool.xinon.at/xfarm/" class="btn btn-primary" target="_blank"><i class="far fa-arrows-to-circle fa-fw"></i> AR-Merge / Fibu Konten Import</a>
<a href="<?=self::getUrl("Address", "exportBmd")?>" class="ml-2 btn btn-outline-primary" onclick="if(!confirm('Wirklich inkrementellen BMD-Export starten?')) return false;"><i class="fas fa-down-from-dotted-line fa-fw"></i> Inkrementellen BMD-Export starten</a>
<a href="#" class="ml-2 btn btn-outline-primary" onclick="startBmdExport(event, 'inc')"><i class="fas fa-down-from-dotted-line fa-fw"></i> Inkrementellen BMD-Export starten</a>
<?php if($last_bmd_export): ?><small>Letzter Export: <?=date("d.m.Y H:i", $last_bmd_export)?></small><?php endif; ?>
<a href="<?=self::getUrl("Address", "exportBmd", ["type" => "full"])?>" class="btn btn-outline-danger float-right" onclick="if(!confirm('Wirklich vollständigen BMD-Export starten?')) return false;"><i class="fas fa-down-from-line fa-fw"></i> Vollen BMD-Export starten</a>
<a href="#" class="btn btn-outline-danger float-right" onclick="startBmdExport(event, 'full')"><i class="fas fa-down-from-line fa-fw"></i> Vollen BMD-Export starten</a>
<img src="img/ajax-loader.gif" class="float-right mr-2 hidden" id="bmd-export-loader" />
</div>
</div>
</div>
@@ -259,6 +260,30 @@
<script type="text/javascript">
$("#filter_addresstype").select2({closeOnSelect: false});
function startBmdExport(e, type) {
e.preventDefault();
if(type == "inc") {
name = "inkrementellen";
url = "<?=self::getUrl("Address", "exportBmd")?>";
} else if(type == "full") {
name = "VOLLSTÄNDIGEN";
url = "<?=self::getUrl("Address", "exportBmd", ["type" => "full"])?>";
} else {
return false;
}
console.log(name);
if(!confirm("Wirklich " + name + " BMD-Export starten?")) {
return false;
}
$('button, input').prop('disabled', true);
$('a').removeAttr("href");
$("#bmd-export-loader").show();
window.location.href = url;
return false;
}
</script>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>

View File

@@ -123,14 +123,23 @@
<th>Ist primäres Verrechnungskonto</th>
<td><?=($address->fibu_primary_account) ? "<i class='fas fa-check text-success' title='Primäres Verrechnungskonto'></i>" : "<i class='fas fa-xmark text-danger'></i>"?></td>
</tr><tr>
<th>FIBU Verrechnungskonto</th>
<th>Verrechnungskonto</th>
<td><?=$address->fibu_account_number?></td>
</tr><tr>
<th>FIBU Lieferanten Konto</th>
<th>Lieferantenkonto</th>
<td><?=$address->fibu_supplier_number?></td>
</tr><tr>
<th>FIBU Lieferanten Zahlungsziel</th>
<th>Zahlungsziel Lieferant</th>
<td><?=$address->fibu_supplier_due?></td>
</tr><tr>
<th>Lieferant Skontotage</th>
<td><?=$address->fibu_supplier_skonto?></td>
</tr><tr>
<th>Lieferant Skonto %</th>
<td><?=$address->fibu_supplier_skonto_rate?></td>
</tr><tr>
<th>Lieferant Zahlsperre</th>
<td><?=($address->fibu_supplier_paymentblock) ? "<i class='fas fa-xmark text-danger'></i> Automatische Zahlungen gesperrt" : "Nicht gesperrt"?></td>
</tr><tr>
<td colspan="2"><h4>Zusatzdaten</h4></td>
</tr><tr>

View File

@@ -1,9 +1,10 @@
Lieferant;Kunde;address_id;FIBU-Verrechnungsnummer;FIBU Lieferantennummer;Zahlungsziel Lieferant;Firma;Vorname;Nachname;Straße Hausnummer;PLZ;Ort;Land;Telefon;Mobil;Mail;UID;Verrechnungsart;Rechnungsversand;Kreditinstitut;Kontoinhaber;IBAN;BIC
<?php
$header = "FIBU Kontonummber;Zahlungsziel Lieferant;Skontotage;Skontoprozent;Zahlsperre;Vorname;Nachname;Straße Hausnummer;PLZ;Ort;Land;Telefon;Mail;UID;SEPA;Kontoinhaber;IBAN;BIC;customer_numbers\n";
$this->setReturnValue(["header" => $header]);
foreach($addresses as $a):
?>
<?=$a["is_supplier"]?>;<?=$a["is_customer"]?>;<?=$a["id"]?>;<?=$a["fibu_account_number"]?>;<?=$a["fibu_supplier_number"]?>;<?=$a["fibu_supplier_due"]?>;<?=$this->nl2ws($a["company"])?>;<?=$this->nl2ws($a["firstname"])?>;<?=$this->nl2ws($a["lastname"])?>;<?=$this->nl2ws($a["street"])?>;<?=$this->nl2ws($a["$address->zip"])?>;<?=$this->nl2ws($a["city"])?>;<?=$this->nl2ws($a["country"])?>;<?=$this->nl2ws($a["phone"])?>;<?=$this->nl2ws($a["mobile"])?>;<?=$this->nl2ws($a["email"])?>;<?=$this->nl2ws($a["uid"])?>;<?=$a["billing_type"]?>;<?=$a["billing_delivery"]?>;<?=$a["bank"]?>;<?=$a["owner"]?>;<?=$a["iban"]?>;<?=$a["bic"]?>
<?=$a["fibu_account_number"]?>;<?=$a["fibu_supplier_due"]?>;<?=$a["fibu_supplier_skonto"]?>;<?=$a["fibu_supplier_skonto_rate"]?>;<?=$a["fibu_supplier_paymentblock"]?>;<?=$this->nl2ws($a["firstname"])?>;<?=$this->nl2ws($a["lastname"])?>;<?=$this->nl2ws($a["street"])?>;<?=$this->nl2ws($a["zip"])?>;<?=$this->nl2ws($a["city"])?>;<?=$this->nl2ws($a["countrycode"])?>;<?=$this->nl2ws($a["phone"])?>;<?=$this->nl2ws($a["email"])?>;<?=$this->nl2ws($a["uid"])?>;<?=$a["billing_type"]?>;<?=$a["bank_owner"]?>;<?=$a["iban"]?>;<?=$a["bic"]?>;<?=implode(" ",$a["customer_numbers"])?>
<?php
endforeach;

View File

@@ -90,6 +90,17 @@
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="rimo_id">Rimo External ID</label>
<div class="col-lg-10">
<?php if(is_array($save_data) && array_key_exists("rimo_id", $save_data)): ?>
<input type="text" class="form-control" name="rimo_id" id="rimo_id" value="<?=$save_data['rimo_id']?>" />
<?php else: ?>
<input type="text" class="form-control" name="rimo_id" id="rimo_id" value="<?=$address->rimo_id?>" />
<?php endif; ?>
</div>
</div>
<hr />
<div class="form-group row">

View File

@@ -144,7 +144,7 @@
</div>
<div class="float-right">
<a class="btn btn-primary mb-2" href="<?=self::getUrl("AddressDB", "add")?>"><i class="fas fa-plus"></i> Neue Adresse anlegen</a>
<a class="btn btn-outline-violett mb-2" href="#" onclick="return false;"><i class="fas fa-marker"></i> Bulk update</a>
<!--a class="btn btn-outline-violett mb-2" href="#" onclick="return false;"><i class="fas fa-marker"></i> Bulk update</a-->
</div>

View File

@@ -31,7 +31,7 @@
</div>
<div class="row">
<div class="col-8">
<div class="col-6">
<div class="card border-top-primary">
<div class="card-body">
@@ -47,6 +47,9 @@
</tr><tr>
<th>Extref</th>
<td><?=$address->extref?></td>
</tr><tr>
<th>Rimo External ID</th>
<td><?=$address->rimo_id?></td>
</tr><tr>
<th>Netzgebiet</th>
<td><?=$address->netzgebiet->name?></td>
@@ -104,7 +107,7 @@
</div>
</div>
</div>
<div class="col-4">
<div class="col-6">
<div class="card border-top-success pl-2 pr-2">
<div class="card-header">
@@ -113,6 +116,7 @@
<?php if(is_array($address->wohneinheiten) && count($address->wohneinheiten)): ?>
<table class="table table-sm table-striped table-hover">
<tr>
<th></th>
<th>ID</th>
<th>OAID</th>
<th>Status</th>
@@ -121,8 +125,17 @@
</tr>
<?php foreach($address->wohneinheiten as $unit): ?>
<tr>
<td><a href="<?=self::getUrl("ADBWohneinheit", "edit", ["id" => $unit->id])?>"><i class="fas fa-edit"></i></a></td>
<td><?=$unit->id?></td>
<td class="text-pink"><?=$unit->oaid?></td>
<td class="text-pink">
<?php if($unit->oaid): ?>
<?php if(OpenAccessIdModel::getFirst(["oaid" => $unit->oaid])): ?>
<a href="<?=self::getUrl("OpenAccessId", "", ["filter" => ["oaid" => $unit->oaid]])?>" class="text-pink" target="_blank"><?=$unit->oaid?></a>
<?php else: ?>
<?=$unit->oaid?>
<?php endif; ?>
<?php endif; ?>
</td>
<td class="text-monospace"><?=$unit->status->code?> - <?=$unit->status->name?></td>
<td><?=((string)$unit) ? "<strong>".(string)$unit."</strong>" : ""?></td>
<td><?=($unit->extref) ? "[".$unit->extref."]" : ""?></td>

View File

@@ -66,28 +66,53 @@ $chartColors = [
<div class="card bg-light border-top-success">
<div class="card-header pb-0">
<h4 class="card-title">Akquise Statistiken <small>Momentan nur für Admins sichtbar <i class="far fa-smile text-success"></i></small></h4>
<h4 class="card-title">Akquise Statistiken</h4>
</div>
<div class="card-body">
<div class="row mb-2">
<div class="row">
<div class="col">
<label for="campaign_id">Kampagne:</label>
<select name="campaign_id" id="campaign_id" class="form-control">
<option value="0">Alle</option>
<?php foreach($campaigns as $c): ?>
<option value="<?=$c->id?>" <?=($c->id == $campaign_id) ? 'selected="selected"' : ""?>><?=$c->name?></option>
<?php endforeach; ?>
</select>
<div class="card">
<div class="card-body">
<?php if($me->is("Admin")): ?>
<h5 class="mt-3">Netzinhaber:</h5>
<div class="row mb-2">
<div class="col-3 pb-1">
<a href="<?=self::getUrl("Dashboard")?>" class="form-control btn btn-rounded <?=(!$netowner_id) ? "btn-primary" : "btn-outline-primary"?>">Alle</a>
</div>
<?php foreach(AddressModel::search(["addresstype" => ["netowner"]]) as $netowner): ?>
<div class="col-3 pb-1">
<?php if($netowner_id == $netowner->id): ?>
<a href="<?=self::getUrl("Dashboard")?>" class="form-control btn btn-rounded btn-primary"><?=$netowner->getCompanyOrName()?></a>
<?php else: ?>
<a href="<?=self::getUrl("Dashboard", "", ["netowner_id" => $netowner->id])?>" class="form-control btn btn-rounded btn-outline-primary"><?=$netowner->getCompanyOrName()?></a>
<?php endif; ?>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
<label for="campaign_id">Kampagne:</label>
<select name="campaign_id" id="campaign_id" class="form-control">
<option value="0">Alle</option>
<?php foreach($campaigns as $c): ?>
<option value="<?=$c->id?>" <?=($c->id == $campaign_id) ? 'selected="selected"' : ""?>><?=$c->name?></option>
<?php endforeach; ?>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xl-3 col-lg-6">
<div class="card">
<div class="card-body p-0 bg-danger">
<div style="height: 128px;" class="p-3">
<div class="float-right">
<i class="mdi mdi-cart text-white widget-icon"></i>
<i class="fad fa-shopping-cart text-white widget-icon font-24"></i>
</div>
<h5 class="text-white font-weight-normal mt-0">Bestellungen</h5>
<h3 class="mt-2 text-white"><?=$count_orders?> / <?=$max_connections?></h3>
@@ -97,13 +122,28 @@ $chartColors = [
</div> <!-- end card-body-->
</div> <!-- end card-->
</div> <!-- end col-->
<div class="col-xl-3 col-lg-6">
<div class="card">
<div class="card-body p-0 bg-success">
<div style="height: 128px;" class="p-3">
<div class="float-right">
<i class="fas fa-check text-white widget-icon font-24"></i>
</div>
<h5 class="text-white font-weight-normal mt-0">Aktive Anschlüsse</h5>
<h3 class="mt-2 text-white"><?=$status_connected?> / <?=$count_orders?></h3>
</div>
<canvas style="position: absolute; bottom:0;" height="60" id="sparkline4"></canvas>
</div> <!-- end card-body-->
</div> <!-- end card-->
</div> <!-- end col-->
<div class="col-xl-3 col-lg-6">
<div class="card">
<div class="card-body p-0 bg-primary">
<div style="height: 128px;" class="p-3">
<div class="float-right">
<i class="mdi mdi-cart text-white widget-icon"></i>
<i class="fad fa-building text-white widget-icon font-24"></i>
</div>
<h5 class="text-white font-weight-normal mt-0">Status BEP Installed (244, SD)</h5>
<h3 class="mt-2 text-white"><?=$status_connected_single?> / <?=$count_orders?></h3>
@@ -118,7 +158,7 @@ $chartColors = [
<div class="card-body p-0 bg-info">
<div style="height: 128px;" class="p-3">
<div class="float-right">
<i class="mdi mdi-cart text-white widget-icon"></i>
<i class="fad fa-buildings text-white widget-icon font-24"></i>
</div>
<h5 class="text-white font-weight-normal mt-0">Status OTO Installed (245, MD)</h5>
<h3 class="mt-2 text-white"><?=$status_connected_multi?> / <?=$count_orders?></h3>
@@ -128,20 +168,7 @@ $chartColors = [
</div> <!-- end card-->
</div> <!-- end col-->
<div class="col-xl-3 col-lg-6">
<div class="card">
<div class="card-body p-0 bg-warning">
<div style="height: 128px;" class="p-3">
<div class="float-right">
<i class="mdi mdi-cart text-dark widget-icon"></i>
</div>
<h5 class="text-dark font-weight-normal mt-0">Aktive Anschlüsse</h5>
<h3 class="mt-2 text-dark"><?=$status_connected?> / <?=$count_orders?></h3>
</div>
<canvas style="position: absolute; bottom:0;" height="60" id="sparkline4"></canvas>
</div> <!-- end card-body-->
</div> <!-- end card-->
</div> <!-- end col-->
</div>
@@ -159,22 +186,76 @@ $chartColors = [
</div>
<div class="col-12 col-xl-6">
<table>
<?php $i=0; foreach($partner_orders as $provider => $count): ?>
<?php $i=0; foreach($partner_orders as $partner => $count): ?>
<tr style="border-bottom: 1px solid <?=$chartColors[$i]?>;">
<td><span style="background-color: <?=$chartColors[$i]?>; color: <?=$chartColors[$i]?>">##</span></td>
<td class="pl-2 pr-2" style="white-space: nowrap;"><?=round(($count / $total_orders) * 100, 1)?>% (<?=($count)?>)</td>
<td title="<?=$provider?>" style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"><?=$this->strtrim($provider,22)?></td>
<td title="<?=$partner?>" style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"><?=$this->strtrim($partner,22)?></td>
</tr>
<?php $i++; endforeach; ?>
</table>
</div>
<?php else: ?>
<i>Keine Aktiven Anschlüsse</i>
<i>Keine Bestellungen</i>
<?php endif; ?>
</div>
</div>
</div>
</div>
<div class="col-12 col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Bestellstatus je Partner</h4>
<hr />
<div class="row">
<?php if(count($partner_orders_by_status)): ?>
<?php $i=0; foreach($partner_orders_by_status as $partner => $status): ?>
<div class="col-lg-12">
<div class="card">
<div class="card-header no-decoration">
<span class="card-title" title="<?=$partner?>"><?=$this->strtrim($partner, 200)?></span>
</div>
<div class="card-body">
<div class="row">
<div class="col-12 col-xl-6">
<canvas id="partner-status-<?=$i?>"></canvas>
</div>
<div class="col-12 col-xl-6">
<table>
<?php $j=0; foreach($status as $status_id => $count): ?>
<?php if($status_id == "total") continue; ?>
<tr style="border-bottom: 1px solid <?=$chartColors[$j]?>;">
<td class="align-top"><span style="background-color: <?=$chartColors[$j]?>; color: <?=$chartColors[$j]?>">##</span></td>
<td class="align-top pl-2 pr-2" style="white-space: nowrap;"><?=round(($count / $status['total']) * 100, 1)?>% (<?=($count)?>)</td>
<td title="<?=$stati[$status_id]["code"]?> - <?=$stati[$status_id]["name"]?>">
<?=$stati[$status_id]["code"]." - ".$stati[$status_id]["name"]?>
</td>
</tr>
<?php $j++; endforeach; ?>
</table>
</div>
</div>
</div>
</div>
</div>
<?php if($i % 2 != 0): ?>
</div>
<div class="row">
<?php endif; ?>
<?php $i++; endforeach; ?>
<?php if($i % 2 == 0): ?>
</div>
<?php endif; ?>
<?php else: ?>
<i>Keine Bestellungen</i>
<?php endif; ?>
</div>
</div>
</div>
</div>
</div>
@@ -301,6 +382,56 @@ $chartColors = [
<?php endif; ?>
var status = [];
<?php foreach(PreorderstatusModel::getAll() as $status):?>
status[<?=$status->id?>] = {"code": "<?=$status->code?>", "name": "<?=$status->name?>"};
<?php endforeach; ?>
var productCharts = [];
<?php $i=0; foreach($partner_orders_by_status as $partner => $status): ?>
productCharts[<?=$i?>] = new Chart(document.getElementById('partner-status-<?=$i?>').getContext('2d'), {
type: 'doughnut',
data: {
labels: [
<?php foreach($status as $status_id => $count): ?>
<?php if($status_id == "total") continue; ?>
"<?=$stati[$status_id]['code']?> - <?=$stati[$status_id]['name']?> (<?=round($count / $status["total"] * 100, 1)?>%)",
<?php endforeach; ?>
],
datasets: [{
data: [
<?php foreach($status as $status_id => $count): ?>
<?php if($status_id == "total") continue; ?>
<?=$count?>,
<?php endforeach; ?>
],
backgroundColor: [
"<?=implode('","', $chartColors)?>"
],
/*borderColor: [
"#d54369",
"#4592e0"
],*/
borderWidth: 1
}]
},
options: {
scales: {
y: {
beginAtZero: true
}
},
legend: false
}
});
<?php $i++; endforeach; ?>
});
</script>

View File

@@ -0,0 +1,101 @@
<?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("AddressDB")?>">Open Access ID</a></li>
<li class="breadcrumb-item active"><?=($oaid->id) ? "bearbeiten" : "Neu" ?></li>
</ol>
</div>
<h4 class="page-title">Wohneinheit</h4>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-lg-12">
<div class="card bg-light">
<div class="card-body">
<h4 class="header-title mb-2"><?=($oaid->id) ? "Wohneinheit bearbeiten" : "Neue Adresse"?></h4>
<form class="form-horizontal" method="post" action="<?=self::getUrl("OpenAccessId", "changeUnit")?>">
<input type="hidden" name="id" value="<?=$oaid->id?>" />
<div class="card">
<div class="card-body">
<div class="form-group row">
<label class="col-lg-2 col-form-label">OAID</label>
<div class="col-lg-10">
<input type="text" class="form-control" value="<?=$oaid->oaid?>" disabled="disabled" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label">Bisheriger Anschnluss</label>
<div class="col-lg-10">
<?php if($oaid->adb_wohneinheit_id && is_object($oaid->adb_wohneinheit)): ?>
<input type="text" class="form-control" disabled="disabled"
value="[<?=$oaid->adb_wohneinheit->hausnummer->strasse->gemeinde->name?>] <?=$oaid->adb_wohneinheit->hausnummer->plz->plz?><?=$oaid->adb_wohneinheit->hausnummer->ortschaft->name?>, <?=$oaid->adb_wohneinheit->hausnummer->strasse->name?><?=$oaid->adb_wohneinheit->hausnummer->hausnummer?><?=((string)$oaid->adb_wohneinheit) ? " - ".(string)$oaid->adb_wohneinheit : ""?>"
/>
<?php endif; ?>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="new_unit_id">Neuer Anschluss</label>
<div class="col-lg-10">
<input type="text" class="form-control" id="new_unit_id" value="<?=$new_unit_id?>" />
<small>Wohneinheit ID</small>
<p id="new_unit_text" class="text-pink"></p>
</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>
<script type="text/javascript">
$(document).ready(function() {
$("#new_unit_id").change(function() {
var id = $("#new_unit_id").val();
if(!id) return;
$.post("<?=self::getUrl("AddressDB", "api")?>", {
do: "getUnit",
id: id
},
function(success) {
if(success.status == "OK") {
console.log(success.result.string);
$("#new_unit_text").text(success.result.string);
}
},
"json"
);
});
});
</script>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>

View File

@@ -35,8 +35,8 @@
<label class="form-label" for="filter_origin">Herkunft</label>
<select name="filter[origin]" id="filter_origin" class="form-control">
<option value=""></option>
<option value="ofaa" <?=($filter['origin'] == "ofaa") ? "selected='selected'" : ""?>>OFAA</option>
<option value="thetool" <?=($filter['origin'] == "thetool") ? "selected='selected'" : ""?>>thetool</option>
<option value="ofaa" <?=(array_key_exists("origin", $filter) && $filter['origin'] == "ofaa") ? "selected='selected'" : ""?>>OFAA</option>
<option value="thetool" <?=(array_key_exists("origin", $filter) && $filter['origin'] == "thetool") ? "selected='selected'" : ""?>>thetool</option>
</select>
</div>
@@ -84,7 +84,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("OpenAccessId")?>">Filter zurücksetzen</a>
<a class="btn btn-secondary" href="<?=self::getUrl("OpenAccessId", "", ["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>
@@ -121,8 +121,7 @@
<th>OAID Set</th>
<th>Herkunft</th>
<th>Besitzer</th>
<th>Zugewiesen</th>
<th></th>
<th colspan="2" title="Anzahl ADB Wohneinheiten">Zugewiesen</th>
<th>Exportiert</th>
<th></th>
@@ -136,11 +135,15 @@
<td><?=$oaid->origin_id?></td>
<td><?=$oaid->origin?></td>
<td><?=$oaid->owner->getCompanyOrName()?></td>
<td class="text-right <?=($oaid->adb_wohneinheit_count > 1 || $oaid->adb_wohneinheit_id && $oaid->adb_wohneinheit_count < 1) ? "text-danger" : ""?>">
<?=($oaid->adb_wohneinheit_id) ? $oaid->adb_wohneinheit_count."x" : ""?>
</td>
<td>
<?php if($oaid->termination_id): ?>
<?=(is_object($oaid->termination) && $oaid->termination->building_id) ? $oaid->termination->building->getAddress() : ""?>
<?=($oaid->termination->name) ? " - ".$oaid->termination->name : ""?>
<?php elseif($oaid->adb_wohneinheit_id && is_object($oaid->adb_wohneinheit)): ?>
<!--a href="<?=self::getUrl("OpenAccessId", "changeADBWohneinheit", ["id" => $oaid->id])?>" class="mr-1"><i class="fas fa-edit"></i></a-->
[<?=$oaid->adb_wohneinheit->hausnummer->strasse->gemeinde->name?>]
<?=$oaid->adb_wohneinheit->hausnummer->plz->plz?>
<?=$oaid->adb_wohneinheit->hausnummer->ortschaft->name?>,

View File

@@ -312,6 +312,9 @@
<tr>
<th>Building Name:</th>
<td class="text-monospace"><?=$preorder->adb_hausnummer->extref?>
</tr><tr>
<th>Building External ID:</th>
<td class="text-monospace"><?=$preorder->adb_hausnummer->rimo_id?>
</tr><tr>
<th>Home External ID:</th>
<td class="text-monospace"><?=$preorder->adb_wohneinheit->extref?>

View File

@@ -7,7 +7,7 @@
<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("Network")?>">Produktgruppen</a></li>
<li class="breadcrumb-item"><a href="<?=self::getUrl("Productgroup")?>">Produktgruppen</a></li>
<li class="breadcrumb-item active"><?=($group->id) ? "bearbeiten" : "Neu" ?></li>
</ol>
</div>
@@ -48,6 +48,20 @@
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="matchcodeorigin">Contract Matchcode Herkunft</label>
<div class="col-lg-10">
<select class="form-control" name="matchcodeorigin">
<option></option>
<option value="terminationaddress" <?=($group->matchcodeorigin == "terminationaddress" ? "selected='selected'" : "")?>>Anschlussadresse</option>
<option value="address" <?=($group->matchcodeorigin == "address" ? "selected='selected'" : "")?>>Kundenadresse</option>
<option value="voicenumber" <?=($group->matchcodeorigin == "voicenumber" ? "selected='selected'" : "")?>>Voip Nummer</option>
<option value="domain" <?=($group->matchcodeorigin == "domain" ? "selected='selected'" : "")?>>Domain</option>
</select>
</div>
</div>
</div>
</div>

View File

@@ -50,7 +50,7 @@
<select name="address_id" id="address_id" class="form-control">
<option value=""></option>
<?php foreach($addresses as $address): ?>
<option value="<?=$address->id?>" <?=($address->id == $user->address_id || $address->id == $user->address_id) ? "selected='selected'" : ""?>><?=($address->company) ? $address->company : $address->getFullName()?></option>
<option value="<?=$address->id?>" <?=($address->id == $user->address_id || $address->id == $user->address_id) ? "selected='selected'" : ""?>><?=($address->company) ? $address->company : $address->getFullName()?><?=($address->customer_number) ? " (".$address->customer_number.")" : ""?></option>
<?php endforeach; ?>
</select>
</div>
@@ -219,6 +219,13 @@
<label for="can_fibu" class="form-check-label">Buchhaltung</label>
</div>
</div>
<div class="col-4">
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" name="can[Statistics]" id="can_statistics" value="1" <?=($user && $user->can("Statistics")) ? "checked='checked'" : ""?> />
<label for="can_statistics" class="form-check-label">Statistiken anzeigen</label>
</div>
</div>
</div>
<hr />
@@ -248,9 +255,9 @@
<form method="post" action="<?=self::getUrl("User", "generateApikey")?>">
<input type="hidden" name="id" value="<?=$user->id?>" />
<?php if($user->apikey): ?>
<button type="submit" class="btn btn-primary" onclick="if(!confirm('Achtung: Dadurch wird der bisherige API Key ungültig. Wirklich neuen API Key generieren?')) return false;">Neuen API Key generieren</button>
<button type="submit" class="btn btn-outline-primary" onclick="if(!confirm('Achtung: Dadurch wird der bisherige API Key ungültig. Wirklich neuen API Key generieren?')) return false;">Neuen API Key generieren</button>
<?php else: ?>
<button type="submit" class="btn btn-primary">API Key generieren</button>
<button type="submit" class="btn btn-outline-primary">API Key generieren</button>
<?php endif; ?>
</form>
</div>

View File

@@ -9,17 +9,17 @@
<link rel="shortcut icon" href="<?=self::getResourcePath()?>assets/images/favicon.ico">
<!-- App css -->
<link href="<?=self::getResourcePath()?>fontawesome/css/all.min.css?<?=date('U')?>" rel="stylesheet" type="text/css" />
<link href="<?=self::getResourcePath()?>assets/css/bootstrap.min.css?<?=date('U')?>" rel="stylesheet" type="text/css" />
<link href="<?=self::getResourcePath()?>fontawesome/css/all.min.css?<?=$git_merge_ts?>" rel="stylesheet" type="text/css" />
<link href="<?=self::getResourcePath()?>assets/css/bootstrap.min.css?<?=$git_merge_ts?>" rel="stylesheet" type="text/css" />
<link href="<?=self::getResourcePath()?>assets/css/icons.css" rel="stylesheet" type="text/css" />
<link href="<?=self::getResourcePath()?>assets/css/app.css?<?=date('U')?>" rel="stylesheet" type="text/css" />
<link href="<?=self::getResourcePath()?>assets/css/app.css?<?=$git_merge_ts?>" rel="stylesheet" type="text/css" />
<link href="<?=self::getResourcePath()?>assets/css/leaflet.css" rel="stylesheet" type="text/css" />
<link href="<?=self::getResourcePath()?>assets/css/thetool.css?<?=date('U')?>" rel="stylesheet" type="text/css" />
<link href="<?=self::getResourcePath()?>assets/css/thetool.css?<?=$git_merge_ts?>" rel="stylesheet" type="text/css" />
<link href="<?=self::getResourcePath()?>assets/libs/select2/select2.min.css" rel="stylesheet" type="text/css" />
<link href="<?=self::getResourcePath()?>assets/css/bootstrap-select.min.css" rel="stylesheet" type="text/css" />
<link href="<?=self::getResourcePath()?>css/bootstrap-datepicker3.min.css" rel="stylesheet" type="text/css" />
<link href="<?=self::getResourcePath()?>plugins/summernote/summernote-bs4.css" rel="stylesheet" type="text/css" />
<link href="<?=self::getResourcePath()?>datatables/datatables.min.css" rel="stylesheet" type="text/css" />
<link href="<?=self::getResourcePath()?>datatables/datatables.min.css?<?=$git_merge_ts?>" rel="stylesheet" type="text/css" />
<?php if(isset($additionalCSS) && is_array($additionalCSS) && count($additionalCSS)): ?>
<?php foreach($additionalCSS as $css): ?>
@@ -38,7 +38,7 @@
<script type="text/javascript" src="<?=self::getResourcePath()?>js/bootstrap.min.js"></script>
<script type="text/javascript" src="<?=self::getResourcePath()?>assets/js/bootstrap-select.min.js"></script>
<script type="text/javascript" src="<?=self::getResourcePath()?>js/bootstrap-autocomplete.min.js"></script>
<script type="text/javascript" src="<?=self::getResourcePath()?>datatables/datatables.min.js"></script>
<script type="text/javascript" src="<?=self::getResourcePath()?>datatables/datatables.min.js?<?=$git_merge_ts?>"></script>
<?php if(isset($additionalJS) && is_array($additionalJS) && count($additionalJS)): ?>
<?php foreach($additionalJS as $js): ?>