{% extends 'base.html' %} {% block title %}Dashboard{% endblock %} {% block content %}
{% for fs in factory_summary %}
{{ fs.factory_name }} {{ fs.factory_code }}
{{ fs.open_count }}
Open
{{ fs.overdue_count }}
Overdue
{{ fs.total }}
Total
{% set pct = (fs.delivered / fs.total_qty * 100) if fs.total_qty > 0 else 0 %}
Del: {{ "{:,.3f}".format(fs.delivered) }} Bal: {{ "{:,.3f}".format(fs.balance) }}
{% else %}
No contracts yet. Create one →
{% endfor %}
Overdue Contracts {{ overdue|length }}
{% for c in overdue %} {% else %} {% endfor %}
Contract NoFac.Customer DueBalance (kg)
{{ c.contract_no }} {{ c.factory_code }} {{ c.customer_name }} {{ c.delivery_due }} {{ "{:,.0f}".format(c.balance) }}
No overdue contracts
Due Within 30 Days {{ upcoming|length }}
{% for c in upcoming %} {% else %} {% endfor %}
Contract NoFac.Customer DueBalance (kg)
{{ c.contract_no }} {{ c.factory_code }} {{ c.customer_name }} {{ c.delivery_due }} {{ "{:,.0f}".format(c.balance) }}
No contracts due soon
Factory-wise Pending Summary All open contracts
{% set gd = namespace(val=0) %} {% set gv = namespace(val=0) %} {% set gb = namespace(val=0) %} {% for fs in factory_summary %} {% set gd.val = gd.val + fs.total_qty %} {% set gv.val = gv.val + fs.delivered %} {% set gb.val = gb.val + [fs.balance,0]|max %} {% set pct = (fs.delivered / fs.total_qty * 100)|round(1) if fs.total_qty > 0 else 0 %} {% endfor %} {% if factory_summary %} {% endif %}
Factory Open Overdue Declared (kg) Delivered (kg) Balance (kg) Progress
{{ fs.factory_code }} {{ fs.factory_name }}
{{ fs.open_count }} {{ fs.overdue_count }} {{ "{:,.0f}".format(fs.total_qty) }} {{ "{:,.3f}".format(fs.delivered) }} {{ "{:,.3f}".format([fs.balance,0]|max) }}
{{ pct }}%
Grand Total {{ "{:,.0f}".format(gd.val) }} {{ "{:,.3f}".format(gv.val) }} {{ "{:,.3f}".format(gb.val) }}
Recent Contracts View All
{% for c in recent %} {% else %} {% endfor %}
Contract NoFac.CustomerMaterials PriceDeclaredDue DateStatus
{{ c.contract_no }} {{ c.factory_code }} {{ c.customer_name }} {{ c.material_names }} {{ "{:,.2f}".format(c.price) if c.price else '–' }} {{ "{:,.0f}".format(c.qty) }} {{ c.delivery_due }} {{ c.status|capitalize }}
No contracts yet
Monthly Deliveries – Last 6 Months by factory (kg)
{% endblock %} {% block scripts %} {% endblock %}