{% extends "base.html" %} {% block title %}{{ provider.name }}{% endblock %} {% block page_title %}{{ provider.name }}{% endblock %} {% block extra_css %} .util-chip { font-size: 10px; font-weight: 700; padding: 2px 7px; border-radius: 10px; text-transform: uppercase; letter-spacing: .05em; } .trend-up { color: #ef4444; } .trend-down { color: #10b981; } {% endblock %} {% block topbar_actions %} ← Utilities Edit Add Bill {% endblock %} {% block content %}
| Period | Due | Amount | {% if provider.tracks_usage %}Usage | Rate | {% endif %}Status | Actions |
|---|---|---|---|---|---|---|
|
{{ b.period_label }}
{% if b.notes %} {{ b.notes | truncate(60) }} {% endif %}
|
{{ b.due_date.strftime('%b %d, %Y') if b.due_date else '—' }} | {{ b.amount | currency }} | {% if provider.tracks_usage %}{% if b.usage %}{{ '%.1f' | format(b.usage | float) }} {{ b.usage_unit or provider.usage_unit }}{% else %}—{% endif %} | {% if b.rate_per_unit %}{{ current_user.currency_symbol }}{{ '%.4f' | format(b.rate_per_unit) }}{% else %}—{% endif %} | {% endif %}
{% if b.status == 'paid' %}
Paid
{% if b.paid_date %} {{ b.paid_date.strftime('%b %d') }} {% endif %}
{% elif b.status == 'overdue' %}
{{ b.days_until_due | abs }}d late
{% elif b.status == 'due_soon' %}
Due in {{ b.days_until_due }}d
{% else %}
Unpaid
{% endif %}
|
|
Add a bill to start tracking cost{% if provider.tracks_usage %} and usage{% endif %}.
Add First Bill