321 lines
16 KiB
HTML
321 lines
16 KiB
HTML
{% load i18n %}
|
|
{% load custom_filters %}
|
|
{% if request.is_dealer or request.is_manager or request.is_accountant %}
|
|
<h3 class="fw-bold mb-3">
|
|
{% blocktrans with start_date=start_date|date:"F j, Y" end_date=end_date|date:"F j, Y" %}
|
|
Sales KPIs ({{ start_date }} - {{ end_date }})
|
|
{% endblocktrans %}
|
|
</h3>
|
|
<div class="row g-4 mb-5">
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Total Cars Sold" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">{{ total_cars_sold }}</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Total Revenue from Cars" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">
|
|
{{ total_revenue_from_cars|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Net Profit from Cars" %}</p>
|
|
<h4 class="fw-bolder text-success mb-3">
|
|
{{ net_profit_from_cars|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Total Discount on Cars" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">
|
|
{{ total_discount_on_cars|floatformat:2 }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Total Cost of Cars Sold" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">
|
|
{{ total_cost_of_cars_sold|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Total VAT from Cars" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">
|
|
{{ total_vat_collected_from_cars|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<h4 class="fw-bold my-4">{% trans "Sales of New Cars" %}</h4>
|
|
<div class="row g-4 mb-5">
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "New Cars Sold" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">{{ total_new_cars_sold }}</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "New Cars Revenue" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">
|
|
{{ total_revenue_from_new_cars|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "New Cars Net Profit" %}</p>
|
|
<h4 class="fw-bolder text-success mb-3">
|
|
{{ net_profit_from_new_cars|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "New Cars VAT" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">
|
|
{{ total_vat_collected_from_new_cars|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "New Cars Cost" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">
|
|
{{ total_cost_of_new_cars_sold|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<h4 class="fw-bold my-4">{% trans "Sales of Used Cars" %}</h4>
|
|
<div class="row g-4 mb-5">
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Used Cars Sold" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">{{ total_used_cars_sold }}</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Used Cars Revenue" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">
|
|
{{ total_revenue_from_used_cars|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Used Cars Net Profit" %}</p>
|
|
<h4 class="fw-bolder text-success mb-3">
|
|
{{ net_profit_from_used_cars|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Used Cars VAT" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">
|
|
{{ total_vat_collected_from_used_cars|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Used Cars Cost" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">
|
|
{{ total_cost_of_used_cars_sold|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
{% if request.is_dealer or request.is_manager or request.is_inventory %}
|
|
<h3 class="fw-bold mb-3">{% trans "Inventory KPIs" %}</h3>
|
|
<div class="row g-4 mb-5">
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Total Cars in Inventory" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">{{ total_cars_in_inventory }}</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Total Inventory Value" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">
|
|
{{ total_inventory_value|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "New Cars in Inventory" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">{{ total_new_cars_in_inventory }}</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Used Cars in Inventory" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">{{ total_used_cars_in_inventory }}</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "New Cars Inventory Value" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">
|
|
{{ new_car_value|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Used Cars Inventory Value" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">
|
|
{{ used_car_value|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-danger fw-bold small mb-1">
|
|
<a class="text-danger"
|
|
href="{% url 'aging_inventory_list' request.dealer.slug %}">{% trans "Aging Inventory (> 60 days)" %}</a>
|
|
</p>
|
|
<h4 class="fw-bolder text-danger mb-3">
|
|
<a class="text-danger"
|
|
href="{% url 'aging_inventory_list' request.dealer.slug %}">{{ aging_inventory_count }}</a>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
{% if request.is_dealer or request.is_manager or request.is_accountant %}
|
|
<h3 class="fw-bold mb-3">
|
|
{% blocktrans with start_date=start_date|date:"F j, Y" end_date=end_date|date:"F j, Y" %}
|
|
Financial Health KPIs ({{ start_date }} - {{ end_date }})
|
|
{% endblocktrans %}
|
|
</h3>
|
|
<div class="row g-4 mb-5">
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Total Revenue from Services" %}</p>
|
|
<h4 class="fw-bolder text-info mb-3">
|
|
{{ total_revenue_from_services|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Total VAT from Services" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">
|
|
{{ total_vat_collected_from_services|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Total Revenue Generated" %}</p>
|
|
<h4 class="fw-bolder text-success mb-3">
|
|
{{ total_revenue_generated|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Total VAT Collected" %}</p>
|
|
<h4 class="fw-bolder text-primary mb-3">
|
|
{{ total_vat_collected|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Total Expenses" %}</p>
|
|
<h4 class="fw-bolder text-danger mb-3">
|
|
{{ total_expenses|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-md-4 col-lg-3">
|
|
<div class="card h-100 shadow-sm border-0">
|
|
<div class="card-body p-4">
|
|
<p class="text-uppercase text-muted fw-bold small mb-1">{% trans "Gross Profit" %}</p>
|
|
|
|
{% if gross_profit|is_negative %}
|
|
<h4 class="fw-bolder text-danger mb-3">
|
|
{{ gross_profit|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
{% else %}
|
|
<h4 class="fw-bolder text-success mb-3">
|
|
{{ gross_profit|floatformat:'2g' }}<span class="icon-saudi_riyal"></span>
|
|
</h4>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|