{% extends "base.html" %} {% set editable = rpt.status == 'draft' %} {% block title %}{{ rpt.title }} — CCL Expense Reporter{% endblock %} {% block content %}

{{ rpt.title }}

{{ SITES[rpt.site]['label'] }} · {{ rpt.user.name }} · mileage ${{ '%.3f'|format(rate) }}/mile · {{ rpt.status }}

Export .xlsx {% if editable %}
{% elif current_user.is_admin %}
{% endif %}
{# ---- readiness checks (mirrors the corporate audit) ---- #}
Schedule 1 reconciliation Meals & entertainment on lines: ${{ '%.2f'|format(recon[0]) }} · Schedule 1 detail: ${{ '%.2f'|format(recon[1]) }} {% if recon[2] %}— reconciled.{% else %}— ${{ '%.2f'|format((recon[0]-recon[1])|abs) }} unexplained. Every meal needs a Schedule 1 entry before submitting.{% endif %}
Line completeness {% if missing %}{{ missing|length }} line(s) are missing a city or business purpose. {% else %}Every line has a date, city, and business purpose.{% endif %}
{# =============================== LINES =============================== #}

Expense lines

{% for ln in rpt.lines %} {% for f in ['air_rail','auto_rental','lodging','breakfast','lunch','dinner','entertainment','phone_internet','gas_auto'] %} {% endfor %} {% endfor %} {% for f in ['air_rail','auto_rental','lodging','breakfast','lunch','dinner','entertainment','phone_internet','gas_auto'] %} {% endfor %}
DateCity / StateBusiness purpose MilesMileage Air/RailRentalLodging BkfstLunchDinner EntmtPhoneGas/Auto MiscMisc $Total
{{ ln.date.strftime('%m/%d') }} {{ ln.city }}{{ ln.purpose }} {{ ln.miles or '' }} {{ '%.2f'|format(ln.miles * rate) if ln.miles else '' }}{{ '%.2f'|format(ln[f]) if ln[f] else '' }}{{ ln.misc_code }} {{ '%.2f'|format(ln.misc_amount) if ln.misc_amount else '' }} {{ '%.2f'|format(rpt.line_total(ln)) }} {% if editable %}
{% endif %}
Totals (US $) {{ totals['miles'] or '' }} {{ '%.2f'|format(totals['mileage_amt']) }}{{ '%.2f'|format(totals[f]) }} {{ '%.2f'|format(totals['misc_amount']) }} {{ '%.2f'|format(totals['grand']) }}
{% if editable %}

Add an expense line

Meals and entertainment amounts must also be detailed on Schedule 1 below — the report can't be submitted until they reconcile.

{% endif %} {# ============================ SCHEDULE 1 ============================= #}

Schedule 1 — meals, entertainment & explained items

The IRS requires who attended, their relationship to CCL, where, and the business discussed, for every business meal or entertainment expense. Use it also to explain miscellaneous "{{ 'O' if rpt.site == 'charlotte' else 'E' }}" items.

{% for m in rpt.meals %} {% endfor %}
DateBusiness purposeGuests (incl. employees) Relationship to CCLVenueTypeAmount
{{ m.date.strftime('%m/%d') }} {{ m.purpose }}{{ m.guests }} {{ m.relationship_to_ccl }}{{ m.venue }}{{ m.meal_type }} {{ '%.2f'|format(m.amount) }} {% if editable %}
{% endif %}
{% if editable %}

Add a Schedule 1 entry

{% endif %} {# ============================= RECEIPTS ============================== #}

Receipts

Photograph a receipt or pick a PDF — text is read on your device (nothing is sent for OCR) and the vendor, date, and total are suggested below. Attach only originals; keep boarding passes for flights.

{% if editable %}
{% endif %} {% if rpt.receipts %} {% else %}

No receipts attached yet.

{% endif %} {% endblock %} {% block scripts %} {% if editable %} {% endif %} {% endblock %}