{% extends 'core/base.html' %} {% load static %} {% load plan_tags %} {% load currency_filters %} {% block title %}Dashboard — SwiftPOS{% endblock %} {% block topbar_title %}Overview{% endblock %} {% block extra_css %} {% endblock %} {% block content %}
{% if days_until_expiry is not None and days_until_expiry <= 14 %}
{% if license_expired %}License Expired!{% else %}Subscription expiring in {{ days_until_expiry }} day{{ days_until_expiry|pluralize }}{% endif %} {% if not license_expired %} — Renew now to avoid interruptions.{% endif %}
View Plan
{% endif %}
Welcome back 👋
{{ user_name|default:user.get_full_name|default:user.username|upper }}
{{ user_role|default:user.get_role_display|default:"Staff" }}  ·  {% now "l, N j Y" %}
{% if allow_multi_branch %}
{% endif %}
Today's Sales
{% money today_sales 0 %}
{{ today_transactions|default:0 }} orders
{% if sales_growth_percentage is not None %}
{{ sales_growth_percentage|floatformat:1 }}%
{% endif %}
Avg. Order
{% money avg_order_value 0 %}
{{ today_customers|default:0 }} customers
Products
{{ total_inventory }}
{{ low_stock_products }} low  ·  {{ out_of_stock_products|default:0 }} out
Staff
{{ total_users }}
{{ active_users }} active
Sales Trend — Last 7 Days
Revenue Orders
Payment Methods — Today
{% if payment_breakdown %}
{% for method in payment_breakdown %}
{{ method.label }}
{% money method.total 0 %}
{{ method.percentage|floatformat:0 }}%
{% endfor %}
{% else %}
No payment data for today yet
{% endif %}
Sales Snapshot
Today
{% money today_sales 0 %}
{{ today_transactions }} orders
Yesterday
{% money yesterday_sales 0 %}
{{ yesterday_transactions }} orders
This Week
{% money weekly_sales 0 %}
{{ weekly_transactions }} orders
This Month
{% money monthly_sales 0 %}
{{ monthly_transactions }} orders
{% if sales_growth_percentage is not None %}
{{ sales_growth_percentage|floatformat:1 }}% vs yesterday
{% endif %}
Top Products Today See all →
{% if top_selling_items %} {% for item in top_selling_items %} {% with forloop.counter as rank %}
{{ rank }}
{{ item.product__name }}
{% money item.total_revenue 0 %}
{{ item.total_quantity }} sold
{% endwith %} {% endfor %} {% else %}
No sales recorded today
{% endif %}
Recent Activity View all →
{% if recent_orders %} {% for order in recent_orders %}
{% if order.customer %}{{ order.customer.name }}{% else %}Walk-in Sale{% endif %}
#{{ order.order_number }} · {{ order.created_at|date:"H:i" }}
{% money order.final_amount 0 %}
{{ order.payment_status|title }}
{% endfor %} {% else %}
No activity yet today
{% endif %}
Inventory Status
{{ total_inventory }}
Total
{{ in_stock_products }}
In Stock
{{ low_stock_products }}
Low
{{ out_of_stock_products|default:0 }}
Out
Cashier Performance — Today
{% if cashier_performance %}
{% for c in cashier_performance %} {% endfor %}
Cashier Orders Revenue Avg.
{{ c.cashier|slice:':2'|upper }} {{ c.cashier }} {{ c.total_orders }} {% money c.total_sales 0 %} {% if c.total_orders %}{{ currency_symbol }}{% widthratio c.total_sales c.total_orders 1 %}{% else %}—{% endif %}
{% else %}
No cashier data for today
{% endif %}
Subscription {% if sub_data %} {% if sub_data.is_accessible %}Active{% elif sub_data.is_expired %}Expired{% else %}Suspended{% endif %} {% endif %}
{% if sub_data %}
{{ sub_data.plan_name }}
{% if sub_data.expiry_date %} Expires {{ sub_data.expiry_date|date:"M j, Y" }} {% if sub_data.is_expired %} · Expired{% endif %} {% else %} No expiry date {% endif %}
Products {{ sub_data.products_count }}{% if sub_data.max_products %} / {{ sub_data.max_products }}{% else %} / ∞{% endif %}
Categories {{ sub_data.categories_count }}{% if sub_data.max_categories %} / {{ sub_data.max_categories }}{% else %} / ∞{% endif %}
Orders Today {{ sub_data.orders_today }}{% if sub_data.max_orders_per_day %} / {{ sub_data.max_orders_per_day }}{% else %} / ∞{% endif %}
Staff {{ sub_data.users_count }}{% if sub_data.max_staff %} / {{ sub_data.max_staff }}{% else %} / ∞{% endif %}
Features
{% for label, enabled in sub_data.features %}
{{ label }}
{% endfor %}
{% else %}
No subscription plan assigned
{% endif %}
{% endblock %} {% block extra_js %} {% endblock %}