{% extends "base.html" %} {% block title %}Inventory · foilstack{% endblock %} {% block status %}{{ totals.count }} in stock · {{ totals.market|money }} at market{% if totals.sold_rows %} · {{ totals.sold_rows }} sold, {{ totals.realised|money }} realised{% endif %}{% endblock %} {% block screen %}

Inventory

{% if rule != 'market' %}{% endif %}
In stock {{ counts.stock }} Sold {{ counts.sold }} All {{ counts.all }} {% if counts.printing %} Needs printing {{ counts.printing }} {% endif %}
{{ rows|length }} lines
{% for spec in exporters %} {% endfor %}
{% for r in rows %} {% endfor %}
CARD GAME / SET QTY CONDITION PRINTING COST MARKET MARGIN LISTED
{# One hidden input per copy, so the server contract stays "a list of inventory ids" no matter how the UI groups them. #} {% for i in r.ids %}{% endfor %} {# The catalogue image, not a scan: with several copies behind this line, picking one of their scans to represent it is arbitrary. #} {{ r.name }} {% if r.sold %}sold {% elif r.sold_quantity %}{{ r.sold_quantity }} sold{% endif %} {{ r.game }}{% if r.set_name %} / {{ r.set_name }}{% endif %} {{ r.quantity }} {{ r.conditions }} {{ r.printing_label }} {% if r.guessed %}?{% endif %} {{ r.cost|money if r.cost is not none else '—' }} {{ r.market|money if r.market is not none else '—' }} {{ r.margin_pct ~ '%' if r.margin_pct is not none else '—' }} {{ r.listed_label }}
{% if not rows %}
{% if show == 'printing' %}every card is priced on a printing you chose {% elif q %}nothing matches “{{ q }}” {% else %}nothing confirmed yet — import an archive to get started{% endif %}
{% endif %}
{% endblock %} {% block scripts %} {% endblock %}