Update to Dashboard Preorder statistics
This commit is contained in:
@@ -159,22 +159,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><span style="background-color: <?=$chartColors[$j]?>; color: <?=$chartColors[$j]?>">##</span></td>
|
||||
<td class="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"]?>" style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
|
||||
<?=$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 +355,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>
|
||||
|
||||
@@ -61,6 +61,7 @@ class DashboardController extends mfBaseController {
|
||||
$status_connected = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 500]);
|
||||
|
||||
$partner_orders = $this->getPartnerOrderCount($campaign_ids);
|
||||
$partner_orders_by_status = $this->getPartnerOrdersByStatus($campaign_ids);
|
||||
} else {
|
||||
$campaigns = PreordercampaignModel::search(["owner_id" => $this->me->address_id]);
|
||||
|
||||
@@ -78,7 +79,9 @@ class DashboardController extends mfBaseController {
|
||||
$status_connected_multi = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 245]);
|
||||
|
||||
$status_connected = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 500]);
|
||||
|
||||
$partner_orders = $this->getPartnerOrderCount($campaign_ids);
|
||||
$partner_orders_by_status = $this->getPartnerOrdersByStatus($campaign_ids);
|
||||
}
|
||||
|
||||
$total_orders = $partner_orders["total"];
|
||||
@@ -86,6 +89,13 @@ class DashboardController extends mfBaseController {
|
||||
|
||||
//var_dump($partner_orders);exit;
|
||||
|
||||
$stati = [];
|
||||
foreach(PreorderstatusModel::getAll() as $status) {
|
||||
$stati[$status->id] = ["code" => $status->code, "name" => $status->name];
|
||||
}
|
||||
|
||||
$this->layout()->set("stati", $stati);
|
||||
|
||||
$this->layout()->set("max_connections", $max_connections);
|
||||
$this->layout()->set("count_orders", $count_orders);
|
||||
$this->layout()->set("weekly_orders", $weekly_orders);
|
||||
@@ -95,6 +105,7 @@ class DashboardController extends mfBaseController {
|
||||
$this->layout()->set("status_connected", $status_connected);
|
||||
$this->layout()->set("partner_orders", $partner_orders);
|
||||
$this->layout()->set("total_orders", $total_orders);
|
||||
$this->layout()->set("partner_orders_by_status", $partner_orders_by_status);
|
||||
|
||||
$this->layout()->set("campaigns", $campaigns);
|
||||
$this->layout()->set("campaign_id", $r->campaign_id);
|
||||
@@ -118,19 +129,24 @@ class DashboardController extends mfBaseController {
|
||||
$orders = [];
|
||||
$totals = 0;
|
||||
|
||||
|
||||
foreach(AddressModel::search(["addresstype" => ["salespartner"]]) as $partner) {
|
||||
$count = PreorderModel::count(["partner_id" => $partner->id, "preordercampaign_id" => $preordercampaign_id, "deleted" => 0]);
|
||||
if($count) {
|
||||
if(!array_key_exists($partner->getCompanyOrName(), $orders)) {
|
||||
$orders[$partner->getCompanyOrName()] = $count;
|
||||
$sql = "SELECT COUNT(Preorder.id) as cnt, IF(Address.company IS NOT NULL AND Address.company <> '', Address.company, CONCAT(Address.firstname, ' ', Address.lastname)) as partner FROM Preorder
|
||||
LEFT JOIN Address ON (Preorder.partner_id = Address.id)
|
||||
LEFT JOIN Addresstype ON (Addresstype.address_id = Address.id AND Addresstype.type='salespartner')
|
||||
WHERE Preorder.deleted = 0 AND Preorder.preordercampaign_id IN (".implode(",", $preordercampaign_id).")
|
||||
GROUP BY Address.id
|
||||
";
|
||||
$this->log->debug($sql);
|
||||
$res = $this->db()->query($sql);
|
||||
if($this->db()->num_rows($res)) {
|
||||
while($data = $this->db()->fetch_object($res)) {
|
||||
if($data->partner) {
|
||||
$orders[$data->partner] = $data->cnt;
|
||||
} else {
|
||||
$orders[$partner->getCompanyOrName()] += $count;
|
||||
$orders["Kein Partner"] = $data->cnt;
|
||||
}
|
||||
$totals += $count;
|
||||
$totals += $data->cnt;
|
||||
}
|
||||
}
|
||||
|
||||
arsort($orders);
|
||||
$orders["total"] = $totals;
|
||||
return $orders;
|
||||
@@ -161,6 +177,26 @@ class DashboardController extends mfBaseController {
|
||||
//var_dump($orders);exit;
|
||||
}
|
||||
|
||||
private function getPartnerOrdersByStatus($preordercampaign_id = []) {
|
||||
$orders = [];
|
||||
|
||||
foreach(PreorderModel::search(["preordercampaign_id" => $preordercampaign_id, "deleted" => 0]) as $preorder) {
|
||||
$name = $preorder->partner->getCompanyOrName();
|
||||
if(!$name) $name = "Kein Partner";
|
||||
if(!array_key_exists($name, $orders)) {
|
||||
$orders[$name] = [];
|
||||
$orders[$name]["total"] = 0;
|
||||
}
|
||||
if(!array_key_exists($preorder->status->id, $orders[$name])) {
|
||||
$orders[$name][$preorder->status->id] = 0;
|
||||
}
|
||||
$orders[$name][$preorder->status->id]++;
|
||||
$orders[$name]["total"]++;
|
||||
}
|
||||
//var_dump($orders);exit;
|
||||
return $orders;
|
||||
}
|
||||
|
||||
protected function pdfAction() {
|
||||
$order = new Order(7);
|
||||
$owner = new Address(1);
|
||||
|
||||
Reference in New Issue
Block a user