@php // typeColor resource (primary/info/success/warning/gray) → kelas literal per nada // (literal agar terdeteksi scanner Tailwind v4; tak ada warna `info` → secondary). $tones = [ 'primary' => ['ic' => 'bg-primary/10 text-primary', 'amt' => 'text-primary', 'dot' => 'group-has-checked:border-primary group-has-checked:bg-primary', 'card' => 'has-checked:border-primary/50 has-checked:bg-primary/5 has-checked:ring-primary/10 hover:border-primary/40'], 'secondary' => ['ic' => 'bg-secondary/10 text-secondary', 'amt' => 'text-secondary', 'dot' => 'group-has-checked:border-secondary group-has-checked:bg-secondary', 'card' => 'has-checked:border-secondary/50 has-checked:bg-secondary/5 has-checked:ring-secondary/10 hover:border-secondary/40'], 'success' => ['ic' => 'bg-success/10 text-success', 'amt' => 'text-success', 'dot' => 'group-has-checked:border-success group-has-checked:bg-success', 'card' => 'has-checked:border-success/50 has-checked:bg-success/5 has-checked:ring-success/10 hover:border-success/40'], 'warning' => ['ic' => 'bg-warning/10 text-warning', 'amt' => 'text-warning', 'dot' => 'group-has-checked:border-warning group-has-checked:bg-warning', 'card' => 'has-checked:border-warning/50 has-checked:bg-warning/5 has-checked:ring-warning/10 hover:border-warning/40'], 'muted' => ['ic' => 'bg-muted/10 text-muted', 'amt' => 'text-muted', 'dot' => 'group-has-checked:border-muted group-has-checked:bg-muted', 'card' => 'has-checked:border-muted/50 has-checked:bg-muted/5 has-checked:ring-muted/10 hover:border-muted/40'], ]; $toneFor = fn (string $c) => $tones[match ($c) { 'primary' => 'primary', 'info' => 'secondary', 'success' => 'success', 'warning' => 'warning', default => 'muted', }]; @endphp
{{-- Back --}} Kembali ke daftar {{-- Hero header --}}
Setoran Tunggal

Setor Simpanan

Catat beberapa jenis simpanan sekaligus untuk satu anggota dalam satu proses.

{{-- KIRI: info setoran + jenis simpanan --}}
{{-- Card 1: Anggota & info setoran --}}

Anggota & Info Setoran

@include('livewire.savings.partials.member-picker')
{{-- Tanggal setor --}}
! $errors->has('deposit_date'), 'border-danger focus-visible:ring-danger' => $errors->has('deposit_date'), ])> @error('deposit_date')

{{ $message }}

@else

Memunculkan Hari Raya sesuai rentang program aktif.

@enderror
{{-- Periode --}}
! $errors->has('period_month'), 'border-danger focus-visible:ring-danger' => $errors->has('period_month'), ])> @error('period_month')

{{ $message }}

@else

Satu jenis hanya boleh sekali per periode.

@enderror
{{-- Metode --}}
@error('deposit_method')

{{ $message }}

@enderror
{{-- Disetor oleh --}}
@error('deposited_by')

{{ $message }}

@enderror
{{-- Referensi --}}
{{-- Catatan --}}
@error('notes')

{{ $message }}

@enderror
{{-- Card 2: Jenis simpanan --}}

Jenis Simpanan

@unless (blank($member_id) || empty($lines)) 0 dipilih @endunless
@if (blank($member_id)) {{-- Empty: belum pilih anggota --}}

Pilih anggota dulu

Jenis simpanan yang berlaku akan muncul otomatis setelah anggota dipilih.

@else

Ketuk kartu untuk memilih jenis yang disetor, lalu sesuaikan nominalnya.

{{-- Catatan: jenis tersembunyi karena sudah disetor --}} @if (! empty($hiddenTypes))
Disembunyikan karena sudah disetor periode ini: {{ implode(', ', $hiddenTypes) }}.
@endif @if (empty($lines))
Tidak ada jenis simpanan yang bisa disetor untuk anggota & periode ini.
@else
@foreach ($lines as $i => $line) @php($type = $line['savings_type']) @php($locked = $this->isLocked($type)) @php($t = $toneFor($this->typeColor($type))) @endforeach
@endif @endif
{{-- KANAN: ringkasan sticky --}}
{{-- Total --}}

Total Setoran

Rp 0

0 jenis simpanan dipilih

{{-- Anggota terpilih --}} @if (filled($member_id) && $selectedMemberLabel)
{{ $selectedMemberLabel }}
@endif {{-- Rincian jenis dipilih (live) --}}

Rincian

Belum ada jenis simpanan dipilih.
Batal

Tiap jenis dibuat sebagai transaksi terpisah. Koreksi hanya lewat reversal.