Add specialty module and GP service pricing settings.
Deploy Ladill Care / deploy (push) Successful in 51s

Admin dashboard module cards open per-module settings with editable service prices; GP consultation and clinic fees live under Settings → GP pricing (inventory drugs unchanged).

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-18 17:19:18 +00:00
co-authored by Cursor
parent ce782382c5
commit 5a1d47b9cc
13 changed files with 631 additions and 19 deletions
+17 -12
View File
@@ -1,7 +1,9 @@
<x-app-layout title="Modules · Settings">
<x-settings.page title="Specialty modules" description="Activate specialty practice surfaces for {{ $organization->name }}. Departments and queues are provisioned per branch; deactivating hides UI without deleting clinical history.">
<x-settings.page title="Specialty modules" description="Activate specialty practice surfaces for {{ $organization->name }}. Open a module to set service prices. Departments and queues are provisioned per branch; deactivating hides UI without deleting clinical history.">
<p class="text-sm">
<a href="{{ route('care.settings') }}" class="font-medium text-indigo-600 hover:text-indigo-800"> Facility settings</a>
<span class="mx-2 text-slate-300">·</span>
<a href="{{ route('care.settings.gp-pricing') }}" class="font-medium text-indigo-600 hover:text-indigo-800">GP pricing</a>
</p>
@if (session('success'))
@@ -24,27 +26,30 @@
<div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
@foreach ($catalog as $key => $module)
@php $isDefault = ! empty($module['default_on_paid_plans']); @endphp
<label class="flex flex-col rounded-2xl border border-slate-200 bg-white p-5 shadow-sm transition {{ $isDefault ? '' : 'cursor-pointer hover:border-indigo-200' }} {{ ! empty($enabled[$key]) || $isDefault ? 'ring-1 ring-indigo-200' : '' }}">
<div class="flex flex-col rounded-2xl border border-slate-200 bg-white p-5 shadow-sm transition {{ ! empty($enabled[$key]) || $isDefault ? 'ring-1 ring-indigo-200' : '' }}">
<div class="flex items-start justify-between gap-3">
<div>
<a href="{{ route('care.settings.modules.show', $key) }}" class="min-w-0 flex-1 hover:opacity-90">
<p class="text-sm font-semibold text-slate-900">{{ $module['label'] }}</p>
<p class="mt-1 text-xs text-slate-500">{{ $module['description'] }}</p>
@if ($isDefault)
<p class="mt-2 text-[11px] font-medium uppercase tracking-wide text-indigo-600">Included on Pro / Enterprise</p>
@endif
</div>
<input type="checkbox" name="modules[{{ $key }}]" value="1"
@checked(old("modules.{$key}", ! empty($enabled[$key]) || $isDefault))
@disabled(! $canManage || $isDefault)
class="mt-0.5 rounded border-slate-300">
@if ($isDefault)
<input type="hidden" name="modules[{{ $key }}]" value="1">
@endif
<p class="mt-3 text-[11px] font-medium text-indigo-600">Settings &amp; pricing </p>
</a>
<label class="{{ $isDefault ? '' : 'cursor-pointer' }}" title="Activate module" @click.stop>
<input type="checkbox" name="modules[{{ $key }}]" value="1"
@checked(old("modules.{$key}", ! empty($enabled[$key]) || $isDefault))
@disabled(! $canManage || $isDefault)
class="mt-0.5 rounded border-slate-300">
@if ($isDefault)
<input type="hidden" name="modules[{{ $key }}]" value="1">
@endif
</label>
</div>
<p class="mt-3 text-[11px] uppercase tracking-wide text-slate-400">
{{ $module['department_name'] ?? $module['label'] }}
</p>
</label>
</div>
@endforeach
</div>