{% extends "django_program/manage/base.html" %} {% block title %}Financial Overview{% endblock %} {% block page_title %}

Financial Overview

Revenue, orders, payments, and ticket sales for {{ conference.name }}

{% endblock %} {% block page_actions %} View All Orders {% endblock %} {% block content %} {% include "django_program/manage/charts/_chart_utils.html" %}
${{ revenue.net|floatformat:2 }}
Net Revenue
{% if revenue.refunded %}
${{ revenue.total|floatformat:2 }} gross
{% endif %}
{{ total_orders }}
Total Orders
{% if orders_by_status.paid.count %}
{{ orders_by_status.paid.count }} paid
{% endif %}
{{ carts_by_status.active }}
Active Carts
${{ revenue.credits_outstanding|floatformat:2 }}
Credits Outstanding
{% if revenue.credits_applied %}
${{ revenue.credits_applied|floatformat:2 }} applied
{% endif %}
{% include "django_program/manage/charts/_revenue_bar.html" with chart_data=chart_sales_json %} {% include "django_program/manage/charts/_ticket_inventory.html" with chart_data=chart_tickets_json %}
{% include "django_program/manage/charts/_order_status.html" with chart_data=chart_orders_json %} {% include "django_program/manage/charts/_payment_methods.html" with chart_data=chart_payments_json %}
{# Row 3: AOV + Revenue by type #}
{% include "django_program/manage/charts/_aov_line.html" with chart_data=chart_aov_json %} {% include "django_program/manage/charts/_revenue_stacked.html" with chart_data=chart_rev_by_type_json %}
{# Row 4: Waterfall + Cumulative #}
{% include "django_program/manage/charts/_waterfall.html" with chart_data=chart_waterfall_json %} {% include "django_program/manage/charts/_cumulative_revenue.html" with chart_data=chart_cumulative_json %}
{# Row 5: Discount impact + Refund gauge #}
{% include "django_program/manage/charts/_discount_impact.html" with chart_data=chart_discount_json %} {% include "django_program/manage/charts/_refund_gauge.html" with chart_data=chart_refund_json %}
{# Row 6: Stripe fees + Budget gauge #} {% if chart_stripe_json %}
{% include "django_program/manage/charts/_stripe_fees.html" with chart_data=chart_stripe_json %} {% if chart_budget_json %} {% include "django_program/manage/charts/_budget_gauge.html" with chart_data=chart_budget_json %} {% endif %}
{% endif %} {% if roi %}
${{ roi.total_expenses|floatformat:0 }}
Total Expenses
${{ roi.gross_profit|floatformat:0 }}
Gross Profit
{{ roi.gross_margin_pct|floatformat:1 }}%
Gross Margin
Target: 30-50%
{{ roi.roi_pct|floatformat:1 }}%
Event ROI
${{ roi.cost_per_attendee|floatformat:0 }}
Cost / Attendee
{% endif %} {% if expense_summary.by_category %}

Expense Budget vs. Actual

{% for cat in expense_summary.by_category %} {% endfor %}
Category Budget Actual Variance Expenses Progress
{{ cat.name }} {% if cat.budget %}${{ cat.budget|floatformat:0 }}{% else %}--{% endif %} ${{ cat.actual|floatformat:0 }} {% if cat.variance != None %} {% if cat.variance >= 0 %}+{% endif %}${{ cat.variance|floatformat:0 }} {% else %}--{% endif %} {{ cat.expense_count }} {% if cat.budget %}
{% widthratio cat.actual cat.budget 100 as pct %}
{% endif %}
Total ${{ expense_summary.total_budget|floatformat:0 }} ${{ expense_summary.total_expenses|floatformat:0 }} {% if expense_summary.budget_variance >= 0 %}+{% endif %}${{ expense_summary.budget_variance|floatformat:0 }} {{ expense_summary.expense_count }}
{% endif %}

Orders by Status

{% for status, data in orders_by_status.items %} {% endfor %}
Status Count
{% if status == "paid" %} Paid {% elif status == "pending" %} Pending {% elif status == "refunded" %} Refunded {% elif status == "partially_refunded" %} Partial Refund {% elif status == "cancelled" %} Cancelled {% else %} {{ status }} {% endif %} {{ data.count }}

Carts by Status

Status Count
Active {{ carts_by_status.active }}
Checked Out {{ carts_by_status.checked_out }}
Expired {{ carts_by_status.expired }}
Abandoned {{ carts_by_status.abandoned }}

Payments by Method

{% if total_payments %} {% for method, data in payments_by_method.items %} {% endfor %}
Method Count Total Amount
{{ data.label }} {{ data.count }} ${{ data.total_amount|floatformat:2 }}
{% else %}

No payments recorded.

{% endif %}

Ticket Type Sales

{% if ticket_sales %} {% for ticket in ticket_sales %} {% endfor %}
Ticket Type Price Sold Remaining Revenue
{{ ticket.name }} ${{ ticket.price }} {{ ticket.sold_count }} {% if ticket.total_quantity == 0 %} ∞ {% else %} {{ ticket.remaining_quantity|default:"--" }} {% endif %} ${{ ticket.ticket_revenue|default:"0.00" }}
{% else %}

No ticket types configured for this conference.

{% endif %}

Recent Orders

{% if recent_orders %} {% for order in recent_orders %} {% endfor %}
Reference User Status Total Date
{{ order.reference }} {{ order.user.email|default:order.user.username }} {% if order.status == "paid" %} Paid {% elif order.status == "pending" %} Pending {% elif order.status == "refunded" %} Refunded {% elif order.status == "partially_refunded" %} Partial Refund {% elif order.status == "cancelled" %} Cancelled {% endif %} ${{ order.total }} {{ order.created_at|date:"M j, Y" }}
{% else %}

No orders yet for this conference.

{% endif %}

Active Carts

{% if active_carts %} {% for cart in active_carts %} {% endfor %}
User Items Created Expires
{{ cart.user.email|default:cart.user.username }} {{ cart.item_count }} {{ cart.created_at|date:"M j, Y g:i A" }} {% if cart.expires_at %} {{ cart.expires_at|date:"M j, Y g:i A" }} {% else %} No expiry {% endif %}
{% else %}

No active carts at this time.

{% endif %} {# ── Purchase Orders ── #} {% if total_pos %}

Purchase Orders

{{ total_pos }}
Total POs
{% if po_by_status.paid.count %}
{{ po_by_status.paid.count }} paid
{% endif %}
${{ po_revenue|floatformat:2 }}
PO Revenue (Invoiced)
${{ po_collected|floatformat:2 }}
PO Payments Collected
${{ po_balance_outstanding|floatformat:2 }}
PO Balance Outstanding

POs by Status

{% for status, data in po_by_status.items %} {% if data.count %} {% endif %} {% endfor %}
Status Count Total Value
{% if status == "paid" %}Paid {% elif status == "draft" %}Draft {% elif status == "sent" %}Sent {% elif status == "partially_paid" %}Partially Paid {% elif status == "overpaid" %}Overpaid {% elif status == "cancelled" %}Cancelled {% endif %} {{ data.count }} ${{ data.total|floatformat:2 }}

PO Payments by Method

{% for method, data in po_payments_by_method.items %} {% if data.count %} {% endif %} {% endfor %}
Method Count Amount
{{ data.label }} {{ data.count }} ${{ data.total|floatformat:2 }}
{% if recent_pos %}

Recent Purchase Orders

{% for po in recent_pos %} {% endfor %}
Reference Organization Status Total Balance Due Created
{{ po.reference }} {{ po.organization_name }} {% if po.status == "paid" %}Paid {% elif po.status == "draft" %}Draft {% elif po.status == "sent" %}Sent {% elif po.status == "partially_paid" %}Partially Paid {% elif po.status == "overpaid" %}Overpaid {% elif po.status == "cancelled" %}Cancelled {% endif %} ${{ po.total|floatformat:2 }} ${{ po.balance_due|floatformat:2 }} {{ po.created_at|date:"M j, Y" }}
{% endif %} {% endif %} {% endblock %}