51 lines
2.5 KiB
HTML
51 lines
2.5 KiB
HTML
{% extends "tenant/layouts/base.html" %}
|
||
{% block title %}Appointments{% endblock %}
|
||
{% block content %}
|
||
<div class="d-flex justify-content-between align-items-center mb-3">
|
||
<h4 class="fw-bold mb-0"><i class="bi bi-calendar3 me-2"></i>Appointments</h4>
|
||
<div class="d-flex align-items-center gap-2">
|
||
<a href="{{ url_for('appointments.index', date=prev_date.isoformat()) }}"
|
||
class="btn btn-outline-secondary btn-sm">‹</a>
|
||
<input type="date" class="form-control form-control-sm" value="{{ view_date.isoformat() }}"
|
||
onchange="window.location='{{ url_for('appointments.index') }}?date='+this.value"
|
||
style="width:150px;">
|
||
<a href="{{ url_for('appointments.index', date=next_date.isoformat()) }}"
|
||
class="btn btn-outline-secondary btn-sm">›</a>
|
||
<a href="{{ url_for('appointments.create') }}" class="btn btn-primary btn-sm ms-2">+ New</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card shadow-sm">
|
||
<div class="table-responsive">
|
||
<table class="table table-hover mb-0">
|
||
<thead class="table-light">
|
||
<tr><th>Time</th><th>Customer</th><th>Service</th><th>Staff</th><th>Status</th><th>Type</th><th></th></tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for appt in appointments %}
|
||
<tr>
|
||
<td class="fw-semibold text-nowrap">{{ appt.start_time.strftime('%I:%M %p') }}</td>
|
||
<td>{{ appt.customer.name if appt.customer else '<em class="text-muted">Walk-in</em>' | safe }}</td>
|
||
<td class="small">{{ appt.service.name if appt.service else '—' }}</td>
|
||
<td class="small">{{ appt.staff.name if appt.staff else '—' }}</td>
|
||
<td>
|
||
<span class="badge bg-{{ {'pending':'warning','confirmed':'primary','in_progress':'info','completed':'success','cancelled':'danger','no_show':'dark'}.get(appt.status,'secondary') }}">
|
||
{{ appt.status }}
|
||
</span>
|
||
</td>
|
||
<td class="small">{{ 'Walk-in' if appt.is_walk_in else 'Booked' }}</td>
|
||
<td>
|
||
<a href="{{ url_for('appointments.view', appt_id=appt.id) }}" class="btn btn-outline-secondary btn-sm">View</a>
|
||
{% if appt.status in ['pending','confirmed','in_progress'] %}
|
||
<a href="{{ url_for('pos.checkout') }}?appointment_id={{ appt.id }}" class="btn btn-success btn-sm">Checkout</a>
|
||
{% endif %}
|
||
</td>
|
||
</tr>
|
||
{% else %}
|
||
<tr><td colspan="7" class="text-center text-muted py-4">No appointments for this day.</td></tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
{% endblock %} |