diff --git a/Layout/default/Dashboard/Dashboard.php b/Layout/default/Dashboard/Dashboard.php
index b38155320..6ebac6122 100644
--- a/Layout/default/Dashboard/Dashboard.php
+++ b/Layout/default/Dashboard/Dashboard.php
@@ -159,22 +159,76 @@ $chartColors = [
- $count): ?>
+ $count): ?>
| ## |
=round(($count / $total_orders) * 100, 1)?>% (=($count)?>) |
- =$this->strtrim($provider,22)?> |
+ =$this->strtrim($partner,22)?> |
- Keine Aktiven Anschlüsse
+ Keine Bestellungen
+
+
+
+
+
Bestellstatus je Partner
+
+
+
+ $status): ?>
+
+
+
+
+
+
+
+
+
+
+ $count): ?>
+
+
+ | ## |
+ =round(($count / $status['total']) * 100, 1)?>% (=($count)?>) |
+ - =$stati[$status_id]["name"]?>" style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
+ =$stati[$status_id]["code"]." - ".$stati[$status_id]["name"]?>
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Keine Bestellungen
+
+
+
+
+
+
@@ -301,6 +355,56 @@ $chartColors = [
+ var status = [];
+
+ status[=$status->id?>] = {"code": "=$status->code?>", "name": "=$status->name?>"};
+
+
+
+
+ var productCharts = [];
+
+ $status): ?>
+ productCharts[=$i?>] = new Chart(document.getElementById('partner-status-=$i?>').getContext('2d'), {
+ type: 'doughnut',
+ data: {
+ labels: [
+ $count): ?>
+
+ =$stati[$status_id]->code?> - =$stati[$status_id]->name?> " (=round($count / $status["total"] * 100, 1)?>%)",
+
+
+ ],
+ datasets: [{
+ data: [
+ $count): ?>
+
+ =$count?>,
+
+ ],
+ backgroundColor: [
+ "=implode('","', $chartColors)?>"
+ ],
+ /*borderColor: [
+ "#d54369",
+ "#4592e0"
+ ],*/
+ borderWidth: 1
+
+ }]
+ },
+ options: {
+ scales: {
+ y: {
+ beginAtZero: true
+ }
+ },
+ legend: false
+
+ }
+ });
+
+
});
diff --git a/application/Dashboard/DashboardController.php b/application/Dashboard/DashboardController.php
index 5adff48a1..5f4ff600a 100644
--- a/application/Dashboard/DashboardController.php
+++ b/application/Dashboard/DashboardController.php
@@ -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);