parfum/app/Providers/ViewServiceProvider.php
Yoga Pangestu dffc9f9e72 feat: add stock transfer management functionality
- Implemented stock transfer creation and management with Livewire components.
- Created StockTransfer and StockTransferItem models with necessary relationships.
- Added migration files for stock_transfers and stock_transfer_items tables.
- Developed traits for handling stock transfer items (add, delete, update).
- Integrated stock transfer logging in StockActivityLogService.
- Updated ViewServiceProvider to include stock transfer permissions and routes.
- Created frontend views for stock transfer form and index with appropriate UI components.
- Added role permissions for stock transfer actions in RolePermissionSeeder.
2026-01-09 21:41:49 +07:00

334 lines
14 KiB
PHP

<?php
namespace App\Providers;
use App\Settings\ContactSettings;
use App\Settings\GeneralSettings;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
class ViewServiceProvider extends ServiceProvider
{
public function boot(): void
{
View::composer(['components.layouts.*', 'livewire.*'], function ($view) {
$sidebar = [
[
'heading' => 'Dasbor',
'items' => [
[
'label' => 'Ringkasan',
'icon' => 'squares-plus',
'route' => 'studio.dashboard.overview',
'match' => 'studio.dashboard.overview',
'can' => 'view studio overview',
],
[
'label' => 'Analisa',
'icon' => 'chart-bar',
'route' => 'studio.dashboard.analysis',
'match' => 'studio.dashboard.analysis',
'can' => 'view analysis',
],
],
],
[
'heading' => 'Master',
'items' => [
[
'label' => 'Outlet',
'icon' => 'home-modern',
'route' => 'studio.master.outlet.index',
'match' => 'studio.master.outlet.*',
'can' => 'view outlet',
],
[
'label' => 'Gudang',
'icon' => 'building-office-2',
'route' => 'studio.master.warehouse.index',
'match' => 'studio.master.warehouse.*',
'can' => 'view warehouse',
],
[
'label' => 'Pegawai',
'icon' => 'users',
'route' => 'studio.master.user.index',
'match' => 'studio.master.user.*',
'can' => 'view user',
],
[
'label' => 'Rumus',
'icon' => 'variable',
'route' => 'studio.master.formula.index',
'match' => 'studio.master.formula.*',
'can' => 'view formula',
],
[
'label' => 'Kategori',
'icon' => 'list-bullet',
'route' => 'studio.master.category.index',
'match' => 'studio.master.category.*',
'can' => 'view category',
],
],
],
[
'heading' => 'Loyalty',
'items' => [
[
'label' => 'Tier',
'icon' => 'star',
'route' => 'studio.loyalty.tier.index',
'match' => 'studio.loyalty.tier.*',
'can' => 'view tier',
],
[
'label' => 'Voucher',
'icon' => 'ticket',
'route' => 'studio.loyalty.voucher.index',
'match' => 'studio.loyalty.voucher.*',
'can' => 'view voucher',
],
[
'label' => 'Hadiah',
'icon' => 'gift',
'route' => 'studio.loyalty.reward.index',
'match' => 'studio.loyalty.reward.*',
'can' => 'view reward',
],
[
'label' => 'Customer',
'icon' => 'user-plus',
'route' => 'studio.loyalty.customer.index',
'match' => 'studio.loyalty.customer.*',
'can' => 'view customer',
],
[
'label' => 'Verifikasi Penukaran',
'icon' => 'check-badge',
'route' => 'studio.loyalty.redemption.index',
'match' => 'studio.loyalty.redemption.*',
'can' => 'view redemption',
],
],
],
[
'heading' => 'Katalog',
'items' => [
[
'label' => 'Merek',
'icon' => 'tag',
'route' => 'studio.catalog.brand.index',
'match' => 'studio.catalog.brand.*',
'can' => 'view brand',
],
[
'label' => 'Parfum',
'icon' => 'flower-2',
'route' => 'studio.catalog.perfume.index',
'match' => 'studio.catalog.perfume.*',
'can' => 'view perfume',
],
[
'label' => 'Produk',
'icon' => 'boxes',
'route' => 'studio.catalog.product.index',
'match' => 'studio.catalog.product.*',
'can' => 'view product',
],
[
'label' => 'Botol',
'icon' => 'beaker',
'route' => 'studio.catalog.bottle.index',
'match' => 'studio.catalog.bottle.*',
'can' => 'view bottle',
],
],
],
[
'heading' => 'Keuangan',
'items' => [
[
'label' => 'Pengeluaran',
'icon' => 'banknote-arrow-down',
'route' => 'studio.finance.expense.index',
'match' => 'studio.finance.expense.*',
'can' => 'view expense',
],
[
'label' => 'Penggajian',
'icon' => 'hand-coins',
'route' => 'studio.finance.payroll.index',
'match' => 'studio.finance.payroll.*',
'can' => 'view payroll',
],
],
],
[
'heading' => 'Kelola',
'items' => [
[
'label' => 'Order',
'icon' => 'truck',
'route' => 'studio.manage.order.index',
'match' => 'studio.manage.order.*',
'can' => 'view order',
],
[
'label' => 'Belanja',
'icon' => 'shopping-bag',
'route' => 'studio.manage.purchase.index',
'match' => 'studio.manage.purchase.*',
'can' => 'view purchase',
],
[
'label' => 'Restock Outlet',
'icon' => 'arrows-right-left',
'route' => 'studio.manage.restock.index',
'match' => 'studio.manage.restock.*',
'can' => 'view restock',
],
[
'label' => 'Transfer Stok',
'icon' => 'clipboard-document-list',
'route' => 'studio.manage.stock_transfer.index',
'match' => 'studio.manage.stock_transfer.*',
'can' => 'view stock transfer',
],
[
'label' => 'Stock Opname',
'icon' => 'clipboard-document-check',
'route' => 'studio.manage.stock_opname.index',
'match' => 'studio.manage.stock_opname.*',
'can' => 'view stock opname',
],
[
'label' => 'Artikel',
'icon' => 'newspaper',
'route' => 'studio.manage.article.index',
'match' => 'studio.manage.article.*',
'can' => 'view article',
],
],
],
[
'heading' => 'Informasi',
'items' => [
[
'label' => 'Broadcast',
'icon' => 'megaphone',
'route' => 'studio.information.broadcast.index',
'match' => 'studio.information.broadcast.*',
'can' => 'view broadcast',
],
[
'label' => 'FAQs',
'icon' => 'question-mark-circle',
'route' => 'studio.information.faq.index',
'match' => 'studio.information.faq.*',
'can' => 'view faq',
],
[
'label' => 'Testimonial',
'icon' => 'chat-bubble-left-ellipsis',
'route' => 'studio.information.testimonial.index',
'match' => 'studio.information.testimonial.*',
'can' => 'view testimonial',
],
],
],
[
'heading' => 'Keunggulan',
'items' => [
[
'label' => 'Keunggulan Parfum',
'icon' => 'rocket-launch',
'route' => 'studio.feature.perfume_feature.index',
'match' => 'studio.feature.perfume_feature.*',
'can' => 'view perfume feature',
],
[
'label' => 'Pilih Kami',
'icon' => 'trophy',
'route' => 'studio.feature.choose_us.index',
'match' => 'studio.feature.choose_us.*',
'can' => 'view choose us',
],
],
],
[
'heading' => 'Pengaturan',
'items' => [
[
'label' => 'Aplikasi',
'icon' => 'cog-6-tooth',
'route' => 'studio.setting.application',
'match' => 'studio.setting.application',
'can' => 'view application settings',
],
],
],
[
'heading' => 'Pintu Doraemon',
'items' => [
[
'label' => 'Member',
'icon' => 'arrow-right-end-on-rectangle',
'route' => 'member.overview',
'match' => '',
'can' => 'view member overview',
],
// [
// 'label' => 'Partner',
// 'icon' => 'arrow-right-end-on-rectangle',
// 'route' => 'partner.overview',
// 'match' => '',
// 'can' => 'view partner overview',
// ],
],
],
];
$header = [
[
'title' => 'Beranda',
'route' => 'homepage',
'match' => 'homepage',
],
[
'title' => 'Outlet',
'route' => 'outlet',
'match' => 'outlet',
],
[
'title' => 'Produk',
'route' => 'product.index',
'match' => 'product.*',
],
[
'title' => 'Voucher',
'route' => 'voucher',
'match' => 'voucher',
],
[
'title' => 'Artikel',
'route' => 'article.index',
'match' => 'article.*',
],
[
'title' => 'FAQ',
'route' => 'faq',
'match' => 'faq',
],
];
$view->with([
'sidebar' => $sidebar,
'header' => $header,
'contactSettings' => app(ContactSettings::class),
'generalSettings' => app(GeneralSettings::class),
]);
});
}
}