All articles

Inventory

Returns and Scraps

Tag items for return to a vendor or for scrap from any inventory list. Returns auto-batch into per-vendor receipts. Scrap flows differently now — jewelry / watches create one metal lot per item on /metals (with full FL Ch.538 compliance for customer-source buys); stones are simply retired from inventory.

The flow at a glance

Returns and scraps both start the same way: from any of the five inventory lists (jewelry, watches, diamonds, colored stones, pearls), select one or more items and pick the action from the Actions ▾ menu in the bulk action bar. Tagged items auto-batch by vendor (returns) or into the single open scrap batch, and you can keep adding to those batches over days or weeks before shipping/finalizing.

The action lives on the item, not on a “make a return” page. There’s no separate wizard.

Tagging items for return to a vendor

  1. From any inventory list, check the rows you want to return.
  2. The bulk action bar at the top fills with Actions ▾ — open it and choose Return to vendor.
  3. The confirm modal previews the breakdown:
    • Single vendor → one return receipt.
    • Multiple vendors → multiple receipts (one per vendor) — clearly called out so you can back out if it wasn’t what you intended.
    • Memo-from-vendor items split off into their own memo-return doc.
  4. Optionally fill in a Reason, Vendor RMA #, and Notes — these get filled into the receipt header if it’s empty.
  5. Tag for return creates the open receipt(s) and flags each item with the amber Pending return badge in the inventory list.

Items show as Pending return until the receipt is shipped (printed/finalized). At that point the badge flips to the blue Returned state.

Tagging items for scrap

Same flow, different action: Actions ▾ → Scrap. Reason picker (Damaged / Broken / Melt for gold / Defective / Other) and notes are optional — both are folded into the new metal lot’s notes column.

What happens behind the scenes depends on the item type:

  • Jewelry / Watches → one new metal lot per item on the Metals page (Source = inventory). Weight comes from GoldWeight + OMetalWeight (jewelry) or 0 (watches — amend on the lot page if accurate refinery yield matters). Description is built from GoldPurity GoldColor → OtherMetal → Description. Cost basis is the item’s purchase price. The source item flips to Scrapped=1, QOH=0 in the same transaction.
  • Stones → simply retired from inventory (Returned=1, counters zeroed). No metal lot — stones aren’t refined to metal.

The confirm modal shows a mixed-outcome preview (“3 jewelry/watch → metal lots, 2 stones retired”) so you always know what’s about to happen.

Stones currently set in jewelry are blocked — you’d scrap the parent jewelry instead, which is a separate stone-recovery flow.

What gets blocked

The preflight check skips items that can’t be acted on, with a reason. Common cases:

  • Already returned / scrapped — the item is already on a different open receipt or batch.
  • On memo to a customer — recall the memo first.
  • On hold — release the hold first.
  • Stone set in jewelry — unlink the stone from the setting first (stones only).
  • No vendor on file — needed for auto-routing the return; not required for scrap.

The preflight is a “dry run” — no writes happen until you click Tag for return / Tag for scrap.

Reviewing pending vs shipped

The Vendor Returns page (/returns) opens on the Pending shipment tab, which lists every receipt that’s been tagged but not yet shipped. The other tabs are Shipped, Voided, and All. Each shows a count.

Scrapped jewelry / watches live on the Metals page as on-hand lots — sale-eligible immediately for inventory scrap, on a 15-day hold for customer-source scrap (FL Ch.538). Older scrap batches from before the metals module shipped are still viewable under Vendor Returns for historical lookup.

Cancelling a pending return

If you tagged something by mistake and the receipt is still open (not shipped), you can:

  • Open the receipt and remove individual lines (the per-line Cancel action restores the item to inventory).
  • Or void the whole receipt if nothing on it should ship.

Once a receipt is Shipped, normal cancel is locked. Reversing a shipped return needs a separate “re-receive” flow that we’ll build when there’s a real case for it.