{% extends "base.html" %} {% block content %}

Coin Collection

Sales grouped per vendo, and a record of each time you empty a coin box.

{% if flash_msg %}
{{ flash_msg }}
{% endif %} {% if error_msg %}
{{ error_msg }}
{% endif %}
Uncollected
₱{{ totals.uncollected_coins }}
coins waiting in {{ totals.device_count }} box{{ '' if totals.device_count == 1 else 'es' }}
Collected all-time
₱{{ totals.lifetime_coins }}
coins through every vendo
Custom voucher sales
₱{{ totals.custom_pesos }}
you priced these — not in any coin box

Vendos

{% for d in devices %} {% else %} {% endfor %}
Vendo In the box now Sales Last emptied All-time Action
{{ d.label }} {% if d.vlan is not none %}
VLAN {{ d.vlan }}{% if d.centralized %} · shared vouchers{% endif %}
{% endif %}
₱{{ d.uncollected.coins }} {% if d.uncollected.custom_pesos %}
+ ₱{{ d.uncollected.custom_pesos }} custom vouchers
{% endif %}
{{ d.uncollected.sales }} {% if d.last_collection %} {{ d.last_collection.collected_at | localtime }} {% else %} never {% endif %} ₱{{ d.lifetime.coins }}
No vendos configured.

In the box now is the coins taken since you last emptied that vendo. Custom vouchers are listed separately because you set their price and collected it yourself — that money is not in the coin box. Printed voucher stock carries no price here at all; you record it however you sold the card.

Collection history

{% if history %}
{% for h in history %} {# A removed sub-vendo keeps its history, so fall back to the key. #} {% endfor %}
When Vendo Expected Counted Difference Note
{{ h.collected_at | localtime }}{{ (labels | default({})).get(h.device_key, h.device_key) }} ₱{{ h.expected_coins }} {% if h.counted_coins is none %} not counted {% else %}₱{{ h.counted_coins }}{% endif %} {% if h.variance is none %} {% elif h.variance == 0 %} exact {% else %} {{ '−' if h.variance < 0 else '+' }}₱{{ h.variance | abs }} {% endif %} {{ h.note }}

A difference shows only when you recorded a count. Short means less cash than the sales say — a coin jam, a miscount, or someone helping themselves. Over usually means a previous collection was counted low.

{% else %}

No collections recorded yet. Press Collect on a vendo after you empty its coin box — that starts its running total from zero again, without erasing any sales history.

{% endif %}
{# Collect modal — shared contract from base.html: backdrop + dialog + header/body #} {% endblock %}