{% extends "base.html" %} {% block title %}{{ line.name }} · foilstack{% endblock %} {% block status %}{{ line.quantity }} × {{ line.name }}{% if line.sold_quantity %} · {{ line.sold_quantity }} sold{% endif %}{% endblock %} {% block screen %}
← Inventory

{{ line.name }}

{{ line.game }}{% if line.set_name %} · {{ line.set_name }}{% endif %}{% if line.number %} · #{{ line.number }}{% endif %}
{{ line.quantity }} in inventory across {{ batches|length }} import{{ '' if batches|length == 1 else 's' }}
{{ line.name }} catalogue
Quantity{{ line.quantity }}
In stock{{ line.stock_quantity }}
{% if line.sold_quantity %}
Sold{{ line.sold_quantity }}
{% endif %}
Condition{{ line.conditions }}
Printing{{ line.printing_label }}
Market each{{ line.market|money if line.market is not none else '—' }}
Cost each (avg){{ line.cost|money if line.cost is not none else '—' }}
Listed on{{ line.listed_label }}
{% for ch in charts %}
Market price {% if charts|length > 1 %}{{ ch.sub_type }}{% endif %}
{% if ch.spark.points %} {% if ch.spark.points > 1 %} {% endif %}
{{ ch.summary.latest|money }}
{% for label, key in [('7d', 'd7'), ('30d', 'd30')] %} {% set d = ch.summary[key] %} {{ label }} {% if d %}{{ '+' if d.abs > 0 }}{{ d.pct }}%{% else %}—{% endif %} {% endfor %}
{% if ch.summary.points == 1 %}

One reading, taken {{ ch.summary.last_on.strftime('%d %b') }}. Prices are recorded daily from here; the shape appears as they move.

{% else %}

{{ ch.summary.points }} changes since {{ ch.summary.first_on.strftime('%d %b') }} · low {{ ch.summary.low|money }} · high {{ ch.summary.high|money }}

{% endif %} {% else %}

Nothing recorded for this printing yet — the prices service writes a reading on its next run.

{% endif %}
{% else %}
Market price

No price history for this card. Run foilstack sync-prices, or wait for the scheduled sync.

{% endfor %} {% if line.guessed %}

{{ line.guessed }} of {{ line.quantity }} cop{{ 'y has' if line.guessed == 1 else 'ies have' }} no printing chosen, so {{ 'it is' if line.guessed == 1 else 'they are' }} priced as the dearest printing matching the finish. Open a copy and pick the one you hold.

{% endif %} {% if line.costed < line.quantity %}

{{ line.quantity - line.costed }} of {{ line.quantity }} copies have no cost recorded, so the average above covers only part of the line.

{% endif %} {% if line.mixed %}

These copies are not all the same condition or finish. A marketplace export splits them into separate listings, because condition sets the price — this screen keeps them together because you own one card.

{% endif %}
{% for b in batches %}
{{ b.filename }} {% if b.created_at %}{{ b.created_at.strftime('%b %d %Y, %H:%M') }}{% endif %}
{{ b.copies|length }} card{{ '' if b.copies|length == 1 else 's' }}
{% for c in b.copies %} {% endfor %}
SCAN FILE CND FINISH COST STATUS
{% if c.scan_id %} {% else %} {% endif %} {{ c.scan_filename or '—' }} {% if c.auto_accepted %}auto{% endif %} {{ c.condition }} {{ c.sub_type or c.finish_label }} {% if c.printing_guessed %}guessed{% endif %} {{ c.cost|money if c.cost is not none else '—' }} {% if c.sold %} sold {{ c.sold_price|money if c.sold_price is not none else '' }} {% else %} in stock {% endif %}
{% endfor %}
{% endblock %} {% block scripts %} {% endblock %}