From 28ec9cb7b9004bf2b920b761cec57397f70ccb05 Mon Sep 17 00:00:00 2001 From: devansh bawari Date: Mon, 16 Aug 2021 17:29:16 +0530 Subject: [PATCH 1/4] Total Unpaid Invoices Added --- .../Http/Controllers/DashboardController.php | 40 +++++++++++++++---- .../Resources/views/dashboard/index.blade.php | 26 ++++++++++++ 2 files changed, 58 insertions(+), 8 deletions(-) diff --git a/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php b/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php index 631db0008..52956a274 100755 --- a/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php @@ -2,12 +2,13 @@ namespace Webkul\Admin\Http\Controllers; -use Illuminate\Support\Facades\DB; use Carbon\Carbon; -use Webkul\Sales\Repositories\OrderRepository; -use Webkul\Sales\Repositories\OrderItemRepository; +use Illuminate\Support\Facades\DB; use Webkul\Customer\Repositories\CustomerRepository; use Webkul\Product\Repositories\ProductInventoryRepository; +use Webkul\Sales\Repositories\InvoiceRepository; +use Webkul\Sales\Repositories\OrderItemRepository; +use Webkul\Sales\Repositories\OrderRepository; class DashboardController extends Controller { @@ -32,6 +33,13 @@ class DashboardController extends Controller */ protected $orderItemRepository; + /** + * InvoiceRepository object + * + * @var \Webkul\Sales\Repositories\InvoiceRepository + */ + protected $invoiceRepository; + /** * CustomerRepository object * @@ -86,6 +94,7 @@ class DashboardController extends Controller public function __construct( OrderRepository $orderRepository, OrderItemRepository $orderItemRepository, + InvoiceRepository $invoiceRepository, CustomerRepository $customerRepository, ProductInventoryRepository $productInventoryRepository ) @@ -98,6 +107,8 @@ class DashboardController extends Controller $this->orderItemRepository = $orderItemRepository; + $this->invoiceRepository = $invoiceRepository; + $this->customerRepository = $customerRepository; $this->productInventoryRepository = $productInventoryRepository; @@ -149,6 +160,11 @@ class DashboardController extends Controller 'current' => $current = $this->currentOrders()->avg('base_grand_total_invoiced') - $this->currentOrders()->avg('base_grand_total_refunded'), 'progress' => $this->getPercentageChange($previous, $current), ], + 'total_unpaid_invoices' => [ + 'previous' => $previous = $this->getPendingInvoicesBetweenDate($this->lastStartDate, $this->lastEndDate), + 'current' => $current = $this->getPendingInvoicesBetweenDate($this->startDate, $this->endDate), + 'progress' => $this->getPercentageChange($previous, $current), + ], 'top_selling_categories' => $this->getTopSellingCategories(), 'top_selling_products' => $this->getTopSellingProducts(), 'customer_with_most_sales' => $this->getCustomerWithMostSales(), @@ -260,12 +276,12 @@ class DashboardController extends Controller public function setStartEndDate() { $this->startDate = request()->get('start') - ? Carbon::createFromTimeString(request()->get('start') . " 00:00:01") - : Carbon::createFromTimeString(Carbon::now()->subDays(30)->format('Y-m-d') . " 00:00:01"); + ? Carbon::createFromTimeString(request()->get('start') . " 00:00:01") + : Carbon::createFromTimeString(Carbon::now()->subDays(30)->format('Y-m-d') . " 00:00:01"); $this->endDate = request()->get('end') - ? Carbon::createFromTimeString(request()->get('end') . " 23:59:59") - : Carbon::now(); + ? Carbon::createFromTimeString(request()->get('end') . " 23:59:59") + : Carbon::now(); if ($this->endDate > Carbon::now()) { $this->endDate = Carbon::now(); @@ -275,7 +291,6 @@ class DashboardController extends Controller $this->lastEndDate = clone $this->startDate; $this->lastStartDate->subDays($this->startDate->diffInDays($this->endDate)); - // $this->lastEndDate->subDays($this->lastStartDate->diffInDays($this->lastEndDate)); } /** @@ -298,6 +313,15 @@ class DashboardController extends Controller return $this->getOrdersBetweenDate($this->startDate, $this->endDate); } + private function getPendingInvoicesBetweenDate($start, $end) + { + return $this->invoiceRepository + ->where('invoices.created_at', '>=', $start) + ->where('invoices.created_at', '<=', $end) + ->where('state', 'pending') + ->sum('grand_total'); + } + /** * Returns orders between two dates * diff --git a/packages/Webkul/Admin/src/Resources/views/dashboard/index.blade.php b/packages/Webkul/Admin/src/Resources/views/dashboard/index.blade.php index f4a3578f0..842bc68d5 100755 --- a/packages/Webkul/Admin/src/Resources/views/dashboard/index.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/dashboard/index.blade.php @@ -125,6 +125,32 @@ +
+
+ {{ __('admin::app.dashboard.total-unpaid-invoices') }} +
+ +
+ {{ core()->formatBasePrice($statistics['total_unpaid_invoices']['current']) }} + + + @if ($statistics['total_unpaid_invoices']['progress'] < 0) + + {{ __('admin::app.dashboard.decreased', [ + 'progress' => -number_format($statistics['total_unpaid_invoices']['progress'], 1) + ]) + }} + @else + + {{ __('admin::app.dashboard.increased', [ + 'progress' => number_format($statistics['total_unpaid_invoices']['progress'], 1) + ]) + }} + @endif + +
+
+
From 136601a3794bf5bcdd1e7f8894e1629c770aa0cc Mon Sep 17 00:00:00 2001 From: devansh bawari Date: Mon, 16 Aug 2021 17:35:32 +0530 Subject: [PATCH 2/4] Translation Added --- packages/Webkul/Admin/src/Resources/lang/ar/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/de/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/en/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/es/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/fa/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/fr/app.php | 3 ++- packages/Webkul/Admin/src/Resources/lang/it/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/nl/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/pl/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php | 1 + packages/Webkul/Admin/src/Resources/lang/tr/app.php | 1 + 11 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/Webkul/Admin/src/Resources/lang/ar/app.php b/packages/Webkul/Admin/src/Resources/lang/ar/app.php index c3c0dbe40..9dd2e4871 100644 --- a/packages/Webkul/Admin/src/Resources/lang/ar/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/ar/app.php @@ -138,6 +138,7 @@ return [ 'total-orders' => 'مجموع الطلبات', 'total-sale' => 'مجموع المبيعات', 'average-sale' => 'متوسط مبيعات الطلبات', + 'total-unpaid-invoices' => 'إجمالي الفواتير غير المسددة', 'increased' => ':progress% زيادة', 'decreased' => ':progress% نقصان', 'sales' => 'المبيعات', diff --git a/packages/Webkul/Admin/src/Resources/lang/de/app.php b/packages/Webkul/Admin/src/Resources/lang/de/app.php index b767e6cd6..bad0ce3c9 100755 --- a/packages/Webkul/Admin/src/Resources/lang/de/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/de/app.php @@ -137,6 +137,7 @@ return [ 'total-orders' => 'Anzahl Aufträge', 'total-sale' => 'Gesamterlös', 'average-sale' => 'Durchschnitt pro Verkauf', + 'total-unpaid-invoices' => 'Gesamtzahl unbezahlter Rechnungen', 'increased' => ':progress%', 'decreased' => ':progress%', 'sales' => 'Vertrieb', diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index 6e8f8f490..11c66acf5 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -144,6 +144,7 @@ return [ 'total-orders' => 'Total Orders', 'total-sale' => 'Total Sale', 'average-sale' => 'Average Order Sale', + 'total-unpaid-invoices' => 'Total Unpaid Invoices', 'increased' => ':progress%', 'decreased' => ':progress%', 'sales' => 'Sales', diff --git a/packages/Webkul/Admin/src/Resources/lang/es/app.php b/packages/Webkul/Admin/src/Resources/lang/es/app.php index d45188a68..eed77b3dd 100644 --- a/packages/Webkul/Admin/src/Resources/lang/es/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/es/app.php @@ -144,6 +144,7 @@ return [ 'total-orders' => 'Total Pedidos', 'total-sale' => 'Total Ventas', 'average-sale' => 'Promedio de pedidos vendidos', + 'total-unpaid-invoices' => 'Facturas impagas totales', 'increased' => ':progress%', 'decreased' => ':progress%', 'sales' => 'Ventas', diff --git a/packages/Webkul/Admin/src/Resources/lang/fa/app.php b/packages/Webkul/Admin/src/Resources/lang/fa/app.php index 6827bcce5..ce0d5cf8e 100644 --- a/packages/Webkul/Admin/src/Resources/lang/fa/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/fa/app.php @@ -138,6 +138,7 @@ return [ 'total-orders' => 'همه سفارشات', 'total-sale' => 'مجموع فروش', 'average-sale' => 'میانگین فروش', + 'total-unpaid-invoices' => 'مجموع فاکتورهای پرداخت نشده', 'increased' => ':progress%', 'decreased' => ':progress%', 'sales' => 'فروش ها', diff --git a/packages/Webkul/Admin/src/Resources/lang/fr/app.php b/packages/Webkul/Admin/src/Resources/lang/fr/app.php index 87b731506..9acba7612 100644 --- a/packages/Webkul/Admin/src/Resources/lang/fr/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/fr/app.php @@ -144,6 +144,7 @@ return [ 'total-orders' => 'Total des commandes', 'total-sale' => 'Vente totale', 'average-sale' => 'Vente de commande moyenne', + 'total-unpaid-invoices' => 'Total des factures impayées', 'increased' => ':progress%', 'decreased' => ':progress%', 'sales' => 'Ventes', @@ -166,7 +167,7 @@ return [ 'update-success' => 'Sélectionné :resource a été mise à jour avec succès', 'no-resource' => 'La ressource prévue est insuffisante pour l\'action', ], - + 'id' => 'identifiant', 'status' => 'Statut', 'code' => 'Code', diff --git a/packages/Webkul/Admin/src/Resources/lang/it/app.php b/packages/Webkul/Admin/src/Resources/lang/it/app.php index a205bb379..e76214626 100644 --- a/packages/Webkul/Admin/src/Resources/lang/it/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/it/app.php @@ -137,6 +137,7 @@ return [ 'total-orders' => 'Totale Ordini', 'total-sale' => 'Totale Vendite', 'average-sale' => 'Media Ordine di Vendita', + 'total-unpaid-invoices' => 'Totale fatture non pagate', 'increased' => ':progress%', 'decreased' => ':progress%', 'sales' => 'Vendite', diff --git a/packages/Webkul/Admin/src/Resources/lang/nl/app.php b/packages/Webkul/Admin/src/Resources/lang/nl/app.php index 13eccfcb1..e318bbda0 100644 --- a/packages/Webkul/Admin/src/Resources/lang/nl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/nl/app.php @@ -137,6 +137,7 @@ return [ 'total-orders' => 'Totaal aantal bestellingen', 'total-sale' => 'Verkooptotaal', 'average-sale' => 'Gemiddelde orderwaarde', + 'total-unpaid-invoices' => 'Totaal onbetaalde facturen', 'increased' => ':progress%', 'decreased' => ':progress%', 'sales' => 'Verkopen', diff --git a/packages/Webkul/Admin/src/Resources/lang/pl/app.php b/packages/Webkul/Admin/src/Resources/lang/pl/app.php index 9279a8d3d..4eecdc834 100644 --- a/packages/Webkul/Admin/src/Resources/lang/pl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pl/app.php @@ -136,6 +136,7 @@ return [ 'total-orders' => 'Zamówienia ogółem', 'total-sale' => 'Całkowita sprzedaż', 'average-sale' => 'Średnia sprzedaż na zamówienie', + 'total-unpaid-invoices' => 'Łącznie nieopłacone faktury', 'increased' => ':progress%', 'decreased' => ':progress%', 'sales' => 'Sprzedaż', diff --git a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php index c6d0d001c..24ce3d9b2 100755 --- a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php @@ -137,6 +137,7 @@ return [ 'total-orders' => 'Total de Pedidos', 'total-sale' => 'Total de Vendas', 'average-sale' => 'Média por Pedido', + 'total-unpaid-invoices' => 'Total de faturas não pagas', 'increased' => ':progress% AumentoMai', 'decreased' => ':progress% Redução', 'sales' => 'Vendas', diff --git a/packages/Webkul/Admin/src/Resources/lang/tr/app.php b/packages/Webkul/Admin/src/Resources/lang/tr/app.php index 0895a7ce5..52a319f71 100644 --- a/packages/Webkul/Admin/src/Resources/lang/tr/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/tr/app.php @@ -135,6 +135,7 @@ return [ 'total-orders' => 'Tplam Sipariş', 'total-sale' => 'Tplam Satış', 'average-sale' => 'Ortalama Satış', + 'total-unpaid-invoices' => 'Toplam Ödenmemiş Faturalar', 'increased' => ':progress%', 'decreased' => ':progress%', 'sales' => 'Satış', From c38b5d427982ce78a2a573731dde7eeffbea8580 Mon Sep 17 00:00:00 2001 From: devansh bawari Date: Mon, 16 Aug 2021 18:01:51 +0530 Subject: [PATCH 3/4] Percentage Removed From Pending Invoices --- .../Http/Controllers/DashboardController.php | 284 +++++++++--------- .../Resources/views/dashboard/index.blade.php | 18 +- 2 files changed, 147 insertions(+), 155 deletions(-) diff --git a/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php b/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php index 52956a274..473f1f7f6 100755 --- a/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php @@ -20,63 +20,63 @@ class DashboardController extends Controller protected $_config; /** - * OrderRepository object + * Order repository instance. * * @var \Webkul\Sales\Repositories\OrderRepository */ protected $orderRepository; /** - * OrderItemRepository object + * Order item repository instance. * * @var \Webkul\Sales\Repositories\OrderItemRepository */ protected $orderItemRepository; /** - * InvoiceRepository object + * Invoice repository instance. * * @var \Webkul\Sales\Repositories\InvoiceRepository */ protected $invoiceRepository; /** - * CustomerRepository object + * Customer repository instance. * * @var \Webkul\Customer\Repositories\CustomerRepository */ protected $customerRepository; /** - * ProductInventoryRepository object + * Product inventory repository instance. * * @var \Webkul\Product\Repositories\ProductInventoryRepository */ protected $productInventoryRepository; /** - * string object + * Start date. * * @var \Illuminate\Support\Carbon */ protected $startDate; /** - * string object + * Last start date. * * @var \Illuminate\Support\Carbon */ protected $lastStartDate; /** - * string object + * End date. * * @var \Illuminate\Support\Carbon */ protected $endDate; /** - * string object + * Last end date. * * @var \Illuminate\Support\Carbon */ @@ -97,8 +97,7 @@ class DashboardController extends Controller InvoiceRepository $invoiceRepository, CustomerRepository $customerRepository, ProductInventoryRepository $productInventoryRepository - ) - { + ) { $this->_config = request('_config'); $this->middleware('admin'); @@ -114,22 +113,6 @@ class DashboardController extends Controller $this->productInventoryRepository = $productInventoryRepository; } - /** - * Returns percentage difference - * - * @param int $previous - * @param int $current - * @return int - */ - public function getPercentageChange($previous, $current) - { - if (! $previous) { - return $current ? 100 : 0; - } - - return ($current - $previous) / $previous * 100; - } - /** * Display a listing of the resource. * @@ -140,9 +123,12 @@ class DashboardController extends Controller $this->setStartEndDate(); $statistics = [ + /** + * These are the stats with percentage change. + */ 'total_customers' => [ - 'previous' => $previous = $this->getCustomersBetweenDates($this->lastStartDate, $this->lastEndDate)->count(), - 'current' => $current = $this->getCustomersBetweenDates($this->startDate, $this->endDate)->count(), + 'previous' => $previous = $this->getCustomersBetweenDates($this->lastStartDate, $this->lastEndDate), + 'current' => $current = $this->getCustomersBetweenDates($this->startDate, $this->endDate), 'progress' => $this->getPercentageChange($previous, $current), ], 'total_orders' => [ @@ -160,11 +146,11 @@ class DashboardController extends Controller 'current' => $current = $this->currentOrders()->avg('base_grand_total_invoiced') - $this->currentOrders()->avg('base_grand_total_refunded'), 'progress' => $this->getPercentageChange($previous, $current), ], - 'total_unpaid_invoices' => [ - 'previous' => $previous = $this->getPendingInvoicesBetweenDate($this->lastStartDate, $this->lastEndDate), - 'current' => $current = $this->getPendingInvoicesBetweenDate($this->startDate, $this->endDate), - 'progress' => $this->getPercentageChange($previous, $current), - ], + + /** + * These are the normal stats. + */ + 'total_unpaid_invoices' => $this->getTotalPendingInvoices(), 'top_selling_categories' => $this->getTopSellingCategories(), 'top_selling_products' => $this->getTopSellingProducts(), 'customer_with_most_sales' => $this->getCustomerWithMostSales(), @@ -184,92 +170,7 @@ class DashboardController extends Controller } /** - * Returns the list of top selling categories - * - * @return \Illuminate\Support\Collection - */ - public function getTopSellingCategories() - { - return $this->orderItemRepository->getModel() - ->leftJoin('products', 'order_items.product_id', 'products.id') - ->leftJoin('product_categories', 'products.id', 'product_categories.product_id') - ->leftJoin('categories', 'product_categories.category_id', 'categories.id') - ->leftJoin('category_translations', 'categories.id', 'category_translations.category_id') - ->where('category_translations.locale', app()->getLocale()) - ->where('order_items.created_at', '>=', $this->startDate) - ->where('order_items.created_at', '<=', $this->endDate) - ->addSelect(DB::raw('SUM(qty_invoiced - qty_refunded) as total_qty_invoiced')) - ->addSelect(DB::raw('COUNT(' . DB::getTablePrefix() . 'products.id) as total_products')) - ->addSelect('order_items.id', 'categories.id as category_id', 'category_translations.name') - ->groupBy('categories.id') - ->havingRaw('SUM(qty_invoiced - qty_refunded) > 0') - ->orderBy('total_qty_invoiced', 'DESC') - ->limit(5) - ->get(); - } - - /** - * Return stock threshold. - * - * @return \Illuminate\Support\Collection - */ - public function getStockThreshold() - { - return $this->productInventoryRepository->getModel() - ->leftJoin('products', 'product_inventories.product_id', 'products.id') - ->select(DB::raw('SUM(qty) as total_qty')) - ->addSelect('product_inventories.product_id') - ->groupBy('product_id') - ->orderBy('total_qty', 'ASC') - ->limit(5) - ->get(); - } - - /** - * Returns top selling products - * - * @return \Illuminate\Support\Collection - */ - public function getTopSellingProducts() - { - return $this->orderItemRepository->getModel() - ->select(DB::raw('SUM(qty_ordered) as total_qty_ordered')) - ->addSelect('id', 'product_id', 'product_type', 'name') - ->where('order_items.created_at', '>=', $this->startDate) - ->where('order_items.created_at', '<=', $this->endDate) - ->whereNull('parent_id') - ->groupBy('product_id') - ->orderBy('total_qty_ordered', 'DESC') - ->limit(5) - ->get(); - } - - /** - * Returns top selling products - * - * @return \Illuminate\Support\Collection - */ - public function getCustomerWithMostSales() - { - $dbPrefix = DB::getTablePrefix(); - - return $this->orderRepository->getModel() - ->leftJoin('refunds', 'orders.id', 'refunds.order_id') - ->select(DB::raw("(SUM({$dbPrefix}orders.base_grand_total) - SUM(IFNULL({$dbPrefix}refunds.base_grand_total, 0))) as total_base_grand_total")) - ->addSelect(DB::raw("COUNT({$dbPrefix}orders.id) as total_orders")) - ->addSelect('orders.id', 'customer_id', 'customer_email', 'customer_first_name', 'customer_last_name') - ->where('orders.created_at', '>=', $this->startDate) - ->where('orders.created_at', '<=', $this->endDate) - ->where('orders.status', '<>', 'closed') - ->where('orders.status', '<>', 'canceled') - ->groupBy('customer_email') - ->orderBy('total_base_grand_total', 'DESC') - ->limit(5) - ->get(); - } - - /** - * Sets start and end date + * Sets start and end date. * * @return void */ @@ -294,7 +195,108 @@ class DashboardController extends Controller } /** - * Returns previous order query + * Returns percentage difference + * + * @param int $previous + * @param int $current + * @return int + */ + public function getPercentageChange($previous, $current) + { + if (!$previous) { + return $current ? 100 : 0; + } + + return ($current - $previous) / $previous * 100; + } + + /** + * Returns the list of top selling categories. + * + * @return \Illuminate\Support\Collection + */ + public function getTopSellingCategories() + { + return $this->orderItemRepository->getModel() + ->leftJoin('products', 'order_items.product_id', 'products.id') + ->leftJoin('product_categories', 'products.id', 'product_categories.product_id') + ->leftJoin('categories', 'product_categories.category_id', 'categories.id') + ->leftJoin('category_translations', 'categories.id', 'category_translations.category_id') + ->where('category_translations.locale', app()->getLocale()) + ->where('order_items.created_at', '>=', $this->startDate) + ->where('order_items.created_at', '<=', $this->endDate) + ->addSelect(DB::raw('SUM(qty_invoiced - qty_refunded) as total_qty_invoiced')) + ->addSelect(DB::raw('COUNT(' . DB::getTablePrefix() . 'products.id) as total_products')) + ->addSelect('order_items.id', 'categories.id as category_id', 'category_translations.name') + ->groupBy('categories.id') + ->havingRaw('SUM(qty_invoiced - qty_refunded) > 0') + ->orderBy('total_qty_invoiced', 'DESC') + ->limit(5) + ->get(); + } + + /** + * Return stock threshold. + * + * @return \Illuminate\Support\Collection + */ + public function getStockThreshold() + { + return $this->productInventoryRepository->getModel() + ->leftJoin('products', 'product_inventories.product_id', 'products.id') + ->select(DB::raw('SUM(qty) as total_qty')) + ->addSelect('product_inventories.product_id') + ->groupBy('product_id') + ->orderBy('total_qty', 'ASC') + ->limit(5) + ->get(); + } + + /** + * Returns top selling products. + * + * @return \Illuminate\Support\Collection + */ + public function getTopSellingProducts() + { + return $this->orderItemRepository->getModel() + ->select(DB::raw('SUM(qty_ordered) as total_qty_ordered')) + ->addSelect('id', 'product_id', 'product_type', 'name') + ->where('order_items.created_at', '>=', $this->startDate) + ->where('order_items.created_at', '<=', $this->endDate) + ->whereNull('parent_id') + ->groupBy('product_id') + ->orderBy('total_qty_ordered', 'DESC') + ->limit(5) + ->get(); + } + + /** + * Returns cutomer with most sales. + * + * @return \Illuminate\Support\Collection + */ + public function getCustomerWithMostSales() + { + $dbPrefix = DB::getTablePrefix(); + + return $this->orderRepository->getModel() + ->leftJoin('refunds', 'orders.id', 'refunds.order_id') + ->select(DB::raw("(SUM({$dbPrefix}orders.base_grand_total) - SUM(IFNULL({$dbPrefix}refunds.base_grand_total, 0))) as total_base_grand_total")) + ->addSelect(DB::raw("COUNT({$dbPrefix}orders.id) as total_orders")) + ->addSelect('orders.id', 'customer_id', 'customer_email', 'customer_first_name', 'customer_last_name') + ->where('orders.created_at', '>=', $this->startDate) + ->where('orders.created_at', '<=', $this->endDate) + ->where('orders.status', '<>', 'closed') + ->where('orders.status', '<>', 'canceled') + ->groupBy('customer_email') + ->orderBy('total_base_grand_total', 'DESC') + ->limit(5) + ->get(); + } + + /** + * Returns previous order query. * * @return Illuminate\Database\Query\Builder */ @@ -304,7 +306,7 @@ class DashboardController extends Controller } /** - * Returns current order query + * Returns current order query. * * @return Illuminate\Database\Query\Builder */ @@ -313,17 +315,8 @@ class DashboardController extends Controller return $this->getOrdersBetweenDate($this->startDate, $this->endDate); } - private function getPendingInvoicesBetweenDate($start, $end) - { - return $this->invoiceRepository - ->where('invoices.created_at', '>=', $start) - ->where('invoices.created_at', '<=', $end) - ->where('state', 'pending') - ->sum('grand_total'); - } - /** - * Returns orders between two dates + * Returns orders between two dates. * * @param \Illuminate\Support\Carbon $start * @param \Illuminate\Support\Carbon $end @@ -337,16 +330,31 @@ class DashboardController extends Controller } /** - * Returns customers between two dates + * Returns customers between two dates. * * @param \Illuminate\Support\Carbon $start * @param \Illuminate\Support\Carbon $end - * @return Illuminate\Database\Query\Builder + * @return int */ private function getCustomersBetweenDates($start, $end) { - return $this->customerRepository->scopeQuery(function ($query) use ($start, $end) { - return $query->where('customers.created_at', '>=', $start)->where('customers.created_at', '<=', $end); - }); + return $this->customerRepository + ->where('customers.created_at', '>=', $start) + ->where('customers.created_at', '<=', $end) + ->count(); } -} \ No newline at end of file + + /** + * Returns total pending invoices between two dates. + * + * @param \Illuminate\Support\Carbon $start + * @param \Illuminate\Support\Carbon $end + * @return string + */ + private function getTotalPendingInvoices() + { + return $this->invoiceRepository + ->where('state', 'pending') + ->sum('grand_total'); + } +} diff --git a/packages/Webkul/Admin/src/Resources/views/dashboard/index.blade.php b/packages/Webkul/Admin/src/Resources/views/dashboard/index.blade.php index 842bc68d5..574df5342 100755 --- a/packages/Webkul/Admin/src/Resources/views/dashboard/index.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/dashboard/index.blade.php @@ -131,23 +131,7 @@
- {{ core()->formatBasePrice($statistics['total_unpaid_invoices']['current']) }} - - - @if ($statistics['total_unpaid_invoices']['progress'] < 0) - - {{ __('admin::app.dashboard.decreased', [ - 'progress' => -number_format($statistics['total_unpaid_invoices']['progress'], 1) - ]) - }} - @else - - {{ __('admin::app.dashboard.increased', [ - 'progress' => number_format($statistics['total_unpaid_invoices']['progress'], 1) - ]) - }} - @endif - + {{ core()->formatBasePrice($statistics['total_unpaid_invoices']) }}
From 6945c29e32da82bacd4c9b76ab7b48ebdd9d5df6 Mon Sep 17 00:00:00 2001 From: devansh bawari Date: Mon, 16 Aug 2021 18:05:22 +0530 Subject: [PATCH 4/4] Space Added --- .../Webkul/Admin/src/Http/Controllers/DashboardController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php b/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php index 473f1f7f6..25b2f0d54 100755 --- a/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/DashboardController.php @@ -203,7 +203,7 @@ class DashboardController extends Controller */ public function getPercentageChange($previous, $current) { - if (!$previous) { + if (! $previous) { return $current ? 100 : 0; }