Files
ladill-queue/config/qms.php
T
isaacclad 4e45ef4b65
Deploy Ladill Queue / deploy (push) Successful in 53s
Raise Pro and Enterprise by GHS 1500; add hardware to Pro.
Pro is GHS 2490/mo and Enterprise GHS 4490/branch/mo. Pro now lists
Ladill-provided kiosk, display, and audio system.
2026-07-16 09:28:09 +00:00

257 lines
8.9 KiB
PHP

<?php
return [
'roles' => [
'super_admin' => 'Super Administrator',
'org_admin' => 'Organization Administrator',
'branch_manager' => 'Branch Manager',
'receptionist' => 'Receptionist',
'queue_operator' => 'Queue Operator',
'counter_staff' => 'Counter Staff',
'department_manager' => 'Department Manager',
'security' => 'Security',
'supervisor' => 'Supervisor',
],
'department_types' => [
'general' => 'General',
'reception' => 'Reception',
'customer_service' => 'Customer Service',
'cashier' => 'Cashier',
'consultation' => 'Consultation',
'laboratory' => 'Laboratory',
'pharmacy' => 'Pharmacy',
'verification' => 'Document Verification',
'payments' => 'Payments',
'collections' => 'Collections',
'technical_support' => 'Technical Support',
],
'queue_strategies' => [
'fifo' => 'First In, First Out',
'priority' => 'Priority Queue',
'vip' => 'VIP Queue',
'appointment' => 'Appointment Queue',
'emergency' => 'Emergency Queue',
'department' => 'Department Queue',
'skill' => 'Skill-based Routing',
'dynamic' => 'Dynamic Routing',
'overflow' => 'Overflow Routing',
],
'ticket_priorities' => [
'emergency' => 'Emergency',
'vip' => 'VIP',
'elderly' => 'Elderly',
'disabled' => 'Disabled',
'appointment' => 'Appointment',
'walk_in' => 'Walk-in',
],
'ticket_statuses' => [
'waiting' => 'Waiting',
'called' => 'Called',
'serving' => 'Serving',
'on_hold' => 'On Hold',
'completed' => 'Completed',
'no_show' => 'No Show',
'cancelled' => 'Cancelled',
'transferred' => 'Transferred',
],
'ticket_sources' => [
'kiosk' => 'Kiosk',
'reception' => 'Reception Desk',
'mobile' => 'Mobile App',
'web' => 'Website',
'api' => 'API',
'appointment' => 'Appointment Check-in',
'tablet' => 'Self-service Tablet',
],
'counter_statuses' => [
'available' => 'Available',
'busy' => 'Busy',
'offline' => 'Offline',
'paused' => 'Paused',
],
'appointment_modes' => [
'appointment_only' => 'Appointment Only',
'walk_in_only' => 'Walk-in Only',
'hybrid' => 'Hybrid',
],
'device_types' => [
'kiosk' => 'Touchscreen Kiosk',
'tablet' => 'Tablet',
'printer' => 'Ticket Printer',
'scanner' => 'Barcode/QR Scanner',
'display' => 'Counter Display',
'feedback_tablet' => 'Feedback Tablet',
],
'display_layouts' => [
'standard' => 'Standard',
'compact' => 'Compact',
'split' => 'Split Screen',
'media' => 'Media + Queue',
],
'announcement_templates' => [
'en' => 'Ticket :ticket, please proceed to :counter.',
'fr' => 'Ticket :ticket, veuillez vous rendre au :counter.',
'tw' => 'Ticket :ticket, mesrɛ kɔ :counter.',
],
'industry_templates' => [
'healthcare' => 'Healthcare',
'banking' => 'Banking',
'government' => 'Government Office',
'visitor' => 'Visitor Management',
'university' => 'University',
'retail' => 'Retail',
'telecom' => 'Telecom Service Centre',
'custom' => 'Custom',
],
'audit_actions' => [
'organization.created' => 'Organization created',
'organization.updated' => 'Organization updated',
'branch.created' => 'Branch created',
'branch.updated' => 'Branch updated',
'department.created' => 'Department created',
'department.updated' => 'Department updated',
'department.deleted' => 'Department deleted',
'member.created' => 'Member added',
'member.updated' => 'Member updated',
'member.deleted' => 'Member removed',
'service_queue.created' => 'Queue created',
'service_queue.updated' => 'Queue updated',
'service_queue.deleted' => 'Queue archived',
'service_queue.paused' => 'Queue paused',
'service_queue.resumed' => 'Queue resumed',
'counter.created' => 'Counter created',
'counter.updated' => 'Counter updated',
'counter.deleted' => 'Counter archived',
'ticket.issued' => 'Ticket issued',
'ticket.called' => 'Ticket called',
'ticket.recalled' => 'Ticket recalled',
'ticket.skipped' => 'Ticket skipped',
'ticket.transferred' => 'Ticket transferred',
'ticket.held' => 'Ticket placed on hold',
'ticket.completed' => 'Service completed',
'ticket.no_show' => 'Ticket marked no-show',
'ticket.cancelled' => 'Ticket cancelled',
'appointment.created' => 'Appointment scheduled',
'appointment.checked_in' => 'Appointment checked in',
'appointment.cancelled' => 'Appointment cancelled',
'workflow.created' => 'Workflow created',
'workflow.updated' => 'Workflow updated',
'display.created' => 'Display screen created',
'display.updated' => 'Display screen updated',
'device.created' => 'Device registered',
'device.updated' => 'Device updated',
'feedback.submitted' => 'Customer feedback submitted',
],
'notification_templates' => [
'issued' => 'Your ticket :ticket is confirmed for :queue. We will notify you when it is almost your turn.',
'called' => 'Ticket :ticket — please proceed to :counter now.',
'almost_ready' => 'Ticket :ticket — you are :ahead customer(s) away. Please head to the waiting area.',
'completed' => 'Thank you for visiting. Ticket :ticket is complete. Share feedback: :feedback_url',
'missed' => 'Ticket :ticket was marked as missed. Please rejoin the queue if you still need service.',
'transferred' => 'Ticket :ticket has been handed off to :queue. Keep your ticket — your number stays the same.',
],
'report_types' => [
'tickets' => 'Ticket volume & throughput',
'wait_times' => 'Wait times & peak hours',
'counters' => 'Counter performance',
'appointments' => 'Appointments',
'feedback' => 'Customer satisfaction',
'service_sessions' => 'Service sessions',
],
'plans' => [
'free' => [
'label' => 'Free',
'price_minor' => 0,
'max_branches' => 1,
'max_queues' => 5,
],
'pro' => [
'label' => 'Pro',
'price_minor' => (int) env('QUEUE_PRO_PRICE_MINOR', 249000),
'max_branches' => null,
'max_queues' => null,
],
'enterprise' => [
'label' => 'Enterprise',
'price_minor_per_branch' => (int) env('QUEUE_ENTERPRISE_PRICE_PER_BRANCH_MINOR', 449000),
'max_branches' => null,
'max_queues' => null,
],
],
'pro' => [
'grace_days' => (int) env('QUEUE_PRO_GRACE_DAYS', 3),
'period_days' => (int) env('QUEUE_PRO_PERIOD_DAYS', 30),
],
'enterprise' => [
'min_branches' => (int) env('QUEUE_ENTERPRISE_MIN_BRANCHES', 2),
],
'prepaid_months' => [6, 12, 24],
'rule_types' => [
'overflow' => 'Overflow routing',
'priority_boost' => 'Priority boost',
'routing' => 'Dynamic routing',
'capacity' => 'Capacity limit',
],
'workflow_templates' => [
'healthcare' => [
['name' => 'Registration', 'sort_order' => 1],
['name' => 'Triage', 'sort_order' => 2],
['name' => 'Consultation', 'sort_order' => 3],
['name' => 'Pharmacy', 'sort_order' => 4],
],
'banking' => [
['name' => 'Reception', 'sort_order' => 1],
['name' => 'Teller', 'sort_order' => 2],
['name' => 'Customer service', 'sort_order' => 3],
],
'government' => [
['name' => 'Document check', 'sort_order' => 1],
['name' => 'Processing', 'sort_order' => 2],
['name' => 'Collection', 'sort_order' => 3],
],
'custom' => [],
],
/*
|--------------------------------------------------------------------------
| Inbound service API keys (sibling Ladill apps calling Queue)
|--------------------------------------------------------------------------
*/
'service_api_keys' => array_filter([
'pos' => env('QUEUE_API_KEY_POS'),
'crm' => env('QUEUE_API_KEY_CRM'),
'care' => env('QUEUE_API_KEY_CARE'),
'frontdesk' => env('QUEUE_API_KEY_FRONTDESK'),
]),
'display_poll_ms' => (int) env('QUEUE_DISPLAY_POLL_MS', 1200),
'upgrade_banner' => [
'title' => 'Unlock Queue Pro or Enterprise',
'description' => 'Unlimited branches, advanced routing, Care & Frontdesk integrations — from GHS 2490/mo.',
'route' => 'qms.pro.index',
],
];