chore: initial commit of existing codebase
This commit is contained in:
commit
11e94889b2
292 files changed
+38586
No files matched your search
@@ -0,0 +1,77 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Manual Stock Adjustment')
|
||||
|
||||
@section('content')
|
||||
<div class="mb-6">
|
||||
<h1 class="page-title">Manual Stock Adjustment</h1>
|
||||
<p class="page-subtitle"><a href="{{ route('inventory.movements.index') }}" class="text-blue-600 hover:underline">Stock Movements</a> / New</p>
|
||||
</div>
|
||||
|
||||
@if($errors->any())
|
||||
<div class="mb-4 px-4 py-3 bg-red-50 border border-red-200 rounded-lg text-sm text-red-700">
|
||||
<ul class="list-disc list-inside space-y-1">
|
||||
@foreach($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="card card-body max-w-xl">
|
||||
<form action="{{ route('inventory.movements.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="grid grid-cols-1 gap-5 sm:grid-cols-2">
|
||||
|
||||
<div>
|
||||
<label class="form-label">Item <span class="text-red-500">*</span></label>
|
||||
<select name="item_id" required class="form-select">
|
||||
<option value="">-- Select Item --</option>
|
||||
@foreach($items as $item)
|
||||
<option value="{{ $item->id }}" {{ old('item_id') == $item->id ? 'selected' : '' }}>
|
||||
{{ $item->item_code }} - {{ $item->item_name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="form-label">Warehouse <span class="text-red-500">*</span></label>
|
||||
<select name="warehouse_id" required class="form-select">
|
||||
<option value="">-- Select Warehouse --</option>
|
||||
@foreach($warehouses as $warehouse)
|
||||
<option value="{{ $warehouse->id }}" {{ old('warehouse_id') == $warehouse->id ? 'selected' : '' }}>
|
||||
{{ $warehouse->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="form-label">Type <span class="text-red-500">*</span></label>
|
||||
<select name="type" required class="form-select">
|
||||
<option value="">-- Select Type --</option>
|
||||
<option value="in" {{ old('type') === 'in' ? 'selected' : '' }}>IN (Stock In)</option>
|
||||
<option value="out" {{ old('type') === 'out' ? 'selected' : '' }}>OUT (Stock Out)</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="form-label">Quantity <span class="text-red-500">*</span></label>
|
||||
<input type="number" name="quantity" value="{{ old('quantity') }}" min="0.01" step="0.01" required class="form-input">
|
||||
</div>
|
||||
|
||||
<div class="sm:col-span-2">
|
||||
<label class="form-label">Notes</label>
|
||||
<textarea name="notes" rows="2" class="form-textarea">{{ old('notes') }}</textarea>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="mt-6 flex items-center gap-3">
|
||||
<button type="submit" class="btn-primary">Save Adjustment</button>
|
||||
<a href="{{ route('inventory.movements.index') }}" class="btn-secondary">Cancel</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,59 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Stock Movements')
|
||||
|
||||
@section('content')
|
||||
<div class="page-header">
|
||||
<div>
|
||||
<h1 class="page-title">Stock Movements</h1>
|
||||
<p class="page-subtitle">Track all inventory movements</p>
|
||||
</div>
|
||||
<a href="{{ route('inventory.movements.create') }}" class="btn-primary">
|
||||
+ Manual Adjustment
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="table-wrapper overflow-x-auto">
|
||||
<table class="table-base">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Item</th>
|
||||
<th>Warehouse</th>
|
||||
<th>Type</th>
|
||||
<th class="text-right">Quantity</th>
|
||||
<th>Reference</th>
|
||||
<th>Date</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($movements as $movement)
|
||||
<tr>
|
||||
<td class="text-gray-800">
|
||||
<span class="font-mono text-xs text-gray-500">{{ $movement->item->item_code ?? '' }}</span>
|
||||
<span class="ml-1">{{ $movement->item->item_name ?? '' }}</span>
|
||||
</td>
|
||||
<td class="text-gray-700">{{ $movement->warehouse->name ?? '' }}</td>
|
||||
<td>
|
||||
@if(strtolower($movement->type) === 'in')
|
||||
<span class="badge-green">IN</span>
|
||||
@else
|
||||
<span class="badge-red">OUT</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-right font-medium text-gray-800">{{ number_format($movement->quantity, 2) }}</td>
|
||||
<td class="text-gray-500 text-xs">{{ $movement->reference ?? '-' }}</td>
|
||||
<td>{{ $movement->created_at ? $movement->created_at->format('d M Y') : '' }}</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="6" class="px-4 py-8 text-center text-gray-400">No movements recorded.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@if($movements->hasPages())
|
||||
<div class="mt-4">{{ $movements->links() }}</div>
|
||||
@endif
|
||||
@endsection
|
||||
Reference in new issue
Block a user