feat: Adjust role permissions for warehouse management, analysis, and member vouchers, while refining customer table actions, warehouse column visibility, and dashboard statistics.
This commit is contained in:
parent
754b65259e
commit
10934a2aba
@ -71,6 +71,10 @@ public function columns(): array
|
|||||||
|
|
||||||
Column::make('Aksi')
|
Column::make('Aksi')
|
||||||
->label(function ($row) {
|
->label(function ($row) {
|
||||||
|
if ($row->user) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
$actions = '';
|
$actions = '';
|
||||||
|
|
||||||
if (auth()->user()->can('update customer')) {
|
if (auth()->user()->can('update customer')) {
|
||||||
@ -96,6 +100,7 @@ public function columns(): array
|
|||||||
|
|
||||||
public function builder(): Builder
|
public function builder(): Builder
|
||||||
{
|
{
|
||||||
return Customer::select('customers.id', 'name', 'phone_number', 'gender', 'customers.created_at')->with('user', 'orders');
|
return Customer::select('customers.id', 'name', 'phone_number', 'gender', 'customers.created_at', 'user_id')
|
||||||
|
->with('user', 'orders');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -48,7 +48,7 @@ public function columns(): array
|
|||||||
return $actions;
|
return $actions;
|
||||||
})
|
})
|
||||||
->html()
|
->html()
|
||||||
->hideIf(auth()->user()->cannot('view warehouse') && auth()->user()->cannot('update warehouse') && auth()->user()->cannot('delete warehouse')),
|
->hideIf(auth()->user()->cannot('show warehouse') && auth()->user()->cannot('update warehouse') && auth()->user()->cannot('delete warehouse')),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -202,7 +202,7 @@ public function render(): View
|
|||||||
->get()->keyBy('orderable_type');
|
->get()->keyBy('orderable_type');
|
||||||
|
|
||||||
$this->todayCategoryChart = [
|
$this->todayCategoryChart = [
|
||||||
'labels' => ['Parfum', 'Produk Jadi', 'Botol'],
|
'labels' => ['Parfum', 'Produk', 'Botol'],
|
||||||
'data' => [
|
'data' => [
|
||||||
(int) ($categorySales->get(Perfume::class)?->total ?? 0),
|
(int) ($categorySales->get(Perfume::class)?->total ?? 0),
|
||||||
(int) ($categorySales->get(Product::class)?->total ?? 0),
|
(int) ($categorySales->get(Product::class)?->total ?? 0),
|
||||||
@ -287,7 +287,7 @@ public function render(): View
|
|||||||
];
|
];
|
||||||
|
|
||||||
$this->stats = array_values(array_filter([
|
$this->stats = array_values(array_filter([
|
||||||
[
|
auth()->user()->hasRole(['Developer', 'Owner']) ? [
|
||||||
'title' => 'Average Order Value (AOV)',
|
'title' => 'Average Order Value (AOV)',
|
||||||
'value' => formatCurrencyNumber($todayAov, 'Rp'),
|
'value' => formatCurrencyNumber($todayAov, 'Rp'),
|
||||||
'previous' => formatCurrencyNumber($yesterdayAov, 'Rp'),
|
'previous' => formatCurrencyNumber($yesterdayAov, 'Rp'),
|
||||||
@ -295,8 +295,9 @@ public function render(): View
|
|||||||
? round((($todayAov - $yesterdayAov) / $yesterdayAov) * 100, 1).'%'
|
? round((($todayAov - $yesterdayAov) / $yesterdayAov) * 100, 1).'%'
|
||||||
: '∞%',
|
: '∞%',
|
||||||
'trendUp' => $todayAov > $yesterdayAov,
|
'trendUp' => $todayAov > $yesterdayAov,
|
||||||
],
|
] : null,
|
||||||
[
|
|
||||||
|
auth()->user()->hasRole(['Developer', 'Owner']) ? [
|
||||||
'title' => 'Profit Margin',
|
'title' => 'Profit Margin',
|
||||||
'value' => round($todayProfitMargin, 1).'%',
|
'value' => round($todayProfitMargin, 1).'%',
|
||||||
'previous' => round($yesterdayProfitMargin, 1).'%',
|
'previous' => round($yesterdayProfitMargin, 1).'%',
|
||||||
@ -304,7 +305,8 @@ public function render(): View
|
|||||||
? round($todayProfitMargin - $yesterdayProfitMargin, 1).'%'
|
? round($todayProfitMargin - $yesterdayProfitMargin, 1).'%'
|
||||||
: '∞%',
|
: '∞%',
|
||||||
'trendUp' => $todayProfitMargin > $yesterdayProfitMargin,
|
'trendUp' => $todayProfitMargin > $yesterdayProfitMargin,
|
||||||
],
|
] : null,
|
||||||
|
|
||||||
[
|
[
|
||||||
'title' => 'Total Order',
|
'title' => 'Total Order',
|
||||||
'value' => $todayOrder,
|
'value' => $todayOrder,
|
||||||
@ -314,6 +316,7 @@ public function render(): View
|
|||||||
: '∞%',
|
: '∞%',
|
||||||
'trendUp' => $todayOrder > $yesterdayOrder,
|
'trendUp' => $todayOrder > $yesterdayOrder,
|
||||||
],
|
],
|
||||||
|
|
||||||
[
|
[
|
||||||
'title' => 'Pendapatan',
|
'title' => 'Pendapatan',
|
||||||
'value' => formatCurrencyNumber($todayIncome, 'Rp'),
|
'value' => formatCurrencyNumber($todayIncome, 'Rp'),
|
||||||
@ -345,6 +348,7 @@ public function render(): View
|
|||||||
: '∞%',
|
: '∞%',
|
||||||
'trendUp' => $todayNewMembers > $yesterdayNewMembers,
|
'trendUp' => $todayNewMembers > $yesterdayNewMembers,
|
||||||
],
|
],
|
||||||
|
|
||||||
[
|
[
|
||||||
'title' => 'Diskon',
|
'title' => 'Diskon',
|
||||||
'value' => formatCurrencyNumber($todayDiscount, 'Rp'),
|
'value' => formatCurrencyNumber($todayDiscount, 'Rp'),
|
||||||
@ -355,6 +359,7 @@ public function render(): View
|
|||||||
'trendUp' => $todayDiscount > $yesterdayDiscount,
|
'trendUp' => $todayDiscount > $yesterdayDiscount,
|
||||||
'formatted' => formatCurrencyNumber($todayDiscount, 'Rp'),
|
'formatted' => formatCurrencyNumber($todayDiscount, 'Rp'),
|
||||||
],
|
],
|
||||||
|
|
||||||
[
|
[
|
||||||
'title' => 'Voucher Terpakai',
|
'title' => 'Voucher Terpakai',
|
||||||
'value' => $todayVoucher,
|
'value' => $todayVoucher,
|
||||||
@ -364,6 +369,7 @@ public function render(): View
|
|||||||
: '∞%',
|
: '∞%',
|
||||||
'trendUp' => $todayVoucher > $yesterdayVoucher,
|
'trendUp' => $todayVoucher > $yesterdayVoucher,
|
||||||
],
|
],
|
||||||
|
|
||||||
[
|
[
|
||||||
'title' => 'Beban Toko',
|
'title' => 'Beban Toko',
|
||||||
'value' => formatCurrencyNumber($todayExpense, 'Rp'),
|
'value' => formatCurrencyNumber($todayExpense, 'Rp'),
|
||||||
@ -413,6 +419,7 @@ public function render(): View
|
|||||||
: '∞%',
|
: '∞%',
|
||||||
'trendUp' => $todaySoldPerfume > $yesterdaySoldPerfume,
|
'trendUp' => $todaySoldPerfume > $yesterdaySoldPerfume,
|
||||||
],
|
],
|
||||||
|
|
||||||
[
|
[
|
||||||
'title' => 'Top Parfum',
|
'title' => 'Top Parfum',
|
||||||
'value' => optional($todayTopPerfume?->orderable)->name.' ('.$todayTopPerfume?->total_sold.'ml)' ?? '-',
|
'value' => optional($todayTopPerfume?->orderable)->name.' ('.$todayTopPerfume?->total_sold.'ml)' ?? '-',
|
||||||
|
|||||||
@ -183,8 +183,6 @@ public function run(): void
|
|||||||
// member
|
// member
|
||||||
'view member overview',
|
'view member overview',
|
||||||
|
|
||||||
'view member voucher',
|
|
||||||
|
|
||||||
'view member membership',
|
'view member membership',
|
||||||
|
|
||||||
'view member reward',
|
'view member reward',
|
||||||
@ -200,16 +198,12 @@ public function run(): void
|
|||||||
$developer->syncPermissions($permissions, array_diff($permissions, [
|
$developer->syncPermissions($permissions, array_diff($permissions, [
|
||||||
'view member overview',
|
'view member overview',
|
||||||
'view partner overview',
|
'view partner overview',
|
||||||
|
|
||||||
'view member voucher',
|
|
||||||
'view member membership',
|
'view member membership',
|
||||||
]));
|
]));
|
||||||
|
|
||||||
$owner->syncPermissions($permissions, array_diff($permissions, [
|
$owner->syncPermissions($permissions, array_diff($permissions, [
|
||||||
'view member overview',
|
'view member overview',
|
||||||
'view partner overview',
|
'view partner overview',
|
||||||
|
|
||||||
'view member voucher',
|
|
||||||
'view member membership',
|
'view member membership',
|
||||||
'view member reward',
|
'view member reward',
|
||||||
]));
|
]));
|
||||||
@ -218,7 +212,7 @@ public function run(): void
|
|||||||
'view member overview',
|
'view member overview',
|
||||||
'view partner overview',
|
'view partner overview',
|
||||||
|
|
||||||
'view member voucher',
|
'view analysis',
|
||||||
'view member membership',
|
'view member membership',
|
||||||
'view member reward',
|
'view member reward',
|
||||||
|
|
||||||
@ -226,6 +220,11 @@ public function run(): void
|
|||||||
'update outlet',
|
'update outlet',
|
||||||
'delete outlet',
|
'delete outlet',
|
||||||
|
|
||||||
|
'show warehouse',
|
||||||
|
'create warehouse',
|
||||||
|
'update warehouse',
|
||||||
|
'delete warehouse',
|
||||||
|
|
||||||
'view user',
|
'view user',
|
||||||
'create user',
|
'create user',
|
||||||
'update user',
|
'update user',
|
||||||
@ -314,8 +313,6 @@ public function run(): void
|
|||||||
'view partner overview',
|
'view partner overview',
|
||||||
|
|
||||||
'view analysis',
|
'view analysis',
|
||||||
|
|
||||||
'view member voucher',
|
|
||||||
'view member membership',
|
'view member membership',
|
||||||
'view member reward',
|
'view member reward',
|
||||||
|
|
||||||
@ -457,8 +454,6 @@ public function run(): void
|
|||||||
|
|
||||||
'view member overview',
|
'view member overview',
|
||||||
|
|
||||||
'view member voucher',
|
|
||||||
|
|
||||||
'view member membership',
|
'view member membership',
|
||||||
|
|
||||||
'view member reward',
|
'view member reward',
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user