Kartu Stok

Riwayat pergerakan stok per bahan baku beserta saldo berjalan.

@php $selectedUnit = (string) ($selectedIngredient?->unit ?? ''); $fromLabel = $fromDate ? \Carbon\CarbonImmutable::parse($fromDate)->format('d M Y') : null; @endphp
(bool) $ingredientId, 'border-gray-200 bg-gray-100 text-gray-400 cursor-not-allowed dark:border-gray-800 dark:bg-gray-950 dark:text-gray-600' => ! (bool) $ingredientId, ]) @if (! $ingredientId) aria-disabled="true" @endif > Export Excel

Saldo awal{{ $fromLabel ? ' (sebelum '.$fromLabel.')' : '' }}: {{ \App\Support\Number\QuantityFormatter::format((float) $startingBalance) }}{{ $selectedUnit !== '' ? ' '.$selectedUnit : '' }}

Nilai saldo awal: Rp{{ number_format((float) ($startingValue ?? 0), 0, ',', '.') }}

@if (! $ingredientId)

Pilih bahan untuk melihat kartu stok.

@else
@forelse ($movements as $movement) @php $qty = (float) $movement->quantity; $qtyText = \App\Support\Number\QuantityFormatter::format(abs($qty)); $balance = (float) ($balances[$movement->id] ?? 0); $when = $movement->happened_at ?? $movement->created_at; $unitCost = $movement->unit_cost === null ? null : (float) $movement->unit_cost; $deltaValue = (float) ($values[$movement->id] ?? 0); $runningValue = (float) ($runningValues[$movement->id] ?? 0); $typeLabel = match ((string) $movement->type) { 'purchase' => 'Pembelian', 'sale_consumption' => 'Penjualan (Konsumsi)', 'sale_reversal' => 'Pembatalan Penjualan', 'usage' => 'Pemakaian', 'waste' => 'Waste', 'adjustment' => 'Penyesuaian', 'opname_adjustment' => 'Stock Opname', default => (string) $movement->type, }; $typeBadgeClass = match ((string) $movement->type) { 'purchase' => 'bg-success-50 text-success-600 border-success-200 dark:bg-success-500/10 dark:text-success-500 dark:border-success-500/20', 'sale_consumption' => 'bg-error-50 text-error-600 border-error-200 dark:bg-error-500/10 dark:text-error-500 dark:border-error-500/20', 'sale_reversal' => 'bg-success-50 text-success-600 border-success-200 dark:bg-success-500/10 dark:text-success-500 dark:border-success-500/20', 'usage' => 'bg-error-50 text-error-600 border-error-200 dark:bg-error-500/10 dark:text-error-500 dark:border-error-500/20', 'waste' => 'bg-error-50 text-error-600 border-error-200 dark:bg-error-500/10 dark:text-error-500 dark:border-error-500/20', 'adjustment' => 'bg-brand-50 text-brand-600 border-brand-200 dark:bg-brand-500/10 dark:text-brand-400 dark:border-brand-500/20', 'opname_adjustment' => 'bg-warning-50 text-warning-700 border-warning-200 dark:bg-warning-500/10 dark:text-warning-400 dark:border-warning-500/20', default => 'bg-gray-50 text-gray-700 border-gray-200 dark:bg-white/[0.03] dark:text-gray-300 dark:border-gray-800', }; $refType = (string) ($movement->reference_type ?? ''); $refId = (int) ($movement->reference_id ?? 0); $refCode = $refType !== '' && $refId > 0 ? (string) (($refCodes[$refType][$refId] ?? '') ?: '') : ''; $refText = $refType !== '' && $refId > 0 ? $refType.'#'.$refId : '-'; if ($refType === 'transactions' && $refCode !== '') { $refText = 'Transaksi '.$refCode; } elseif ($refType === 'purchases' && $refCode !== '') { $refText = 'Pembelian '.$refCode; } elseif ($refType === 'stock_opnames' && $refCode !== '') { $refText = 'Opname '.$refCode; } $refUrl = null; if ($refType === 'transactions' && $refId) { $refUrl = route('transactions.show', ['transaction' => $refId]); } elseif ($refType === 'purchases' && $refId) { $refUrl = route('purchases.edit', ['purchase' => $refId]); } elseif ($refType === 'stock_opnames' && $refId) { $refUrl = route('stock-opnames.edit', ['stockOpname' => $refId]); } @endphp @empty @endforelse
Waktu Tipe Supplier Qty Saldo HPP/Unit Nilai Nilai Saldo Ref

{{ optional($when)->format('d M Y') }}

{{ $typeLabel }}

{{ $movement->supplier?->name ?? '-' }}

{{ $qty < 0 ? '-' : '+' }}{{ $qtyText }}{{ $selectedUnit !== '' ? ' '.$selectedUnit : '' }}

{{ \App\Support\Number\QuantityFormatter::format($balance) }}{{ $selectedUnit !== '' ? ' '.$selectedUnit : '' }}

{{ $unitCost === null ? '-' : 'Rp'.number_format($unitCost, 0, ',', '.') }}

{{ 'Rp'.number_format($deltaValue, 0, ',', '.') }}

{{ 'Rp'.number_format($runningValue, 0, ',', '.') }}

@if ($refUrl) {{ $refText }} @else

{{ $refText }}

@endif
{{ $movements->links('livewire.pagination.admin') }}
@endif