parfum/resources/views/livewire/studio/master/warehouse/show.blade.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>