{% from "_search_box.html" import card_search %} {# The edit panel for one inventory row. Served as a fragment into the drawer. #}
{{ r.name }}
{{ r.game }}{% if r.set_name %} · {{ r.set_name }}{% endif %}{% if r.number %} · #{{ r.number }}{% endif %}
{% if r.scan_id %}
your scanscan
{% else %}
no scan
{% endif %}
catalogue referencecatalogue
{# Deleting the row used to be the only remedy for a wrong match, and it takes the scan with it. Re-pointing keeps the photograph — which is the evidence of what was actually in the box. #}
Condition
{% for c in conditions %} {% endfor %}
Finish
{# Marked, not disabled. The catalogue not pricing a finish is not the same as the card not existing in it — promos and misprints are real and the seller is holding one — so the chip stays clickable and says what picking it will cost you. #} {% for f in finishes %} {% set unpriced = r.printings and f not in r.finishes_priced %} {% endfor %}
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 %} {% 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 %}
  {% if r.sold %} {% else %} {% 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.