Printing
{% if r.printings %}
{# `on` below marks where the price came from, which is not the same as the
seller having chosen it. Only a declared printing may be posted back as
one — see wireCard() in card.html. #}
{% for pr in r.printings %}
{{ pr.sub_type }}
{{ pr.market|money if pr.market is not none else '—' }}
{% endfor %}
{# The unmatched finish comes first because the "dearest match" wording
below is false in that case: nothing matched, and the price shown is the
other finish's. #}
{% if r.finish_unpriced %}
No {{ r.finish_label|lower }} printing is catalogued for this card, so it is
priced as “{{ r.sub_type }}”.{% if not r.printing_declared %} Pick the printing you hold if that is wrong.{% endif %}
{% elif r.printing_guessed %}
Not chosen, so it is priced as the dearest printing that matches “{{ r.finish_label }}”.
Pick the one you hold.
{% elif r.printing_declared %}
Chosen by you. Pricing uses this printing exactly.
{% endif %}
{% else %}
No printing prices for this card yet. Run foilstack sync-prices.
{% endif %}
SKU {{ r.sku }}
Market {{ r.market|money if r.market is not none else '—' }}
Suggested list {{ r.list_price|money if r.list_price is not none else '—' }}
Listed on {{ r.listed_label }}
{% if r.sold %}Sold{% if r.sold_at %} {{ r.sold_at.strftime('%b %d %Y') }}{% endif %}{% else %}Mark as sold{% endif %}
Sold rows leave your stock and stop being exported, but stay in the
table, because they are what makes realised profit answerable. Deleting a card
you sold takes its cost basis with it.
Delete is for a copy you never had. If the scan is right and the card it matched is wrong, use Not this card? above instead, which keeps the scan. Delete cannot be undone.