139 lines
6.6 KiB
PHP
139 lines
6.6 KiB
PHP
<flux:main>
|
|
<div class="flex justify-between items-center">
|
|
<div>
|
|
<flux:heading size="xl">{{ $pageTitle }}</flux:heading>
|
|
</div>
|
|
<div>
|
|
<flux:button href="{{ route('studio.master.warehouse.index') }}" wire:navigate class="text-sm">
|
|
Kembali
|
|
</flux:button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mt-6">
|
|
@if (!empty($stats))
|
|
<div class="grid grid-cols-1 md:grid-cols-4 gap-4 mb-6">
|
|
@foreach ($stats as $stat)
|
|
<div class="rounded-lg px-6 py-4 bg-zinc-200 dark:bg-zinc-700">
|
|
<flux:subheading>{{ $stat['title'] }}</flux:subheading>
|
|
<flux:heading size="xl" class="mb-2">{{ $stat['value'] }}</flux:heading>
|
|
</div>
|
|
@endforeach
|
|
</div>
|
|
@endif
|
|
|
|
<div class="mb-6 grid grid-cols-1 lg:grid-cols-2 gap-4">
|
|
<flux:input icon="magnifying-glass" placeholder="Cari item..." wire:model.live.debounce.500ms="search"
|
|
autocomplete="off" />
|
|
|
|
<flux:checkbox.group wire:model.live="type" variant="buttons">
|
|
<flux:checkbox value="perfume" label="Parfum" />
|
|
<flux:checkbox value="product" label="Produk" />
|
|
<flux:checkbox value="bottle" label="Botol" />
|
|
</flux:checkbox.group>
|
|
</div>
|
|
|
|
<flux:separator class="mb-6" />
|
|
|
|
<flux:card class="mt-8">
|
|
<div class="mb-4">
|
|
<flux:heading size="lg">Daftar Item</flux:heading>
|
|
<flux:subheading>Daftar semua item yang tersedia di gudang ini.</flux:subheading>
|
|
</div>
|
|
|
|
<flux:table>
|
|
<flux:table.columns>
|
|
<flux:table.column>Tipe</flux:table.column>
|
|
<flux:table.column>Item</flux:table.column>
|
|
<flux:table.column>Stok</flux:table.column>
|
|
@canAny(['manage adjustment', 'audit stock warehouse'])
|
|
<flux:table.column>Aksi</flux:table.column>
|
|
@endcanAny
|
|
</flux:table.columns>
|
|
|
|
|
|
<flux:table.rows>
|
|
@forelse ($this->items as $item)
|
|
<flux:table.row :key="$item['id']">
|
|
<flux:table.cell>
|
|
<flux:badge size="sm"
|
|
:color="$item['type'] === 'Parfum' ? 'fuchsia' : ($item['type'] === 'Produk' ?
|
|
'cyan' :
|
|
'zinc')">
|
|
{{ $item['type'] }}</flux:badge>
|
|
</flux:table.cell>
|
|
<flux:table.cell class="font-medium">{{ $item['name'] }}</flux:table.cell>
|
|
<flux:table.cell>{{ number_format($item['stock'], 0, ',', '.') }}</flux:table.cell>
|
|
@canAny(['manage adjustment', 'audit stock warehouse'])
|
|
<flux:table.cell>
|
|
@can('audit stock warehouse')
|
|
<flux:tooltip content="Audit">
|
|
<flux:button size="sm" variant="primary" icon="clipboard-document-list"
|
|
href="{{ route('studio.master.warehouse.' . $item['type_key'] . '.audit', ['warehouse' => $warehouse->hash, $item['type_key'] => $item['hash_id']]) }}"
|
|
wire:navigate>
|
|
</flux:button>
|
|
</flux:tooltip>
|
|
@endcan
|
|
@can('manage adjustment')
|
|
<flux:modal.trigger name="form-modal">
|
|
<flux:tooltip content="Ubah">
|
|
<flux:button variant="primary" color="yellow" icon="pencil-square"
|
|
size="sm"
|
|
wire:click="$dispatch('modal:open', { method: 'saveAdjustment', modalTitle: 'Ubah Stok', itemId: '{{ $item['id'] }}', type: '{{ $item['type'] }}', name: '{{ $item['name'] }}', stock: {{ $item['stock'] }} })">
|
|
</flux:button>
|
|
</flux:tooltip>
|
|
</flux:modal.trigger>
|
|
@endcan
|
|
</flux:table.cell>
|
|
@endcanAny
|
|
</flux:table.row>
|
|
@empty
|
|
<flux:table.row>
|
|
<flux:table.cell colspan="4" class="text-center text-zinc-500">Tidak ada item di gudang
|
|
ini.
|
|
</flux:table.cell>
|
|
</flux:table.row>
|
|
@endforelse
|
|
</flux:table.rows>
|
|
</flux:table>
|
|
</flux:card>
|
|
</div>
|
|
|
|
<flux:modal name="form-modal" class="w-[95%] max-w-sm md:max-w-xl mx-auto" @close="closeModal('form-modal')">
|
|
<div class="p-4 space-y-6">
|
|
<div>
|
|
<flux:heading size="lg">{{ $modalTitle }}</flux:heading>
|
|
<flux:subheading>Sesuaikan stok untuk {{ $form?->name ?? '-' }} ({{ $form?->type ?? '-' }})
|
|
</flux:subheading>
|
|
</div>
|
|
|
|
<div class="grid grid-cols-2 gap-4">
|
|
<flux:field>
|
|
<flux:label>Stok Saat Ini</flux:label>
|
|
<flux:input wire:model="form.oldStock" disabled />
|
|
</flux:field>
|
|
|
|
<flux:field>
|
|
<flux:label>Stok Baru <span class="text-red-500 ms-1">*</span></flux:label>
|
|
<flux:input placeholder="Masukkan stok" x-mask:dynamic="$money($input, ',')"
|
|
wire:model="form.newStock" autocomplete="off" />
|
|
<flux:error name="form.newStock" />
|
|
</flux:field>
|
|
</div>
|
|
|
|
<flux:field>
|
|
<flux:label>Keterangan</flux:label>
|
|
<flux:textarea placeholder="Contoh: Koreksi stok fisik, Rusak, dsb." wire:model="form.note" />
|
|
<flux:error name="form.note" />
|
|
</flux:field>
|
|
|
|
<div class="flex gap-2">
|
|
<flux:spacer />
|
|
<flux:button variant="primary" wire:click="{{ $method }}">
|
|
Simpan
|
|
</flux:button>
|
|
</div>
|
|
</div>
|
|
</flux:modal>
|
|
</flux:main>
|