feat: Add gross and net profit calculations to dashboard analysis and refactor metric retrieval.
This commit is contained in:
parent
14e79054c0
commit
4b1566c1a2
@ -168,50 +168,60 @@ protected function loadData()
|
||||
],
|
||||
];
|
||||
|
||||
$orderQuery = Order::when(! empty($outletIds), fn ($q) => $q->whereIn('outlet_id', $outletIds))
|
||||
->when($dateQuery || ($startDate && $endDate), $filterDate);
|
||||
|
||||
$totalIncome = (clone $orderQuery)->sum('total');
|
||||
$totalCogs = (clone $orderQuery)->sum('cogs');
|
||||
$totalDiscount = (clone $orderQuery)->sum('discount');
|
||||
|
||||
$expenseQuery = Expense::when(! empty($outletIds), fn ($q) => $q->whereIn('outlet_id', $outletIds))
|
||||
->when($dateQuery || ($startDate && $endDate), $filterDate);
|
||||
$totalExpense = $expenseQuery->sum('amount');
|
||||
|
||||
$payrollQuery = Payroll::when(! empty($outletIds), fn ($q) => $q->whereHas('user.outlets', fn ($q2) => $q2->whereIn('outlets.id', $outletIds)))
|
||||
->when($dateQuery || ($startDate && $endDate), $filterDate)
|
||||
->paid();
|
||||
$totalPayroll = $payrollQuery->sum('total_salary');
|
||||
|
||||
$grossProfit = $totalIncome - $totalCogs - $totalDiscount;
|
||||
$netProfit = $grossProfit - $totalExpense - $totalPayroll;
|
||||
|
||||
$this->orders = array_filter([
|
||||
[
|
||||
'title' => 'Total Order',
|
||||
'value' => formatCurrencyNumber(
|
||||
Order::when(! empty($outletIds), fn ($q) => $q->whereIn('outlet_id', $outletIds))
|
||||
->when($dateQuery || ($startDate && $endDate), $filterDate)
|
||||
->count()
|
||||
(clone $orderQuery)->count()
|
||||
),
|
||||
],
|
||||
[
|
||||
'title' => 'Pendapatan',
|
||||
'value' => formatCurrencyNumber(
|
||||
Order::when(! empty($outletIds), fn ($q) => $q->whereIn('outlet_id', $outletIds))
|
||||
->when($dateQuery || ($startDate && $endDate), $filterDate)
|
||||
->sum('total'),
|
||||
'Rp'
|
||||
),
|
||||
'value' => formatCurrencyNumber($totalIncome, 'Rp'),
|
||||
],
|
||||
|
||||
auth()->user()->hasRole(['Developer', 'Owner']) ? [
|
||||
'title' => 'HPP',
|
||||
'value' => formatCurrencyNumber(
|
||||
Order::when(! empty($outletIds), fn ($q) => $q->whereIn('outlet_id', $outletIds))
|
||||
->when($dateQuery || ($startDate && $endDate), $filterDate)
|
||||
->sum('cogs'),
|
||||
'Rp'
|
||||
),
|
||||
'value' => formatCurrencyNumber($totalCogs, 'Rp'),
|
||||
] : null,
|
||||
|
||||
auth()->user()->hasRole(['Developer', 'Owner']) ? [
|
||||
'title' => 'Laba Kotor',
|
||||
'value' => formatCurrencyNumber($grossProfit, 'Rp'),
|
||||
] : null,
|
||||
|
||||
auth()->user()->hasRole(['Developer', 'Owner']) ? [
|
||||
'title' => 'Laba Bersih',
|
||||
'value' => formatCurrencyNumber($netProfit, 'Rp'),
|
||||
] : null,
|
||||
|
||||
[
|
||||
'title' => 'Diskon',
|
||||
'value' => formatCurrencyNumber(
|
||||
Order::when(! empty($outletIds), fn ($q) => $q->whereIn('outlet_id', $outletIds))
|
||||
->when($dateQuery || ($startDate && $endDate), $filterDate)
|
||||
->sum('discount'),
|
||||
'Rp'
|
||||
),
|
||||
'value' => formatCurrencyNumber($totalDiscount, 'Rp'),
|
||||
],
|
||||
[
|
||||
'title' => 'Voucher Terpakai',
|
||||
'value' => formatCurrencyNumber(
|
||||
Order::when(! empty($outletIds), fn ($q) => $q->whereIn('outlet_id', $outletIds))
|
||||
->when($dateQuery || ($startDate && $endDate), $filterDate)
|
||||
->whereNotNull('voucher_id')->count()
|
||||
(clone $orderQuery)->whereNotNull('voucher_id')->count()
|
||||
),
|
||||
],
|
||||
[
|
||||
|
||||
Loading…
Reference in New Issue
Block a user