@extends('layouts.app') @section('title', 'Settings') @section('content')

Settings

Everything here is configurable at runtime — no code changes or redeploys needed.

@csrf @method('PUT')

Whichever of these you fill in is printed on every receipt and bill, so customers know where to pay.

Shift variances beyond this amount are highlighted for manager review.

When happy hour is on, every product and service added to an order or tab is priced this percentage lower. Items already on an order keep the price they were added at.

@foreach ([1 => 'Mon', 2 => 'Tue', 3 => 'Wed', 4 => 'Thu', 5 => 'Fri', 6 => 'Sat', 7 => 'Sun'] as $n => $label) @endforeach

Times are {{ config('pos.company.timezone') }} time. A window past midnight (e.g. 18:00 – 01:00) works.

@if ($mpesa['configured'])
M-Pesa is connected ({{ $mpesa['env'] }}).

Callback URL registered with each request: {{ $mpesa['callback_url'] }}

@else
M-Pesa is not set up yet.

Add the Safaricom Daraja keys to the server’s .env file (the M-Pesa block in .env.example), then run php artisan config:clear. Keys are kept in the file, not in this screen, so they never sit in the database.

@endif
{{-- Logo --}}

Business logo

Shown on the sign-in screen, the sidebar, and printed receipts.

@if ($general['logo_path']) Current logo @else
{{ substr($general['company_name'], 0, 1) }}
@endif
@csrf
@if ($general['logo_path'])
@csrf @method('DELETE')
@endif

PNG, JPG or WEBP, up to 2MB. Square images look best.

{{-- Theme --}}

Colour theme

Applies everywhere immediately — sign-in screen, buttons, badges — no restart needed.

@csrf @method('PUT')
@foreach ($theme['presets'] as $key => $p) @endforeach

Receipt printing settings

Choose what appears on customer receipts and bills.

Receipt business logo

Upload the logo here and select “Print business logo” below. PNG, JPG or WEBP, maximum 2MB.

@if (!empty($general['logo_path'])) @php $receiptLogoPath = ltrim((string) $general['logo_path'], '/'); foreach (['storage/app/public/', 'public/storage/', 'storage/'] as $receiptLogoPrefix) { if (str_starts_with($receiptLogoPath, $receiptLogoPrefix)) { $receiptLogoPath = substr($receiptLogoPath, strlen($receiptLogoPrefix)); break; } } @endphp Current business logo @else No logo uploaded yet. @endif
@csrf
@if (!empty($general['logo_path']))
@csrf @method('DELETE')
@endif
@csrf @method('PUT')
@foreach ([ 'show_logo' => 'Print business logo', 'show_business_name' => 'Print business name', 'show_landmark' => 'Print landmark/location', 'show_customer_details' => 'Print customer details', 'show_business_contacts' => 'Enable business contact printing', 'show_phone' => 'Print primary phone', 'show_alternative_phone' => 'Print alternative phone', 'show_email' => 'Print email address', 'show_website' => 'Print website', 'show_kra_pin' => 'Print business KRA PIN', 'show_order_details' => 'Print order/table/waiter details', ] as $key => $label) @endforeach

Departments

@foreach ($departments as $dept) @php($fixedCode = $dept->code) @if ($fixedCode)
@csrf @method('PUT')
@else
{{ $dept->name }}
@endif @endforeach

Restaurant and Bar codes are fixed at 001 and 002. Their names can be changed without changing the underlying department codes/slugs.

@endsection