{# ══════ LOGO + SHOP NAME ══════ #}
{% if invoice.shop.logo_url %}
{% endif %}
{{ invoice.shop.name }}
{% if invoice.shop.address %}{{ invoice.shop.address }}{% endif %}
{% if invoice.shop.phone_1 %} • {{ invoice.shop.phone_1 }}{% endif %}
{% if invoice.shop.phone_2 %} • {{ invoice.shop.phone_2 }}{% endif %}
{# ══════ INVOICE / CUSTOMER META ══════ #}
| Name |
Qty |
Unit |
Price |
Total |
{% for group in grouped_items %}
{# ── SPEC-A GROUP HEADING ── #}
{% if has_multiple_groups and group.spec_a_name %}
| ▶ {{ group.spec_a_name }} |
{% endif %}
{# ── ITEMS IN THIS GROUP ── #}
{% for it in group.items %}
| {{ it.name }} |
{{ it.raw_qty|floatformat:1 }} |
{{ it.sale_units }} |
{{ it.price|floatformat:0 }} |
{{ it.total|floatformat:0 }} |
{% endfor %}
{# ── GROUP SUBTOTAL (only when multiple groups exist) ── #}
{% if has_multiple_groups and group.spec_a_name %}
{% endif %}
{% endfor %}
{# ══════ QTY + WEIGHT SUMMARY ══════ #}
Items: {{ invoice.summary.no_of_items }} |
Units: {{ invoice.summary.total_units|floatformat:0 }}
{% if invoice.summary.total_weight %}
| Wt: {{ invoice.summary.total_weight }} Kg
{% endif %}
{# ══════ TOTALS ══════ #}
| Sub Total |
{{ invoice.summary.subtotal|floatformat:2 }} |
{% if invoice.summary.previous and invoice.summary.previous != 0 %}
| Previous |
{{ invoice.summary.previous|floatformat:2 }} |
{% endif %}
{% if invoice.summary.discount and invoice.summary.discount != 0 %}
| Discount |
{{ invoice.summary.discount|floatformat:2 }} |
{% endif %}
{% if invoice.summary.transport and invoice.summary.transport != 0 %}
| Transport |
{{ invoice.summary.transport|floatformat:2 }} |
{% endif %}
{% if invoice.summary.other and invoice.summary.other != 0 %}
| {{ invoice.summary.other_label|default:"Other" }} |
{{ invoice.summary.other|floatformat:2 }} |
{% endif %}
{% if invoice.summary.tax and invoice.summary.tax != 0 %}
| Tax |
{{ invoice.summary.tax|floatformat:2 }}% |
{% endif %}
| Grand Total |
{{ invoice.summary.total|floatformat:2 }} |
{% if invoice.summary.paid is not None %}
| Paid |
{{ invoice.summary.paid|floatformat:2 }} |
{% endif %}
{% if invoice.summary.change is not None %}
| Change / Remaining |
{{ invoice.summary.change|floatformat:2 }} |
{% endif %}
{# ══════ PAYMENT BREAKDOWN ══════ #}
{% if invoice.summary.payment_modes and not invoice.summary.is_estimate %}
Payment Details
{% for mode in invoice.summary.payment_modes %}
| {{ mode.label }} |
{{ mode.amount|floatformat:2 }} |
{% endfor %}
{% endif %}
{# ══════ TOTAL WEIGHT (prominent box) ══════ #}
{% if invoice.summary.total_weight %}
Total Weight: {{ invoice.summary.total_weight }} Kg
{% endif %}
{# ══════ FOOTER ══════ #}
{# ══ SCAN STRIP: Barcode LEFT | QR RIGHT ══ #}