@php $money = fn ($minor) => config('care.billing.currency').' '.number_format($minor / 100, 2); @endphp

Bills & invoices

Outstanding balances ready for walk-up payment

@if (app(\App\Services\Care\CareFeatures::class)->enabled($organization, \App\Services\Care\CareFeatures::WORKFLOW_ENGINE)) Financial gates @endif
@if (($canSwitchBranch ?? false) && isset($branches) && $branches->count() > 1) @elseif (isset($branches) && $branches->isNotEmpty()) {{ $branches->first()->name }} @endif
@forelse ($bills as $bill) @php $billUrl = route('care.bills.show', $bill); $canServe = ! empty($queueIntegration['enabled']) && $bill->queue_ticket_uuid && ! in_array($bill->queue_ticket_status ?? '', ['serving', 'completed', 'cancelled'], true) && $bill->balance_minor > 0; $actionLabel = $bill->balance_minor > 0 && $bill->status !== \App\Models\Bill::STATUS_VOID ? 'Pay' : 'View'; @endphp @empty @endforelse
Ticket Invoice Patient Total Balance Status Actions
@if (! empty($queueIntegration['enabled']) && $bill->queue_ticket_number) @include('care.partials.queue-ticket', [ 'ticketNumber' => $bill->queue_ticket_number, 'ticketStatus' => $bill->queue_ticket_status, ]) @else @endif {{ $bill->invoice_number }} {{ $bill->patient->fullName() }} {{ $money($bill->total_minor) }} {{ $money($bill->balance_minor) }} {{ $statuses[$bill->status] ?? $bill->status }}
@if ($canServe)
@csrf
@endif {{ $actionLabel }}
@if (($statusFilter ?? '') === 'outstanding') No outstanding invoices at this branch. Choose “All statuses” to browse paid bills. @else No bills yet. @endif
{{ $bills->links() }}
@if (! empty($canManageQueue) && ! empty($queueIntegration['enabled']))

Booth queue (optional)

@include('care.partials.queue-ops', [ 'queueIntegration' => $queueIntegration, 'queueCallNextRoute' => 'care.bills.call-next', 'queueCallNextParams' => [], 'queueCallNextDescription' => 'Only when a patient is waiting at billing. Otherwise open an unpaid invoice above.', 'branchId' => $branchId ?? null, 'variant' => 'muted', ])
@endif