first
This commit is contained in:
111
resources/views/kewangan/bank/index.blade.php
Normal file
111
resources/views/kewangan/bank/index.blade.php
Normal file
@@ -0,0 +1,111 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Semakan Bank')
|
||||
|
||||
@section('content')
|
||||
<div class="page-heading">
|
||||
<div class="eyebrow">Admin Kewangan</div>
|
||||
<div class="d-flex justify-content-between flex-column flex-lg-row gap-3">
|
||||
<div>
|
||||
<h1 class="h3 mb-1">Semakan Akaun Bank</h1>
|
||||
<p class="text-secondary mb-0">Semak maklumat bank staf yang telah diluluskan tanpa mengubah penempatan.</p>
|
||||
</div>
|
||||
<div>
|
||||
<a class="btn btn-primary" href="{{ route('kewangan.bank.export', request()->query()) }}">
|
||||
<i class="bi bi-download me-1"></i>Export
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content-panel p-3 mb-3">
|
||||
<form class="row g-2" method="GET">
|
||||
<div class="col-12 col-md-3">
|
||||
<input class="form-control" name="q" value="{{ $filters['q'] ?? '' }}" placeholder="Cari nama / IC / email">
|
||||
</div>
|
||||
<div class="col-6 col-md-2">
|
||||
<select class="form-select" name="status">
|
||||
<option value="">Semua status</option>
|
||||
@foreach (['pending', 'verified', 'rejected', 'requires_correction'] as $status)
|
||||
<option value="{{ $status }}" @selected(($filters['status'] ?? '') === $status)>{{ str_replace('_', ' ', $status) }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-6 col-md-3">
|
||||
<select class="form-select" name="pusat_mengundi_id">
|
||||
<option value="">Semua pusat</option>
|
||||
@foreach ($pusats as $pusat)
|
||||
<option value="{{ $pusat->id }}" @selected(($filters['pusat_mengundi_id'] ?? '') == $pusat->id)>{{ $pusat->code }} - {{ $pusat->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-6 col-md-2">
|
||||
<select class="form-select" name="role_id">
|
||||
<option value="">Semua jawatan</option>
|
||||
@foreach ($positions as $position)
|
||||
<option value="{{ $position->id }}" @selected(($filters['role_id'] ?? '') == $position->id)>{{ $position->code }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-6 col-md-2">
|
||||
<button class="btn btn-outline-primary w-100" type="submit"><i class="bi bi-funnel me-1"></i>Tapis</button>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="d-flex flex-wrap gap-3 pt-2">
|
||||
<label class="form-check">
|
||||
<input class="form-check-input" type="checkbox" name="missing_bank_statement" value="1" @checked($filters['missing_bank_statement'] ?? false)>
|
||||
<span class="form-check-label">Tiada penyata bank</span>
|
||||
</label>
|
||||
<label class="form-check">
|
||||
<input class="form-check-input" type="checkbox" name="missing_account_number" value="1" @checked($filters['missing_account_number'] ?? false)>
|
||||
<span class="form-check-label">Tiada no. akaun</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="content-panel p-0 overflow-hidden">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover align-middle mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Staf</th>
|
||||
<th>Pusat / Jawatan</th>
|
||||
<th>Bank</th>
|
||||
<th>Dokumen</th>
|
||||
<x-sort-th column="status" label="Status" />
|
||||
<th class="text-end no-sort">Tindakan</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse ($verifications as $verification)
|
||||
@php($application = $verification->application)
|
||||
@php($position = $application?->approvedPosition ?: $application?->requestedPosition)
|
||||
@php($hasBankStatement = $application?->documents->contains('document_type', 'bank_statement') === true)
|
||||
<tr>
|
||||
<td>
|
||||
<div class="fw-semibold">{{ $application?->name }}</div>
|
||||
<div class="small text-secondary">{{ \App\Support\SensitiveData::maskIc($application?->ic_number) }} · {{ \App\Support\SensitiveData::maskPhone($application?->phone_number) }}</div>
|
||||
</td>
|
||||
<td>{{ $application?->pusatMengundi?->code }}<div class="small text-secondary">{{ $position?->code ?: '-' }}</div></td>
|
||||
<td>
|
||||
<div>{{ $application?->bank_name ?: '-' }}</div>
|
||||
<div class="small text-secondary">{{ \App\Support\SensitiveData::maskAccount($application?->bank_account_number) }}</div>
|
||||
</td>
|
||||
<td>
|
||||
<span class="badge {{ $hasBankStatement ? 'text-bg-success' : 'text-bg-danger' }}">{{ $hasBankStatement ? 'Penyata ada' : 'Penyata tiada' }}</span>
|
||||
</td>
|
||||
<td><span class="badge text-bg-secondary">{{ str_replace('_', ' ', $verification->status) }}</span></td>
|
||||
<td class="text-end"><a class="btn btn-sm btn-outline-primary" href="{{ route('kewangan.bank.show', $verification) }}">Semak</a></td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr><td colspan="6" class="text-center text-secondary py-4">Tiada rekod kewangan dijumpai.</td></tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-3">{{ $verifications->links() }}</div>
|
||||
@endsection
|
||||
104
resources/views/kewangan/bank/show.blade.php
Normal file
104
resources/views/kewangan/bank/show.blade.php
Normal file
@@ -0,0 +1,104 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Semakan Rekod Bank')
|
||||
|
||||
@section('content')
|
||||
@php($application = $verification->application)
|
||||
@php($position = $application?->approvedPosition ?: $application?->requestedPosition)
|
||||
@php($hasBankStatement = $application?->documents->contains('document_type', 'bank_statement') === true)
|
||||
|
||||
<div class="page-heading">
|
||||
<div class="eyebrow">Admin Kewangan</div>
|
||||
<div class="d-flex justify-content-between flex-column flex-lg-row gap-3">
|
||||
<div>
|
||||
<h1 class="h3 mb-1">Semakan Rekod Bank</h1>
|
||||
<p class="text-secondary mb-0">{{ $application?->name }} · {{ $application?->pusatMengundi?->name }}</p>
|
||||
</div>
|
||||
<div><a class="btn btn-outline-secondary" href="{{ route('kewangan.bank.index') }}">Kembali</a></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row g-3">
|
||||
<div class="col-12 col-xl-7">
|
||||
<div class="content-panel p-3 p-md-4">
|
||||
<h2 class="h5 mb-3">Maklumat Bank</h2>
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<div class="text-secondary small">Nama</div>
|
||||
<div class="fw-semibold">{{ $application?->name }}</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="text-secondary small">No. IC</div>
|
||||
<div>{{ \App\Support\SensitiveData::maskIc($application?->ic_number) }}</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="text-secondary small">Pusat Mengundi</div>
|
||||
<div>{{ $application?->pusatMengundi?->code }} - {{ $application?->pusatMengundi?->name }}</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="text-secondary small">Jawatan</div>
|
||||
<div>{{ $position?->code }} - {{ $position?->name }}</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="text-secondary small">Bank</div>
|
||||
<div>{{ $application?->bank_name ?: '-' }}</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="text-secondary small">No. Akaun</div>
|
||||
<div>{{ \App\Support\SensitiveData::maskAccount($application?->bank_account_number) }}</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="text-secondary small">Penyata Bank</div>
|
||||
<span class="badge {{ $hasBankStatement ? 'text-bg-success' : 'text-bg-danger' }}">{{ $hasBankStatement ? 'Ada' : 'Tiada' }}</span>
|
||||
@if ($hasBankStatement)
|
||||
@php($bankStatement = $application?->documents->firstWhere('document_type', 'bank_statement'))
|
||||
@if ($bankStatement)
|
||||
<div class="mt-2">
|
||||
<a class="btn btn-sm btn-outline-primary" href="{{ route('kewangan.documents.download', $bankStatement) }}">
|
||||
<i class="bi bi-download me-1"></i>Muat turun
|
||||
</a>
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="text-secondary small">Status Semasa</div>
|
||||
<span class="badge text-bg-secondary">{{ str_replace('_', ' ', $verification->status) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-xl-5">
|
||||
<div class="content-panel p-3 p-md-4">
|
||||
<h2 class="h5 mb-3">Keputusan Semakan</h2>
|
||||
<form method="POST" action="{{ route('kewangan.bank.update', $verification) }}">
|
||||
@csrf
|
||||
@method('PATCH')
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="status">Status</label>
|
||||
<select class="form-select" id="status" name="status" required>
|
||||
@foreach (['pending', 'verified', 'rejected', 'requires_correction'] as $status)
|
||||
<option value="{{ $status }}" @selected(old('status', $verification->status) === $status)>{{ str_replace('_', ' ', $status) }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="finance_note">Nota Kewangan</label>
|
||||
<textarea class="form-control" id="finance_note" name="finance_note" rows="4">{{ old('finance_note', $verification->finance_note) }}</textarea>
|
||||
</div>
|
||||
<div class="d-flex justify-content-end">
|
||||
<button class="btn btn-primary" type="submit"><i class="bi bi-save me-1"></i>Simpan</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="content-panel p-3 p-md-4 mt-3">
|
||||
<h2 class="h6 mb-3">Maklumat Audit Ringkas</h2>
|
||||
<div class="small text-secondary">Disemak oleh</div>
|
||||
<div>{{ $verification->verifiedBy?->name ?: '-' }}</div>
|
||||
<div class="small text-secondary mt-2">Masa semakan</div>
|
||||
<div>{{ $verification->verified_at?->format('d/m/Y H:i') ?: '-' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
Reference in New Issue
Block a user