{{-- Kasir Admin Dashboard (Future Clean) --}} @php use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Route; use Illuminate\Support\Carbon; $today = Carbon::today(); /* |-------------------------------------------------------------------------- | Notifikasi Jatuh Tempo Pembelian |-------------------------------------------------------------------------- | Dashboard administrasi kamu ada di: | resources/views/pages/dashboard/partials/administrasi.blade.php | | Patch sebelumnya belum kelihatan karena dashboard ini masih membaca due_date | dari tabel orders. Bagian ini sekarang membaca dari tabel purchases. */ $dueSoonOrders = collect(); $overdueOrders = collect(); $purchaseHasDueDate = class_exists(\App\Models\Purchase::class) && Schema::hasTable('purchases') && Schema::hasColumn('purchases', 'due_date'); if ($purchaseHasDueDate) { $baseDueQuery = \App\Models\Purchase::query() ->whereNotNull('due_date'); if (Schema::hasColumn('purchases', 'payment_status')) { $baseDueQuery->where(function ($q) { $q->whereNull('payment_status') ->orWhereNotIn('payment_status', ['paid', 'lunas', 'completed']); }); } if (Schema::hasColumn('purchases', 'status')) { $baseDueQuery->where(function ($q) { $q->whereNull('status') ->orWhereNotIn('status', ['cancelled', 'canceled', 'batal']); }); } $overdueOrders = (clone $baseDueQuery) ->whereDate('due_date', '<', $today) ->orderBy('due_date') ->limit(5) ->get(); $dueSoonOrders = (clone $baseDueQuery) ->whereDate('due_date', '>=', $today) ->whereDate('due_date', '<=', $today->copy()->addDays(3)) ->orderBy('due_date') ->limit(5) ->get(); } $overdueCount = $overdueOrders->count(); $dueSoonCount = $dueSoonOrders->count(); $purchaseInvoiceText = function ($purchase) { return $purchase->invoice_number ?? $purchase->invoice_no ?? $purchase->faktur_number ?? $purchase->no_faktur ?? ('PO-' . ($purchase->id ?? '-')); }; $purchaseSupplierText = function ($purchase) { if (isset($purchase->supplierRelation) && $purchase->supplierRelation) { return $purchase->supplierRelation->name ?? '-'; } if (isset($purchase->supplierModel) && $purchase->supplierModel) { return $purchase->supplierModel->name ?? '-'; } if (isset($purchase->supplier) && is_object($purchase->supplier)) { return $purchase->supplier->name ?? '-'; } return $purchase->supplier_name ?? $purchase->supplier ?? '-'; }; $purchaseRemainingAmount = function ($purchase) { if (isset($purchase->remaining)) { return (float) $purchase->remaining; } if (isset($purchase->remaining_amount)) { return (float) $purchase->remaining_amount; } if (isset($purchase->remaining_balance)) { return (float) $purchase->remaining_balance; } $total = (float) ( $purchase->grand_total ?? $purchase->total_price ?? $purchase->total_amount ?? $purchase->total ?? 0 ); $paid = (float) ( $purchase->paid_amount ?? $purchase->total_paid ?? $purchase->paid ?? 0 ); return max(0, $total - $paid); }; $purchaseDetailUrl = function ($purchase) { if (Route::has('purchases.show')) { return route('purchases.show', $purchase); } if (Route::has('purchases.index')) { return route('purchases.index'); } return '#'; }; $purchaseIndexUrl = Route::has('purchases.index') ? route('purchases.index') : '#'; @endphp
{{-- Banner --}}
Loading...
💬 Bantuan
{{-- KPI --}}
{{-- Quick Actions --}}
{{-- SOP / Reminder --}}

SOP Kasir

✅ anti salah
  1. 1. Pastikan invoice & nama customer benar.
  2. 2. Cek total dan item sebelum proses pembayaran.
  3. 3. Jika transfer, pastikan rekening benar & bukti jelas.
  4. 4. Jika cicilan, pastikan sisa muncul sesuai.
  5. 5. Setelah selesai produksi, WA customer + tandai diambil saat pick-up.
Jika ada data tidak sinkron: kirim screenshot + invoice ke Developer.
{{-- Due Date Summary --}}

Jatuh Tempo Pembelian Terlewat

🚨 {{ $overdueCount }} faktur
@forelse($overdueOrders as $order)
{{ $purchaseInvoiceText($order) }}
{{ $purchaseSupplierText($order) }}
{{ \Carbon\Carbon::parse($order->due_date)->format('d/m/Y') }}
Sisa tagihan: Rp {{ number_format((float) $purchaseRemainingAmount($order), 0, ',', '.') }}
@empty
Belum ada pembelian yang lewat jatuh tempo.
@endforelse

Jatuh Tempo Pembelian Dekat

⏰ {{ $dueSoonCount }} faktur
@forelse($dueSoonOrders as $order)
{{ $purchaseInvoiceText($order) }}
{{ $purchaseSupplierText($order) }}
{{ \Carbon\Carbon::parse($order->due_date)->format('d/m/Y') }}
Sisa tagihan: Rp {{ number_format((float) $purchaseRemainingAmount($order), 0, ',', '.') }}
@empty
Tidak ada pembelian yang akan jatuh tempo dalam 3 hari.
@endforelse
{{-- READY FOR PICKUP (pakai blok kamu, tetap) --}} {!! /* kamu boleh tetap pakai blok Siap Diambil yang sudah ada di bawah ini */ '' !!}
@if($overdueCount > 0 || $dueSoonCount > 0) @endif