@extends('layouts.app') @section('title', 'Folio & POS Reconciliation') @php use App\Http\Controllers\Hotel\PosReconciliationController as Recon; $exceptionCount = $summary['exceptions']->count(); $query = array_filter([ 'start_date' => $filters['start']->toDateString(), 'end_date' => $filters['end']->toDateString(), 'outlet_id' => $filters['outlet_id'], 'sale_type' => $filters['sale_type'], 'status' => $filters['status'], ]); @endphp @section('content')
Every POS sale in the period, matched against the general ledger and guest folios. Walk-in sales post to the GL at the till; room charges sit on the guest's folio until checkout.
| Sale | Outlet | Customer / Room | Items | Payment | Settlement | Amount | |
|---|---|---|---|---|---|---|---|
|
@if ($canReceipt)#{{ $sale->sale_id }} @else #{{ $sale->sale_id }} @endif
{{ $sale->created_at?->format('M d, H:i') }}
|
{{ $sale->outlet_name }}
{{ $sale->sale_type === 'room_charge' ? 'Room charge' : 'Walk-in' }}
|
@if ($sale->sale_type === 'room_charge')
Room {{ $sale->booking?->room?->room_number ?? '?' }}
{{ $sale->booking?->guest_name ?? 'Unknown guest' }}@if ($sale->booking_id) · #{{ $sale->booking_id }}@endif
@else
{{ $sale->customer_name ?: 'Walk-in' }}
@endif
|
{{ $itemsText ?: '—' }} | {{ $sale->payment_method }} |
{{ $statusLabel }}
@if ($sale->posted_entry_id) JE #{{ $sale->posted_entry_id }} @endif
|
₦{{ number_format((float) $sale->total_amount, 2) }} | {{-- Walk-ins and room charges still on the folio can be corrected; a sale billed at check-out or voided can't. --}} @if ($canCorrect && in_array($sale->settlement, ['posted', 'unposted', 'pending'], true)) @endif |
{{ $filters['status'] === 'exceptions' ? 'No exceptions — every sale in this period reconciles.' : 'No POS sales match these filters.' }} | |||||||
| Total | ₦{{ number_format($summary['revenue'], 2) }} | ||||||