HEX
Server: Microsoft-IIS/10.0
System: Windows NT ITPWINWEBSVR22 10.0 build 20348 (Windows Server 2022) AMD64
User: www.conferencesearch.co.uk (0)
PHP: 8.3.30
Disabled: NONE
Upload Files
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 %}