File: D:/web/hyperflight/apps/inxpress/prev/2025-11-04d/templates/invoices.html
{% extends "base.html" %}
{% block title %}Invoices{% endblock %}
{% block content %}
<div class="d-flex align-items-center justify-content-between mb-2">
<h1 class="h4 mb-0">Invoices</h1>
</div>
<form method="get"
action="{{ url_for('invoices') }}"
class="row row-cols-1 row-cols-lg-auto g-2 align-items-end mb-3">
<input type="hidden" name="page" value="{{ page }}">
<div class="col">
<label class="form-label">Search</label>
<input type="text" name="q" value="{{ q or '' }}" class="form-control"
placeholder="Invoice number…" style="width:16rem">
</div>
<div class="col">
<label class="form-label">From</label>
<input type="date" name="from" class="form-control" lang="en-GB"
value="{{ date_from_iso or '' }}"
onchange="this.form.page.value=1; this.form.submit()">
</div>
<div class="col">
<label class="form-label">To</label>
<input type="date" name="to" class="form-control" lang="en-GB"
value="{{ date_to_iso or '' }}"
onchange="this.form.page.value=1; this.form.submit()">
</div>
<div class="col">
<label class="form-label">Page size</label>
<select name="pagesize" class="form-select" style="width:8rem"
onchange="this.form.page.value=1; this.form.submit()">
<option value="25" {{ 'selected' if pagesize_raw=='25' else '' }}>25</option>
<option value="50" {{ 'selected' if pagesize_raw in ['50',''] else '' }}>50</option>
<option value="100" {{ 'selected' if pagesize_raw=='100' else '' }}>100</option>
<option value="200" {{ 'selected' if pagesize_raw in ['200',''] else '' }}>200</option>
<option value="all" {{ 'selected' if pagesize_raw=='all' else '' }}>All records</option>
</select>
</div>
<div class="col">
<button type="submit" class="btn btn-primary">Apply</button>
{% if q or date_from_iso or date_to_iso or (pagesize_raw and pagesize_raw!='50') %}
<a class="btn btn-outline-secondary ms-1" href="{{ url_for('invoices') }}">Clear</a>
{% endif %}
</div>
</form>
<table class="table table-sm table-hover align-middle">
<thead class="table-light">
<tr>
<th class="text-end">ID</th>
<th>Invoice No.</th>
<th>Date</th>
<th>Customer</th>
<th class="text-end">Airbills</th>
<th class="text-end">Amount Due (£)</th>
<th class="text-end">VAT Amt (£)</th>
<th class="text-end">VAT VAT (£)</th>
<th class="text-end">VAT Total (£)</th>
<th class="text-end">Non-VAT Amt (£)</th>
<th class="text-end">Non-VAT Total (£)</th>
<th>PDF</th>
</tr>
</thead>
<tbody>
{% for r in rows %}
<tr>
<td class="text-end">{{ r.invoice_id }}</td>
<td class="text-nowrap">
{% if r.invoice_number %}
<a href="{{ url_for('shipments_parsed', invoice=r.invoice_number, page=1) }}">
{{ r.invoice_number }}
</a>
{% endif %}
</td>
<td class="text-nowrap">{{ r.invoice_date|fmt_date }}</td>
<td class="text-nowrap">{{ r.customer_number }}</td>
<td class="text-end">{{ r.airbills_count }}</td>
<td class="text-end">{{ r.amount_due|fmt }}</td>
<td class="text-end">{{ r.vat_shipments_amount|blank_if_zero }}</td>
<td class="text-end">{{ r.vat_shipments_vat|blank_if_zero }}</td>
<td class="text-end">{{ r.vat_shipments_total|blank_if_zero }}</td>
<td class="text-end">{{ r.non_vat_shipments_amount|blank_if_zero }}</td>
<td class="text-end">{{ r.non_vat_shipments_total|blank_if_zero }}</td>
<td>
{% if r.pdf_file %}
{% set src = r.pdf_file %}
{% set href = src if src.startswith('http') else url_for('pdf_download', fname=src) %}
<a href="{{ href }}" class="btn btn-outline-secondary btn-sm" target="_blank" rel="noopener">Open PDF</a>
{% endif %}
</td>
</tr>
{% endfor %}
{% if not rows %}
<tr><td colspan="12" class="text-center text-muted py-4">No invoices found.</td></tr>
{% endif %}
</tbody>
{% if rows %}
<tfoot>
<tr class="fw-semibold">
<td colspan="5" class="text-end">Page totals</td>
<td class="text-end">{{ sums.amount_due|fmt }}</td>
<td class="text-end">{{ sums.vat_shipments_amount|fmt }}</td>
<td class="text-end">{{ sums.vat_shipments_vat|fmt }}</td>
<td class="text-end">{{ sums.vat_shipments_total|fmt }}</td>
<td class="text-end">{{ sums.non_vat_shipments_amount|fmt }}</td>
<td class="text-end">{{ sums.non_vat_shipments_total|fmt }}</td>
<td></td>
</tr>
</tfoot>
{% endif %}
</table>
{% if last_page > 1 %}
<nav aria-label="Pagination">
<ul class="pagination pagination-sm">
<li class="page-item {{ 'disabled' if page<=1 }}">
<a class="page-link" href="{{ url_for('invoices', q=q, from=date_from_iso, to=date_to_iso, pagesize=pagesize_raw, sort=sort, dir=direction, page=1) }}">« First</a>
</li>
<li class="page-item {{ 'disabled' if page<=1 }}">
<a class="page-link" href="{{ url_for('invoices', q=q, from=date_from_iso, to=date_to_iso, pagesize=pagesize_raw, sort=sort, dir=direction, page=page-1) }}">‹ Prev</a>
</li>
<li class="page-item disabled"><span class="page-link">{{ page }} / {{ last_page }}</span></li>
<li class="page-item {{ 'disabled' if page>=last_page }}">
<a class="page-link" href="{{ url_for('invoices', q=q, from=date_from_iso, to=date_to_iso, pagesize=pagesize_raw, sort=sort, dir=direction, page=page+1) }}">Next ›</a>
</li>
<li class="page-item {{ 'disabled' if page>=last_page }}">
<a class="page-link" href="{{ url_for('invoices', q=q, from=date_from_iso, to=date_to_iso, pagesize=pagesize_raw, sort=sort, dir=direction, page=last_page) }}">Last »</a>
</li>
</ul>
</nav>
{% endif %}
{% endblock %}