@if(config('app.debug') && app()->environment('development'))
@endif
{{-- MultiPOS: registration modals / pending & declined overlays (active device label is in navigation-menu by stop impersonate) --}}
@if(module_enabled('MultiPOS') && in_array('MultiPOS', restaurant_modules()))
@include('multipos::partials.pos-registration', [
'hasPosMachine' => $hasPosMachine,
'machineStatus' => $machineStatus,
'posMachine' => $posMachine,
'limitReached' => $limitReached,
'limitMessage' => $limitMessage,
'shouldBlockPos' => $shouldBlockPos
])
@endif
{{-- Only render POS content if not blocked by registration/pending/declined --}}
@if(!$shouldBlockPos)
{{-- Restaurant availability banner (outside operating hours) --}}
@if(!empty($showRestaurantClosedBanner) && !empty($restaurantClosedMessage))
{{ $restaurantClosedMessage }}
@endif
{{-- Offline: order queued on device (replaces success toast) --}}
{{-- Order type modal: pure Blade + JS (prices prefetched in window.posOrderTypePriceMaps) --}}
@include('pos.partials.order-type-modal')
@include('pos.menu', ['posMenuFiltersInline' => true])
@php
$showOrderDetail = request()->boolean('show-order-detail');
@endphp
@if (!$orderDetail || ($orderDetail && $orderDetail->status == 'draft'))
@include('pos.kot_items')
@elseif($orderDetail && $orderDetail->status == 'kot')
@php
// Get current KOT ID for print functionality
$currentKot = $orderDetail->kot()->orderBy('created_at', 'desc')->first();
$currentKotId = $currentKot ? $currentKot->id : null;
@endphp
@if($currentKotId)
@endif
@if($showOrderDetail)
@include('pos.order_items')
@else
@include('pos.kot_items')
@endif
@elseif($orderDetail && in_array($orderDetail->status, ['billed', 'paid', 'payment_due']))
@include('pos.order_detail')
@endif
{{-- Variation Modal --}}
@lang('modules.menu.itemVariations')
@if(module_enabled('Hotel') && in_array('Hotel', restaurant_modules()))
@include('hotel::pos.show-stay')
@endif
{{-- KOT Note Modal --}}
@lang('modules.order.addNote')
@lang('modules.order.orderNote')
@lang('app.cancel')
@lang('app.save')
{{-- Item Note Modal --}}
@lang('modules.order.addNote')
@lang('modules.order.orderNote')
@lang('app.cancel')
@lang('app.save')
{{-- Table Modal --}}
@lang('modules.table.availableTables')
{{-- Discount Modal --}}
@lang('modules.order.addDiscount')
@lang('modules.order.percent')
5%
10%
20%
30%
40%
50%
Value
Type
@lang('modules.order.fixed')
@lang('modules.order.percent')
Apply On
@lang('modules.order.subTotal')
@lang('modules.order.total')
@lang('modules.order.subTotal')
$0.00
Discount
-$0.00
@lang('modules.order.total')
$0.00
@lang('app.cancel')
@lang('app.save')
{{-- Offline payment (queued to localStorage; syncs via ajax.pos.sync-offline-payment) --}}
@lang('modules.order.payment')
@lang('modules.order.total')
@lang('modules.order.paymentMethod')
@lang('modules.order.cash')
@lang('modules.order.card')
@lang('modules.order.upi')
@lang('modules.order.bank_transfer')
@lang('modules.order.due')
@lang('app.cancel')
@lang('app.confirm')
{{-- Inline Tailwind Confirm Popover (anchored near clicked button) --}}
@lang('app.confirm')
@lang('app.cancel')
@lang('app.ok')
{{-- Loyalty Redemption (AJAX POS) - $posLoyaltyEnabled passed from PosController (tt parity) --}}
@if($posLoyaltyEnabled ?? false)
@lang('loyalty::app.redeemLoyaltyPoints')
{{-- Always render this block so JS can populate when customer added in-session --}}
{{ optional($customer)->name ?? '' }} {{ __('loyalty::app.hasAvailablePoints') }}:
{{ number_format($loyaltyPointsAvailable ?? 0) }}
@lang('loyalty::app.points')
@lang('loyalty::app.noPointsAvailable')
{{ __('loyalty::app.pointsValue') }}:
0
{{ __('loyalty::app.maxDiscountToday') }}:
{{ $loyaltyDiscountAmount ?? 0 }}
@lang('loyalty::app.pointsToRedeem')
{{ __('Minimum') }}:
0 @lang('loyalty::app.points')
| {{ __('Maximum') }}:
0 @lang('loyalty::app.points')
@lang('loyalty::app.loyaltyDiscount')
{{ $loyaltyDiscountAmount ?? 0 }}
@lang('app.skip')
@lang('loyalty::app.useMax') (0 )
@lang('loyalty::app.applyDiscount')
@endif
{{-- Print Options Modal (AJAX/JS-based) --}}
@lang('modules.order.printOptions')
@lang('modules.order.selectPrintOption')
{{-- Print All Option --}}
@lang('modules.order.printAll')
@if(isset($orderDetail) && $orderDetail && $orderDetail->relationLoaded('splitOrders'))
@lang('modules.order.printAllDesc', ['count' => $orderDetail->splitOrders->where('status', 'paid')->count() + 1])
@endif
{{-- Summary Only Option --}}
@lang('modules.order.summaryOnly')
@lang('modules.order.summaryOnlyDesc')
{{-- Individual Only Option (mapped to split receipts) --}}
@lang('modules.order.individualOnly')
@if(isset($orderDetail) && $orderDetail && $orderDetail->relationLoaded('splitOrders'))
@lang('modules.order.individualOnlyDesc', ['count' => $orderDetail->splitOrders->where('status', 'paid')->count()])
@endif
{{-- Single Guest Option (mapped to main order print) --}}
@lang('modules.order.singleGuest')
@lang('modules.order.singleGuestDesc')
{{ __('app.close') }}
{{-- Error Modal --}}
{{-- Modifiers Modal: compact width, scroll body, pinned actions --}}
@lang('modules.modifier.itemModifiers')
{{-- Table Change Modal --}}
@lang('modules.order.changeTable')
@livewire('pos.set-table')
@lang('app.close')
@endif
@push('scripts')
@vite(['resources/js/pos-offline.js'])
@endpush